(gtk) #1306: clicking in a blank area in a list clears the selection.

This commit is contained in:
Charles Kerr 2008-09-27 18:01:31 +00:00
parent 89b6c61326
commit 4bf3577fba
8 changed files with 44 additions and 0 deletions

View File

@ -700,6 +700,8 @@ peer_page_new( TrTorrent * gtor )
m = webseed_model_new( tr_torrent_handle( gtor ) );
webtree = gtk_tree_view_new_with_model( m );
g_signal_connect( webtree, "button-release-event",
G_CALLBACK( on_tree_view_button_released ), NULL );
gtk_tree_view_set_rules_hint( GTK_TREE_VIEW( webtree ), TRUE );
p->webseeds = GTK_LIST_STORE( m );
g_object_unref( G_OBJECT( m ) );
@ -745,6 +747,8 @@ peer_page_new( TrTorrent * gtor )
#endif
gtk_widget_set_size_request( v, 550, 0 );
g_object_unref ( G_OBJECT( m ) );
g_signal_connect( v, "button-release-event",
G_CALLBACK( on_tree_view_button_released ), NULL );
for( i = 0; i < G_N_ELEMENTS( view_columns ); ++i )
{

View File

@ -754,6 +754,9 @@ file_list_new( TrTorrent * gtor )
gtk_container_set_border_width( GTK_CONTAINER( view ), GUI_PAD_BIG );
g_signal_connect( view, "button-press-event",
G_CALLBACK( onViewButtonPressed ), data );
g_signal_connect( view, "button-release-event",
G_CALLBACK( on_tree_view_button_released ), NULL );
/* set up view */
sel = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) );

View File

@ -526,6 +526,8 @@ msgwin_new( TrCore * core )
view = gtk_tree_view_new_with_model( data->sort );
g_signal_connect( view, "button-release-event",
G_CALLBACK( on_tree_view_button_released ), NULL );
data->view = GTK_TREE_VIEW( view );
gtk_tree_view_set_rules_hint( data->view, TRUE );
appendColumn( data->view, COL_SEQUENCE );

View File

@ -853,6 +853,8 @@ webPage( GObject * core )
s = _( "Access control list:" );
page->store = GTK_LIST_STORE( m );
w = gtk_tree_view_new_with_model( m );
g_signal_connect( w, "button-release-event",
G_CALLBACK( on_tree_view_button_released ), NULL );
page->widgets = g_slist_append( page->widgets, w );
v = page->view = GTK_TREE_VIEW( w );

View File

@ -171,6 +171,8 @@ makeview( PrivateData * p,
g_signal_connect( view, "button-press-event",
G_CALLBACK( on_tree_view_button_pressed ),
(void *) on_popup_menu );
g_signal_connect( view, "button-release-event",
G_CALLBACK( on_tree_view_button_released ), NULL );
g_signal_connect( view, "row-activated",
G_CALLBACK( view_row_activated ), NULL );

View File

@ -301,6 +301,8 @@ tracker_list_new( TrTorrent * gtor )
m = tracker_model_new( tr_torrent_handle( gtor ) );
page->store = GTK_LIST_STORE( m );
w = gtk_tree_view_new_with_model( m );
g_signal_connect( w, "button-release-event",
G_CALLBACK( on_tree_view_button_released ), NULL );
page->view = GTK_TREE_VIEW( w );
gtk_tree_view_set_enable_search( page->view, FALSE );
r = gtk_cell_renderer_text_new( );

View File

@ -480,6 +480,28 @@ on_tree_view_button_pressed( GtkWidget * view,
return FALSE;
}
/* if the user clicked in an empty area of the list,
* clear all the selections. */
gboolean
on_tree_view_button_released( GtkWidget * view,
GdkEventButton * event,
gpointer unused UNUSED )
{
GtkTreeView * tv = GTK_TREE_VIEW( view );
if( !gtk_tree_view_get_path_at_pos ( tv,
(gint) event->x,
(gint) event->y,
NULL, NULL, NULL, NULL ) )
{
GtkTreeSelection * selection = gtk_tree_view_get_selection( tv );
gtk_tree_selection_unselect_all ( selection );
return TRUE;
}
return FALSE;
}
gpointer
tr_object_ref_sink( gpointer object )
{

View File

@ -119,6 +119,13 @@ gboolean on_tree_view_button_pressed( GtkWidget * view,
GdkEventButton * event,
gpointer unused );
/* if the click didn't specify a row, clear the selection */
gboolean on_tree_view_button_released( GtkWidget * view,
GdkEventButton * event,
gpointer unused );
gpointer tr_object_ref_sink( gpointer object );
void tr_file_trash_or_unlink( const char * filename );