[Goodies-commits] r7206 - in xfmpc: branches/xfmpc-0.1.x branches/xfmpc-0.1.x/src trunk trunk/src

Mike Massonnet mmassonnet at xfce.org
Wed Apr 15 11:31:28 CEST 2009


Author: mmassonnet
Date: 2009-04-15 09:31:27 +0000 (Wed, 15 Apr 2009)
New Revision: 7206

Modified:
   xfmpc/branches/xfmpc-0.1.x/ChangeLog
   xfmpc/branches/xfmpc-0.1.x/src/dbbrowser.c
   xfmpc/branches/xfmpc-0.1.x/src/playlist.c
   xfmpc/trunk/ChangeLog
   xfmpc/trunk/src/dbbrowser.c
   xfmpc/trunk/src/playlist.c
Log:
Be more careful with context menus

Modified: xfmpc/branches/xfmpc-0.1.x/ChangeLog
===================================================================
--- xfmpc/branches/xfmpc-0.1.x/ChangeLog	2009-04-15 07:41:39 UTC (rev 7205)
+++ xfmpc/branches/xfmpc-0.1.x/ChangeLog	2009-04-15 09:31:27 UTC (rev 7206)
@@ -1,5 +1,16 @@
 2009-03-29	Mike Massonnet <mmassonnet at xfce.org>
 
+Be more careful with context menus
+	* src/playlist.c, src/dbbrowse.c:
+	  - Don't show the context menu when no row is selected
+	  - React on button release instead of press this way it lets you do
+	  rubber banding selections
+	* src/playlist.c:
+	  - Set the items browse and information unsensitive if more than one
+	  row is selected
+
+2009-03-29	Mike Massonnet <mmassonnet at xfce.org>
+
 Fix segfault when "browsing" no song
 	* src/playlist.c(cb_browse_selection):
 	  - Return if list is null

Modified: xfmpc/branches/xfmpc-0.1.x/src/dbbrowser.c
===================================================================
--- xfmpc/branches/xfmpc-0.1.x/src/dbbrowser.c	2009-04-15 07:41:39 UTC (rev 7205)
+++ xfmpc/branches/xfmpc-0.1.x/src/dbbrowser.c	2009-04-15 09:31:27 UTC (rev 7206)
@@ -45,7 +45,7 @@
                                                                 GtkTreeViewColumn *column);
 static gboolean         cb_key_pressed                         (XfmpcDbbrowser *dbbrowser,
                                                                 GdkEventKey *event);
-static gboolean         cb_button_pressed                      (XfmpcDbbrowser *dbbrowser,
+static gboolean         cb_button_released                     (XfmpcDbbrowser *dbbrowser,
                                                                 GdkEventButton *event);
 static gboolean         cb_popup_menu                          (XfmpcDbbrowser *dbbrowser);
 static void             popup_menu                             (XfmpcDbbrowser *dbbrowser);
@@ -256,8 +256,8 @@
                             G_CALLBACK (cb_row_activated), dbbrowser);
   g_signal_connect_swapped (priv->treeview, "key-press-event",
                             G_CALLBACK (cb_key_pressed), dbbrowser);
-  g_signal_connect_swapped (priv->treeview, "button-press-event",
-                            G_CALLBACK (cb_button_pressed), dbbrowser);
+  g_signal_connect_swapped (priv->treeview, "button-release-event",
+                            G_CALLBACK (cb_button_released), dbbrowser);
   g_signal_connect_swapped (priv->treeview, "popup-menu",
                             G_CALLBACK (cb_popup_menu), dbbrowser);
   /* Search entry */
@@ -588,17 +588,20 @@
 }
 
 static gboolean
