[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