]> granicus.if.org Git - transmission/commitdiff
(gtk) #1306: clicking in a blank area in a list clears the selection.
authorCharles Kerr <charles@transmissionbt.com>
Sat, 27 Sep 2008 18:01:31 +0000 (18:01 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Sat, 27 Sep 2008 18:01:31 +0000 (18:01 +0000)
gtk/details.c
gtk/file-list.c
gtk/msgwin.c
gtk/tr-prefs.c
gtk/tr-window.c
gtk/tracker-list.c
gtk/util.c
gtk/util.h

index 83314903a57d04b23d9b06fbf158683b472c0580..627a7a1e363a0f76d32512d120e191351998fb29 100644 (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 )
     {
index 7874a7670a63967c62e5877d652bbb62ab95137c..08cfe6865d4939e52e8bd284adc99bffec57eb87 100644 (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 ) );
index 9a2fa18a5a9dfdffba5eedf50754f76c88b3503f..7bdd065201d63c7a272e29730084dc7033e03961 100644 (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 );
index 4ac618f8d17473be95b7eb642367084020fcf227..c1171f8023e03eb4e3957873cc883d63de824ee6 100644 (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 );
index 824cec9f983229da2fdd20bf77692518e5e422c7..dd03b539a1b1339cbdc59fb0d23cf3760a5548c5 100644 (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 );
 
index 063af66189b59a94d48124b255f1a0186828d7a8..8879ec8c7ca0d9ff0bf837b6530bbd0a135bffa8 100644 (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( );
index 6aa26baa1b18ecbf6d88fd18cadae0ec1958e5c4..eab3fd8263c9963bac67085a76dc0a5b78167493 100644 (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 )
 {
index 92274e828620773fb88cb9596e0d80c3a36372df..719aaa7acc7073f886e6deb274af375506cfec5d 100644 (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 );