-cb_button_pressed (XfmpcDbbrowser *dbbrowser,
-                   GdkEventButton *event)
+cb_button_released (XfmpcDbbrowser *dbbrowser,
+                    GdkEventButton *event)
 {
   XfmpcDbbrowserPrivate    *priv = XFMPC_DBBROWSER (dbbrowser)->priv;
   GtkTreeSelection         *selection;
   GtkTreePath              *path;
   
-  if (event->type != GDK_BUTTON_PRESS || event->button != 3)
+  if (event->type != GDK_BUTTON_RELEASE || event->button != 3)
     return FALSE;
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
+  if (gtk_tree_selection_count_selected_rows (selection) < 1)
+    return TRUE;
+
   if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (priv->treeview),
                                      event->x, event->y,
                                      &path, NULL, NULL, NULL))
@@ -612,7 +615,6 @@
     }
 
   popup_menu (dbbrowser);
-
   return TRUE;
 }
 

Modified: xfmpc/branches/xfmpc-0.1.x/src/playlist.c
===================================================================
--- xfmpc/branches/xfmpc-0.1.x/src/playlist.c	2009-04-15 07:41:39 UTC (rev 7205)
+++ xfmpc/branches/xfmpc-0.1.x/src/playlist.c	2009-04-15 09:31:27 UTC (rev 7206)
@@ -51,7 +51,7 @@
                                                                  GtkTreeViewColumn *column);
 static gboolean         cb_key_released                         (XfmpcPlaylist *playlist,
                                                                  GdkEventKey *event);
-static gboolean         cb_button_pressed                       (XfmpcPlaylist *playlist,
+static gboolean         cb_button_released                      (XfmpcPlaylist *playlist,
                                                                  GdkEventButton *event);
 static gboolean         cb_popup_menu                           (XfmpcPlaylist *playlist);
 static void             popup_menu                              (XfmpcPlaylist *playlist);
@@ -104,6 +104,8 @@
   GtkListStore             *store;
   GtkWidget                *filter_entry;
   GtkWidget                *menu;
+  GtkWidget                *mi_browse;
+  GtkWidget                *mi_information;
 
   gint                      current;
   gboolean                  autocenter;
@@ -247,14 +249,14 @@
   g_signal_connect_swapped (mi, "activate",
                             G_CALLBACK (xfmpc_playlist_delete_selection), playlist);
 
-  mi = gtk_image_menu_item_new_with_mnemonic (_("_Browse"));
+  mi = priv->mi_browse = gtk_image_menu_item_new_with_mnemonic (_("_Browse"));
   gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), mi);
   g_signal_connect_swapped (mi, "activate",
                             G_CALLBACK (cb_browse_selection), playlist);
   GtkWidget *image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
 
-  mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_INFO, NULL);
+  mi = priv->mi_information = gtk_image_menu_item_new_from_stock (GTK_STOCK_INFO, NULL);
   gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), mi);
   g_signal_connect_swapped (mi, "activate",
                             G_CALLBACK (cb_info_selection), playlist);
@@ -279,8 +281,8 @@
                             G_CALLBACK (cb_row_activated), playlist);
   g_signal_connect_swapped (priv->treeview, "key-release-event",
                             G_CALLBACK (cb_key_released), playlist);
-  g_signal_connect_swapped (priv->treeview, "button-press-event",
-                            G_CALLBACK (cb_button_pressed), playlist);
+  g_signal_connect_swapped (priv->treeview, "button-release-event",
+                            G_CALLBACK (cb_button_released), playlist);
   g_signal_connect_swapped (priv->treeview, "popup-menu",
                             G_CALLBACK (cb_popup_menu), playlist);
   /* Filter entry */
@@ -493,17 +495,25 @@
 }
 
 static gboolean
-cb_button_pressed (XfmpcPlaylist *playlist,
-                   GdkEventButton *event)
+cb_button_released (XfmpcPlaylist *playlist,
+                    GdkEventButton *event)
 {
   XfmpcPlaylistPrivate *priv = XFMPC_PLAYLIST (playlist)->priv;
   GtkTreeSelection     *selection;
   GtkTreePath          *path;
+  gboolean              sensitive;
   
-  if (event->type != GDK_BUTTON_PRESS || event->button != 3)
+  if (event->type != GDK_BUTTON_RELEASE || event->button != 3)
     return FALSE;
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
+  if (gtk_tree_selection_count_selected_rows (selection) < 1)
+    return TRUE;
+
+  sensitive = gtk_tree_selection_count_selected_rows (selection) == 1;
+  gtk_widget_set_sensitive (priv->mi_browse, sensitive);
+  gtk_widget_set_sensitive (priv->mi_information, sensitive);
+
   if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (priv->treeview),
                                      event->x, event->y,
                                      &path, NULL, NULL, NULL))
