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 ) );
#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 )
{
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 = 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 );
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 );
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 );
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( );
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 )
{
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 );