[Xfce4-commits] <thunar:jannis/new-shortcuts-pane> Squashme: Start working on the context menu.
Jannis Pohlmann
noreply at xfce.org
Sun Nov 6 18:18:01 CET 2011
Updating branch refs/heads/jannis/new-shortcuts-pane
to 84de37c6c611bbe48bc7cded213b645bf7cd1c74 (commit)
from fbe09422f8193865eb415068a7706bc5484c5bee (commit)
commit 84de37c6c611bbe48bc7cded213b645bf7cd1c74
Author: Jannis Pohlmann <jannis at xfce.org>
Date: Sun Nov 6 18:16:18 2011 +0100
Squashme: Start working on the context menu.
thunar/thunar-shortcut.c | 4 +-
thunar/thunar-shortcuts-view.c | 533 +++++++++++++++++++---------------------
2 files changed, 256 insertions(+), 281 deletions(-)
diff --git a/thunar/thunar-shortcut.c b/thunar/thunar-shortcut.c
index a4702a3..be761a3 100644
--- a/thunar/thunar-shortcut.c
+++ b/thunar/thunar-shortcut.c
@@ -707,8 +707,8 @@ thunar_shortcut_button_press_event (GtkWidget *widget,
}
else if (event->button == 3)
{
- /* TODO start a context menu timeout */
- g_debug ("right button press");
+ /* emit the context menu signal */
+ g_signal_emit (widget, SIGNAL_CONTEXT_MENU, 0);
}
else if (event->button == 2)
{
diff --git a/thunar/thunar-shortcuts-view.c b/thunar/thunar-shortcuts-view.c
index 3990774..2888e2a 100644
--- a/thunar/thunar-shortcuts-view.c
+++ b/thunar/thunar-shortcuts-view.c
@@ -137,13 +137,9 @@ static void thunar_shortcuts_view_foreach_group (Thunar
static void thunar_shortcuts_view_open (ThunarShortcutsView *view,
ThunarFile *file,
gboolean new_window);
+static void thunar_shortcuts_view_shortcut_open (ThunarShortcutsView *view,
+ GtkMenuItem *item);
#if 0
-static void thunar_shortcuts_view_row_deleted (ThunarShortcutsView *view,
- GtkTreePath *path,
- GtkTreeModel *model);
-static gboolean thunar_shortcuts_view_row_context_menu (ThunarShortcutsView *view,
- GtkWidget *widget);
-static void thunar_shortcuts_view_row_open (ThunarShortcutsView *view);
static void thunar_shortcuts_view_row_open_new_window (ThunarShortcutsView *view);
static void thunar_shortcuts_view_row_disconnect (ThunarShortcutsView *view);
static void thunar_shortcuts_view_row_mount (ThunarShortcutsView *view);
@@ -156,6 +152,8 @@ static void thunar_shortcuts_view_find_selected_row (Thunar
ThunarShortcutRow *row,
gpointer user_data);
#endif
+static gboolean thunar_shortcuts_view_shortcut_context_menu (ThunarShortcutsView *view,
+ GtkWidget *widget);
static void thunar_shortcuts_view_update_selection (ThunarShortcutsView *view,
ThunarShortcutGroup *group,
gpointer user_data);
@@ -181,8 +179,7 @@ struct _ThunarShortcutsView
-static GQuark thunar_shortcuts_view_idle_quark;
-static GQuark thunar_shortcuts_view_counter_quark;
+static GQuark thunar_shortcuts_view_quark;
static guint view_signals[LAST_SIGNAL];
@@ -197,10 +194,7 @@ thunar_shortcuts_view_class_init (ThunarShortcutsViewClass *klass)
{
GObjectClass *gobject_class;
- thunar_shortcuts_view_idle_quark =
- g_quark_from_static_string ("thunar-shortcuts-view-idle");
- thunar_shortcuts_view_counter_quark =
- g_quark_from_static_string ("thunar-shortcuts-view-counter");
+ thunar_shortcuts_view_quark = g_quark_from_static_string ("thunar-shortcuts-view");
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->constructed = thunar_shortcuts_view_constructed;
@@ -369,277 +363,10 @@ thunar_shortcuts_view_set_property (GObject *object,
-#if 0
-static void
-thunar_shortcuts_view_row_deleted (ThunarShortcutsView *view,
- GtkTreePath *path,
- GtkTreeModel *model)
-{
- GtkWidget *expander;
- GtkWidget *box;
- GList *rows;
- GList *row_element;
- gint category_index;
- gint shortcut_index;
-
- _thunar_return_if_fail (THUNAR_SHORTCUTS_VIEW (view));
- _thunar_return_if_fail (GTK_IS_TREE_MODEL (model));
-
- /* get the category and shortcut index */
- category_index = gtk_tree_path_get_indices (path)[0];
- shortcut_index = gtk_tree_path_get_indices (path)[1];
-
- /* find the expander for the row widget */
- expander = thunar_shortcuts_view_get_expander_at (view, category_index);
-
- /* if this fails then we are out of sync with the model */
- g_assert (expander != NULL);
-
- /* get the box widget that holds the shortcut row */
- box = gtk_bin_get_child (GTK_BIN (expander));
-
- /* get a list of all shortcut rows */
- rows = gtk_container_get_children (GTK_CONTAINER (box));
-
- /* get the shortcut row we want to remove */
- row_element = g_list_nth (rows, shortcut_index);
-
- /* remove the shortcut row */
- gtk_container_remove (GTK_CONTAINER (box), row_element->data);
-
- /* free the row list */
- g_list_free (rows);
-}
-
-
-
-static gboolean
-thunar_shortcuts_view_row_context_menu (ThunarShortcutsView *view,
- GtkWidget *widget)
-{
- ThunarShortcutType shortcut_type;
- ThunarShortcutRow *row = THUNAR_SHORTCUT_ROW (widget);
- ThunarFile *file;
- GtkWidget *image;
- GtkWidget *item;
- GtkWidget *menu;
- GtkWidget *window;
- GVolume *volume;
- GMount *mount;
- GList *lp;
- GList *providers;
- GList *actions = NULL;
- GList *tmp;
-
- _thunar_return_val_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view), FALSE);
- _thunar_return_val_if_fail (THUNAR_IS_SHORTCUT_ROW (row), FALSE);
-
- /* prepare the popup menu */
- menu = gtk_menu_new ();
-
- /* append the "Open" menu action */
- item = gtk_image_menu_item_new_with_mnemonic (_("_Open"));
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (thunar_shortcuts_view_row_open), view);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- /* set the stock icon */
- image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_show (image);
-
- /* append the "Open in New Window" menu action */
- item = gtk_image_menu_item_new_with_mnemonic (_("Open in New Window"));
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (thunar_shortcuts_view_row_open_new_window),
- view);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- /* append a menu separator */
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- /* determine the type of the row */
- shortcut_type = thunar_shortcut_row_get_shortcut_type (row);
-
- /* check if we are dealing with a mount */
- if (shortcut_type == THUNAR_SHORTCUT_STANDALONE_MOUNT)
- {
- /* append the "Disconnect" item */
- item = gtk_image_menu_item_new_with_mnemonic (_("Disconn_ect"));
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (thunar_shortcuts_view_row_disconnect),
- view);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- /* append a menu separator */
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
- }
-
- /* check if we're dealing with a volume */
- if (shortcut_type == THUNAR_SHORTCUT_REGULAR_VOLUME
- || shortcut_type == THUNAR_SHORTCUT_EJECTABLE_VOLUME)
- {
- /* get the volume and mount from the shortcut row */
- volume = thunar_shortcut_row_get_volume (row);
- mount = g_volume_get_mount (volume);
-
- /* append the "Mount" item */
- item = gtk_image_menu_item_new_with_mnemonic (_("_Mount"));
- gtk_widget_set_sensitive (item, mount == NULL && g_volume_can_mount (volume));
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (thunar_shortcuts_view_row_mount),
- view);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- if (shortcut_type == THUNAR_SHORTCUT_REGULAR_VOLUME)
- {
- /* append the "Unmount" item */
- item = gtk_image_menu_item_new_with_mnemonic (_("_Unmount"));
- gtk_widget_set_sensitive (item, mount != NULL && g_mount_can_unmount (mount));
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (thunar_shortcuts_view_row_unmount),
- view);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
- }
-
- /* append the "Disconnect" (eject + safely remove drive) item */
- item = gtk_image_menu_item_new_with_mnemonic (_("Disconn_ect"));
- gtk_widget_set_sensitive (item,
- (mount != NULL && g_mount_can_eject (mount))
- || g_volume_can_eject (volume));
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (thunar_shortcuts_view_row_disconnect),
- view);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- if (mount != NULL)
- g_object_unref (mount);
- }
-
- /* get the ThunarFile from the row */
- file = thunar_shortcut_row_get_file (row);
-
- /* check if we're dealing with the trash */
- if (shortcut_type == THUNAR_SHORTCUT_REGULAR_FILE
- && file != NULL
- && thunar_file_is_trashed (file)
- && thunar_file_is_root (file))
- {
- /* append the "Empty Trash" menu action */
- item = gtk_image_menu_item_new_with_mnemonic (_("_Empty Trash"));
- gtk_widget_set_sensitive (item, (thunar_file_get_item_count (file) > 0));
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- /* append a menu separator */
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
- }
-
- /* create provider menu items if there is a non-trashed file */
- if (G_LIKELY (file != NULL && !thunar_file_is_trashed (file)))
- {
- /* load the menu providers from the provider factory */
- providers = thunarx_provider_factory_list_providers (view->provider_factory,
- THUNARX_TYPE_MENU_PROVIDER);
- if (G_LIKELY (providers != NULL))
- {
- /* determine the toplevel window we belong to */
- window = gtk_widget_get_toplevel (GTK_WIDGET (view));
-
- /* load the actions offered by the menu providers */
- for (lp = providers; lp != NULL; lp = lp->next)
- {
- tmp = thunarx_menu_provider_get_folder_actions (lp->data, window,
- THUNARX_FILE_INFO (file));
- actions = g_list_concat (actions, tmp);
- g_object_unref (G_OBJECT (lp->data));
- }
- g_list_free (providers);
-
- /* add the actions to the menu */
- for (lp = actions; lp != NULL; lp = lp->next)
- {
- item = gtk_action_create_menu_item (GTK_ACTION (lp->data));
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- /* release the reference on the action */
- g_object_unref (G_OBJECT (lp->data));
- }
- /* add a separator to the end of the menu */
- if (G_LIKELY (lp != actions))
- {
- /* append a menu separator */
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
- }
- /* cleanup */
- g_list_free (actions);
- }
- }
#if 0
- if (thunar_shortcut_row_get_mutable (row))
-#endif
- {
- /* append the remove menu item */
- item = gtk_image_menu_item_new_with_mnemonic (_("_Remove Shortcut"));
- gtk_widget_set_sensitive (item, FALSE);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
-
- /* set the remove stock icon */
- image = gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_show (image);
-
- /* append the rename menu item */
- item = gtk_image_menu_item_new_with_mnemonic (_("Re_name Shortcut"));
- gtk_widget_set_sensitive (item, FALSE);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show (item);
- }
-
- /* run the menu on the view's screen (taking over the floating
- * reference on the menu) */
- thunar_gtk_menu_run (GTK_MENU (menu), GTK_WIDGET (view), NULL, NULL,
- 0, gtk_get_current_event_time ());
-
- return TRUE;
-}
-
-
-
-static void
-thunar_shortcuts_view_row_open (ThunarShortcutsView *view)
-{
- ThunarShortcutRow *row;
-
- _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
-
- row = thunar_shortcuts_view_get_selected_row (view);
-
- if (row != NULL)
- thunar_shortcut_row_resolve_and_activate (row, FALSE);
-}
-
-
-
static void
thunar_shortcuts_view_row_open_new_window (ThunarShortcutsView *view)
{
@@ -1328,6 +1055,11 @@ thunar_shortcuts_view_add_shortcut (ThunarShortcutsView *view,
G_CALLBACK (thunar_shortcuts_view_shortcut_activated),
view);
+ /* implement the context menu */
+ g_signal_connect_swapped (shortcut, "context-menu",
+ G_CALLBACK (thunar_shortcuts_view_shortcut_context_menu),
+ view);
+
/* react on state changes */
g_signal_connect_swapped (shortcut, "state-changed",
G_CALLBACK (thunar_shortcuts_view_shortcut_state_changed),
@@ -1462,6 +1194,249 @@ thunar_shortcuts_view_open (ThunarShortcutsView *view,
static void
+thunar_shortcuts_view_shortcut_open (ThunarShortcutsView *view,
+ GtkMenuItem *item)
+{
+ ThunarShortcut *shortcut;
+
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
+
+ shortcut = g_object_get_qdata (G_OBJECT (item), thunar_shortcuts_view_quark);
+
+ if (shortcut != NULL)
+ thunar_shortcut_resolve_and_activate (shortcut, FALSE);
+}
+
+
+
+static gboolean
+thunar_shortcuts_view_shortcut_context_menu (ThunarShortcutsView *view,
+ GtkWidget *widget)
+{
+ ThunarShortcutType shortcut_type;
+ ThunarShortcut *shortcut = THUNAR_SHORTCUT (widget);
+ ThunarFile *file;
+ GtkWidget *image;
+ GtkWidget *item;
+ GtkWidget *menu;
+ GtkWidget *window;
+ GVolume *volume;
+ GMount *mount;
+ GList *lp;
+ GList *providers;
+ GList *actions = NULL;
+ GList *tmp;
+
+ _thunar_return_val_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view), FALSE);
+ _thunar_return_val_if_fail (THUNAR_IS_SHORTCUT (shortcut), FALSE);
+
+ /* prepare the popup menu */
+ menu = gtk_menu_new ();
+
+ /* append the "Open" menu action */
+ item = gtk_image_menu_item_new_with_mnemonic (_("_Open"));
+ g_object_set_qdata (G_OBJECT (item), thunar_shortcuts_view_quark, shortcut);
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (thunar_shortcuts_view_shortcut_open), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* set the stock icon */
+ image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_widget_show (image);
+
+ /* append the "Open in New Window" menu action */
+ item = gtk_image_menu_item_new_with_mnemonic (_("Open in New Window"));
+#if 0
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (thunar_shortcuts_view_shortcut_open_new_window),
+ view);
+#endif
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* determine the type of the shortcut */
+ shortcut_type = thunar_shortcut_get_shortcut_type (shortcut);
+
+ /* check if we are dealing with a mount */
+ if (shortcut_type == THUNAR_SHORTCUT_REGULAR_MOUNT
+ || shortcut_type == THUNAR_SHORTCUT_ARCHIVE_MOUNT
+ || shortcut_type == THUNAR_SHORTCUT_NETWORK_MOUNT)
+ {
+ /* append a menu separator */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* append the "Disconnect" item */
+ item = gtk_image_menu_item_new_with_mnemonic (_("Disconn_ect"));
+#if 0
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (thunar_shortcuts_view_shortcut_disconnect),
+ view);
+#endif
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+ }
+
+ /* check if we're dealing with a volume */
+ if (shortcut_type == THUNAR_SHORTCUT_REGULAR_VOLUME
+ || shortcut_type == THUNAR_SHORTCUT_EJECTABLE_VOLUME)
+ {
+ /* append a menu separator */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* get the volume and mount from the shortcut */
+ volume = thunar_shortcut_get_volume (shortcut);
+ mount = g_volume_get_mount (volume);
+
+ /* append the "Mount" item */
+ item = gtk_image_menu_item_new_with_mnemonic (_("_Mount"));
+ gtk_widget_set_sensitive (item, mount == NULL && g_volume_can_mount (volume));
+#if 0
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (thunar_shortcuts_view_shortcut_mount),
+ view);
+#endif
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ if (shortcut_type == THUNAR_SHORTCUT_REGULAR_VOLUME)
+ {
+ /* append the "Unmount" item */
+ item = gtk_image_menu_item_new_with_mnemonic (_("_Unmount"));
+ gtk_widget_set_sensitive (item, mount != NULL && g_mount_can_unmount (mount));
+#if 0
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (thunar_shortcuts_view_shortcut_unmount),
+ view);
+#endif
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+ }
+
+ /* append the "Disconnect" (eject + safely remove drive) item */
+ item = gtk_image_menu_item_new_with_mnemonic (_("Disconn_ect"));
+ gtk_widget_set_sensitive (item,
+ (mount != NULL && g_mount_can_eject (mount))
+ || g_volume_can_eject (volume));
+#if 0
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (thunar_shortcuts_view_shortcut_disconnect),
+ view);
+#endif
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ if (mount != NULL)
+ g_object_unref (mount);
+ }
+
+ /* get the ThunarFile from the shortcut */
+ file = thunar_shortcut_get_file (shortcut);
+
+ /* check if we're dealing with the trash */
+ if (shortcut_type == THUNAR_SHORTCUT_TRASH_FILE
+ && file != NULL
+ && thunar_file_is_root (file))
+ {
+ /* append a menu separator */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* append the "Empty Trash" menu action */
+ item = gtk_image_menu_item_new_with_mnemonic (_("_Empty Trash"));
+ gtk_widget_set_sensitive (item, (thunar_file_get_item_count (file) > 0));
+ /* TODO empty trash on activation */
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+ }
+
+ /* create provider menu items if there is a non-trashed file */
+ if (G_LIKELY (file != NULL && !thunar_file_is_trashed (file)))
+ {
+ /* load the menu providers from the provider factory */
+ providers = thunarx_provider_factory_list_providers (view->provider_factory,
+ THUNARX_TYPE_MENU_PROVIDER);
+ if (G_LIKELY (providers != NULL))
+ {
+ /* determine the toplevel window we belong to */
+ window = gtk_widget_get_toplevel (GTK_WIDGET (view));
+
+ /* load the actions offered by the menu providers */
+ for (lp = providers; lp != NULL; lp = lp->next)
+ {
+ tmp = thunarx_menu_provider_get_folder_actions (lp->data, window,
+ THUNARX_FILE_INFO (file));
+ actions = g_list_concat (actions, tmp);
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (providers);
+
+ if (actions != NULL)
+ {
+ /* append a menu separator */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+ }
+
+ /* add the actions to the menu */
+ for (lp = actions; lp != NULL; lp = lp->next)
+ {
+ item = gtk_action_create_menu_item (GTK_ACTION (lp->data));
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* release the reference on the action */
+ g_object_unref (G_OBJECT (lp->data));
+ }
+
+ /* cleanup */
+ g_list_free (actions);
+ }
+ }
+
+ if (thunar_shortcut_get_mutable (shortcut))
+ {
+ /* append a menu separator */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* append the remove menu item */
+ item = gtk_image_menu_item_new_with_mnemonic (_("_Remove Shortcut"));
+ gtk_widget_set_sensitive (item, FALSE);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* set the remove stock icon */
+ image = gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_widget_show (image);
+
+ /* append the rename menu item */
+ item = gtk_image_menu_item_new_with_mnemonic (_("Re_name Shortcut"));
+ gtk_widget_set_sensitive (item, FALSE);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+ }
+
+ /* run the menu on the view's screen (taking over the floating
+ * reference on the menu) */
+ thunar_gtk_menu_run (GTK_MENU (menu), GTK_WIDGET (view), NULL, NULL,
+ 0, gtk_get_current_event_time ());
+
+ return TRUE;
+}
+
+
+
+static void
thunar_shortcuts_view_update_selection (ThunarShortcutsView *view,
ThunarShortcutGroup *group,
gpointer user_data)
More information about the Xfce4-commits
mailing list