@@ -517,7 +527,6 @@
     }
 
   popup_menu (playlist);
-
   return TRUE;
 }
 

Modified: xfmpc/trunk/ChangeLog
===================================================================
--- xfmpc/trunk/ChangeLog	2009-04-15 07:41:39 UTC (rev 7205)
+++ xfmpc/trunk/ChangeLog	2009-04-15 09:31:27 UTC (rev 7206)
@@ -1,5 +1,16 @@
 2009-03-29	Mike Massonnet <mmassonnet at xfce.org>
 
+Be more careful with context menus
+	* src/playlist.c, src/dbbrowse.c:
+	  - Don't show the context menu when no row is selected
+	  - React on button release instead of press this way it lets you do
+	  rubber banding selections
+	* src/playlist.c:
+	  - Set the items browse and information unsensitive if more than one
+	  row is selected
+
+2009-03-29	Mike Massonnet <mmassonnet at xfce.org>
+
 Fix segfault when "browsing" no song
 	* src/playlist.c(cb_browse_selection):
 	  - Return if list is null

Modified: xfmpc/trunk/src/dbbrowser.c
===================================================================
--- xfmpc/trunk/src/dbbrowser.c	2009-04-15 07:41:39 UTC (rev 7205)
+++ xfmpc/trunk/src/dbbrowser.c	2009-04-15 09:31:27 UTC (rev 7206)
@@ -45,7 +45,7 @@
                                                                 GtkTreeViewColumn *column);
 static gboolean         cb_key_pressed                         (XfmpcDbbrowser *dbbrowser,
                                                                 GdkEventKey *event);
-static gboolean         cb_button_pressed                      (XfmpcDbbrowser *dbbrowser,
+static gboolean         cb_button_released                     (XfmpcDbbrowser *dbbrowser,
                                                                 GdkEventButton *event);
 static gboolean         cb_popup_menu                          (XfmpcDbbrowser *dbbrowser);
 static void             popup_menu                             (XfmpcDbbrowser *dbbrowser);
@@ -256,8 +256,8 @@
                             G_CALLBACK (cb_row_activated), dbbrowser);
   g_signal_connect_swapped (priv->treeview, "key-press-event",
                             G_CALLBACK (cb_key_pressed), dbbrowser);
-  g_signal_connect_swapped (priv->treeview, "button-press-event",
-                            G_CALLBACK (cb_button_pressed), dbbrowser);
+  g_signal_connect_swapped (priv->treeview, "button-release-event",
+                            G_CALLBACK (cb_button_released), dbbrowser);
   g_signal_connect_swapped (priv->treeview, "popup-menu",
                             G_CALLBACK (cb_popup_menu), dbbrowser);
   /* Search entry */
@@ -588,17 +588,20 @@
 }
 
 static gboolean
-cb_button_pressed (XfmpcDbbrowser *dbbrowser,
-                   GdkEventButton *event)
+cb_button_released (XfmpcDbbrowser *dbbrowser,
+                    GdkEventButton *event)
 {
   XfmpcDbbrowserPrivate    *priv = XFMPC_DBBROWSER (dbbrowser)->priv;
   GtkTreeSelection         *selection;
   GtkTreePath              *path;
   
-  if (event->type != GDK_BUTTON_PRESS || event->button != 3)
+  if (event->type != GDK_BUTTON_RELEASE || event->button != 3)
     return FALSE;
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
+  if (gtk_tree_selection_count_selected_rows (selection) < 1)
+    return TRUE;
+
   if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (priv->treeview),
                                      event->x, event->y,
                                      &path, NULL, NULL, NULL))
@@ -612,7 +615,6 @@
     }
 
   popup_menu (dbbrowser);
-
   return TRUE;
 }
 

Modified: xfmpc/trunk/src/playlist.c
===================================================================
--- xfmpc/trunk/src/playlist.c	2009-04-15 07:41:39 UTC (rev 7205)
+++ xfmpc/trunk/src/playlist.c	2009-04-15 09:31:27 UTC (rev 7206)
@@ -51,7 +51,7 @@
                                                                  GtkTreeViewColumn *column);
 static gboolean         cb_key_released                         (XfmpcPlaylist *playlist,
                                                                  GdkEventKey *event);
-static gboolean         cb_button_pressed                       (XfmpcPlaylist *playlist,
+static gboolean         cb_button_released                      (XfmpcPlaylist *playlist,
                                                                  GdkEventButton *event);
 static gboolean         cb_popup_menu                           (XfmpcPlaylist *playlist);
 static void             popup_menu                              (XfmpcPlaylist *playlist);
@@ -104,6 +104,8 @@
   GtkListStore             *store;
   GtkWidget                *filter_entry;
   GtkWidget                *menu;
+  GtkWidget                *mi_browse;
+  GtkWidget                *mi_information;
 
   gint                      current;
   gboolean                  autocenter;
@@ -247,14 +249,14 @@
   g_signal_connect_swapped (mi, "activate",
                             G_CALLBACK (xfmpc_playlist_delete_selection), playlist);
 
-  mi = gtk_image_menu_item_new_with_mnemonic (_("_Browse"));
+  mi = priv->mi_browse = gtk_image_menu_item_new_with_mnemonic (_("_Browse"));
   gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), mi);
   g_signal_connect_swapped (mi, "activate",
                             G_CALLBACK (cb_browse_selection), playlist);
   GtkWidget *image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
 
-  mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_INFO, NULL);
+  mi = priv->mi_information = gtk_image_menu_item_new_from_stock (GTK_STOCK_INFO, NULL);
   gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), mi);
   g_signal_connect_swapped (mi, "activate",
                             G_CALLBACK (cb_info_selection), playlist);
@@ -279,8 +281,8 @@
                             G_CALLBACK (cb_row_activated), playlist);
   g_signal_connect_swapped (priv->treeview, "key-release-event",
                             G_CALLBACK (cb_key_released), playlist);
-  g_signal_connect_swapped (priv->treeview, "button-press-event",
-                            G_CALLBACK (cb_button_pressed), playlist);
+  g_signal_connect_swapped (priv->treeview, "button-release-event",
+                            G_CALLBACK (cb_button_released), playlist);
   g_signal_connect_swapped (priv->treeview, "popup-menu",
                             G_CALLBACK (cb_popup_menu), playlist);
   /* Filter entry */
@@ -493,17 +495,25 @@
 }
 
 static gboolean
-cb_button_pressed (XfmpcPlaylist *playlist,
-                   GdkEventButton *event)
+cb_button_released (XfmpcPlaylist *playlist,
+                    GdkEventButton *event)
 {
   XfmpcPlaylistPrivate *priv = XFMPC_PLAYLIST (playlist)->priv;
   GtkTreeSelection     *selection;
   GtkTreePath          *path;
+  gboolean              sensitive;
   
-  if (event->type != GDK_BUTTON_PRESS || event->button != 3)
+  if (event->type != GDK_BUTTON_RELEASE || event->button != 3)
     return FALSE;
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
+  if (gtk_tree_selection_count_selected_rows (selection) < 1)
+    return TRUE;
+
+  sensitive = gtk_tree_selection_count_selected_rows (selection) == 1;
+  gtk_widget_set_sensitive (priv->mi_browse, sensitive);
+  gtk_widget_set_sensitive (priv->mi_information, sensitive);
+
   if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (priv->treeview),
                                      event->x, event->y,
                                      &path, NULL, NULL, NULL))
@@ -517,7 +527,6 @@
     }
 
   popup_menu (playlist);
-
   return TRUE;
 }
 




More information about the Goodies-commits mailing list