From 9e9b90bc01ba017aae0dfc3a5ce7982b47673bfa Mon Sep 17 00:00:00 2001 From: Benedikt Meurer <benny@xfce.org> Date: Wed, 8 Mar 2006 15:25:29 +0000 Subject: [PATCH] 2006-03-08 Benedikt Meurer <benny@xfce.org> * thunar/thunar-shortcuts-view.c: Always open shortcuts using single clicks. (Old svn revision: 20291) --- ChangeLog | 5 + thunar/thunar-shortcuts-view.c | 414 +++++++++++++++++---------------- 2 files changed, 224 insertions(+), 195 deletions(-) diff --git a/ChangeLog b/ChangeLog index a2af7c9e3..601231d24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-03-08 Benedikt Meurer <benny@xfce.org> + + * thunar/thunar-shortcuts-view.c: Always open shortcuts using single + clicks. + 2006-03-08 Benedikt Meurer <benny@xfce.org> * thunar-uca/thunar-uca-provider.c: Pass the correct working directory diff --git a/thunar/thunar-shortcuts-view.c b/thunar/thunar-shortcuts-view.c index 5dffd0cd0..c38fe7ab9 100644 --- a/thunar/thunar-shortcuts-view.c +++ b/thunar/thunar-shortcuts-view.c @@ -30,7 +30,6 @@ #include <thunar/thunar-shortcuts-icon-renderer.h> #include <thunar/thunar-shortcuts-model.h> #include <thunar/thunar-shortcuts-view.h> -#include <thunar/thunar-text-renderer.h> @@ -55,6 +54,10 @@ static void thunar_shortcuts_view_init (ThunarShortcut static void thunar_shortcuts_view_finalize (GObject *object); static gboolean thunar_shortcuts_view_button_press_event (GtkWidget *widget, GdkEventButton *event); +static gboolean thunar_shortcuts_view_button_release_event (GtkWidget *widget, + GdkEventButton *event); +static void thunar_shortcuts_view_drag_begin (GtkWidget *widget, + GdkDragContext *context); static void thunar_shortcuts_view_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, @@ -72,9 +75,6 @@ static gboolean thunar_shortcuts_view_drag_motion (GtkWidget gint x, gint y, guint time); -static void thunar_shortcuts_view_row_activated (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column); static void thunar_shortcuts_view_remove_activated (GtkWidget *item, ThunarShortcutsView *view); static void thunar_shortcuts_view_rename_activated (GtkWidget *item, @@ -102,14 +102,20 @@ static gboolean thunar_shortcuts_view_separator_func (GtkTreeModel struct _ThunarShortcutsViewClass { - ExoTreeViewClass __parent__; + GtkTreeViewClass __parent__; }; struct _ThunarShortcutsView { - ExoTreeView __parent__; + GtkTreeView __parent__; ThunarPreferences *preferences; + /* the currently pressed mouse button, set in the + * button-press-event handler if the associated + * button-release-event should activate. + */ + gint pressed_button; + #if GTK_CHECK_VERSION(2,8,0) /* id of the signal used to queue a resize on the * column whenever the shortcuts icon size is changed. @@ -159,7 +165,7 @@ thunar_shortcuts_view_get_type (void) NULL, }; - type = g_type_register_static (EXO_TYPE_TREE_VIEW, I_("ThunarShortcutsView"), &info, 0); + type = g_type_register_static (GTK_TYPE_TREE_VIEW, I_("ThunarShortcutsView"), &info, 0); } return type; @@ -170,9 +176,8 @@ thunar_shortcuts_view_get_type (void) static void thunar_shortcuts_view_class_init (ThunarShortcutsViewClass *klass) { - GtkTreeViewClass *gtktree_view_class; - GtkWidgetClass *gtkwidget_class; - GObjectClass *gobject_class; + GtkWidgetClass *gtkwidget_class; + GObjectClass *gobject_class; /* determine the parent type class */ thunar_shortcuts_view_parent_class = g_type_class_peek_parent (klass); @@ -182,13 +187,12 @@ thunar_shortcuts_view_class_init (ThunarShortcutsViewClass *klass) gtkwidget_class = GTK_WIDGET_CLASS (klass); gtkwidget_class->button_press_event = thunar_shortcuts_view_button_press_event; + gtkwidget_class->button_release_event = thunar_shortcuts_view_button_release_event; + gtkwidget_class->drag_begin = thunar_shortcuts_view_drag_begin; gtkwidget_class->drag_data_received = thunar_shortcuts_view_drag_data_received; gtkwidget_class->drag_drop = thunar_shortcuts_view_drag_drop; gtkwidget_class->drag_motion = thunar_shortcuts_view_drag_motion; - gtktree_view_class = GTK_TREE_VIEW_CLASS (klass); - gtktree_view_class->row_activated = thunar_shortcuts_view_row_activated; - /** * ThunarShortcutsView:shortcut-activated: * @@ -221,9 +225,6 @@ thunar_shortcuts_view_init (ThunarShortcutsView *view) view->preferences = thunar_preferences_get (); g_signal_connect_swapped (G_OBJECT (view->preferences), "notify::shortcuts-icon-emblems", G_CALLBACK (gtk_widget_queue_draw), view); - /* apply the single-click mode setting */ - exo_binding_new (G_OBJECT (view->preferences), "misc-single-click", G_OBJECT (view), "single-click"); - /* allocate a single column for our renderers */ column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN, "reorderable", FALSE, @@ -254,8 +255,7 @@ thunar_shortcuts_view_init (ThunarShortcutsView *view) exo_binding_new (G_OBJECT (view->preferences), "shortcuts-icon-emblems", G_OBJECT (renderer), "emblems"); /* allocate the text renderer */ - renderer = g_object_new (THUNAR_TYPE_TEXT_RENDERER, "xalign", 0.0f, NULL); - exo_binding_new (G_OBJECT (view->preferences), "misc-single-click", G_OBJECT (renderer), "follow-prelit"); + renderer = gtk_cell_renderer_text_new (); g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (thunar_shortcuts_view_renamed), view); gtk_tree_view_column_pack_start (column, renderer, TRUE); gtk_tree_view_column_set_attributes (column, renderer, @@ -314,204 +314,202 @@ thunar_shortcuts_view_button_press_event (GtkWidget *widget, GtkWidget *menu; GtkWidget *item; GMainLoop *loop; - gboolean single_click; gboolean mutable; gboolean result; GList *actions; GList *lp; - /* check if we are in single-click mode */ - g_object_get (G_OBJECT (view->preferences), "misc-single-click", &single_click, NULL); + /* reset the pressed button state */ + view->pressed_button = -1; /* let the widget process the event first (handles focussing and scrolling) */ result = (*GTK_WIDGET_CLASS (thunar_shortcuts_view_parent_class)->button_press_event) (widget, event); - /* check if we have a right-click event */ - if (G_LIKELY (event->button != 3)) - { - /* we open a new window for single/double-middle-clicks */ - if (G_UNLIKELY (event->type == (single_click ? GDK_BUTTON_PRESS : GDK_2BUTTON_PRESS) && event->button == 2)) - { - /* just open in new window */ - thunar_shortcuts_view_open_in_new_window (view); - } - - return result; - } - /* resolve the path at the cursor position */ if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), event->x, event->y, &path, NULL, NULL, NULL)) { - /* allocate a new tooltips object */ - tooltips = gtk_tooltips_new (); - exo_gtk_object_ref_sink (GTK_OBJECT (tooltips)); - - /* determine the iterator for the selected row */ - model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget)); - gtk_tree_model_get_iter (model, &iter, path); - - /* check whether the shortcut at the given path is mutable */ - gtk_tree_model_get (model, &iter, - THUNAR_SHORTCUTS_MODEL_COLUMN_FILE, &file, - THUNAR_SHORTCUTS_MODEL_COLUMN_VOLUME, &volume, - THUNAR_SHORTCUTS_MODEL_COLUMN_MUTABLE, &mutable, - -1); - - /* prepare the internal loop */ - loop = g_main_loop_new (NULL, FALSE); - - /* prepare the popup menu */ - menu = gtk_menu_new (); - gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (widget)); - g_signal_connect_swapped (G_OBJECT (menu), "deactivate", G_CALLBACK (g_main_loop_quit), loop); - exo_gtk_object_ref_sink (GTK_OBJECT (menu)); - - /* append the "Open" menu action */ - item = gtk_image_menu_item_new_with_mnemonic (_("_Open")); - g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_open), widget); - 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 (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_open_in_new_window), widget); - 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 have a volume here */ - if (G_UNLIKELY (volume != NULL)) + /* check if we should popup the context menu */ + if (G_UNLIKELY (event->button == 3 && event->type == GDK_BUTTON_PRESS)) { - /* append the "Mount Volume" menu action */ - item = gtk_image_menu_item_new_with_mnemonic (_("_Mount Volume")); - gtk_widget_set_sensitive (item, !thunar_vfs_volume_is_mounted (volume)); - g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_mount), widget); + /* allocate a new tooltips object */ + tooltips = gtk_tooltips_new (); + exo_gtk_object_ref_sink (GTK_OBJECT (tooltips)); + + /* determine the iterator for the selected row */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget)); + gtk_tree_model_get_iter (model, &iter, path); + + /* check whether the shortcut at the given path is mutable */ + gtk_tree_model_get (model, &iter, + THUNAR_SHORTCUTS_MODEL_COLUMN_FILE, &file, + THUNAR_SHORTCUTS_MODEL_COLUMN_VOLUME, &volume, + THUNAR_SHORTCUTS_MODEL_COLUMN_MUTABLE, &mutable, + -1); + + /* prepare the internal loop */ + loop = g_main_loop_new (NULL, FALSE); + + /* prepare the popup menu */ + menu = gtk_menu_new (); + gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (widget)); + g_signal_connect_swapped (G_OBJECT (menu), "deactivate", G_CALLBACK (g_main_loop_quit), loop); + exo_gtk_object_ref_sink (GTK_OBJECT (menu)); + + /* append the "Open" menu action */ + item = gtk_image_menu_item_new_with_mnemonic (_("_Open")); + g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_open), widget); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_show (item); - /* check if the volume is a disc */ - if (thunar_vfs_volume_is_disc (volume)) - { - /* append the "Eject Volume" menu action */ - item = gtk_image_menu_item_new_with_mnemonic (_("E_ject Volume")); - g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_eject), widget); - gtk_widget_set_sensitive (item, thunar_vfs_volume_is_ejectable (volume)); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_widget_show (item); - } - else - { - /* append the "Unmount Volume" menu item */ - item = gtk_image_menu_item_new_with_mnemonic (_("_Unmount Volume")); - gtk_widget_set_sensitive (item, thunar_vfs_volume_is_mounted (volume)); - g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_unmount), widget); - 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 (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_open_in_new_window), widget); + 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); - } - /* append the custom actions for the selected file (if any) */ - if (G_LIKELY (file != NULL)) - { - /* determine the toplevel window */ - window = gtk_widget_get_toplevel (widget); - - /* determine the actions for the selected file */ - actions = thunar_file_get_actions (file, window); - - /* check if we have any actions */ - if (G_LIKELY (actions != NULL)) + /* check if we have a volume here */ + if (G_UNLIKELY (volume != NULL)) { - /* append the actions */ - for (lp = actions; lp != NULL; lp = lp->next) + /* append the "Mount Volume" menu action */ + item = gtk_image_menu_item_new_with_mnemonic (_("_Mount Volume")); + gtk_widget_set_sensitive (item, !thunar_vfs_volume_is_mounted (volume)); + g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_mount), widget); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + + /* check if the volume is a disc */ + if (thunar_vfs_volume_is_disc (volume)) { - /* append the menu item */ - item = gtk_action_create_menu_item (GTK_ACTION (lp->data)); + /* append the "Eject Volume" menu action */ + item = gtk_image_menu_item_new_with_mnemonic (_("E_ject Volume")); + g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_eject), widget); + gtk_widget_set_sensitive (item, thunar_vfs_volume_is_ejectable (volume)); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + } + else + { + /* append the "Unmount Volume" menu item */ + item = gtk_image_menu_item_new_with_mnemonic (_("_Unmount Volume")); + gtk_widget_set_sensitive (item, thunar_vfs_volume_is_mounted (volume)); + g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_unmount), widget); 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)); } - g_list_free (actions); /* 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 custom actions for the selected file (if any) */ + if (G_LIKELY (file != NULL)) + { + /* determine the toplevel window */ + window = gtk_widget_get_toplevel (widget); + + /* determine the actions for the selected file */ + actions = thunar_file_get_actions (file, window); + + /* check if we have any actions */ + if (G_LIKELY (actions != NULL)) + { + /* append the actions */ + for (lp = actions; lp != NULL; lp = lp->next) + { + /* append the menu item */ + 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)); + } + g_list_free (actions); + + /* 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")); + g_object_set_data_full (G_OBJECT (item), I_("thunar-shortcuts-row"), + gtk_tree_row_reference_new (model, path), + (GDestroyNotify) gtk_tree_row_reference_free); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_remove_activated), widget); + gtk_widget_set_sensitive (item, mutable); + 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")); + g_object_set_data_full (G_OBJECT (item), I_("thunar-shortcuts-row"), + gtk_tree_row_reference_new (model, path), + (GDestroyNotify) gtk_tree_row_reference_free); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_rename_activated), widget); + gtk_widget_set_sensitive (item, mutable); + 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); + + /* append the "Display icon emblems" item */ + item = gtk_check_menu_item_new_with_mnemonic (_("Display _Emblem Icons")); + exo_mutual_binding_new (G_OBJECT (view->preferences), "shortcuts-icon-emblems", G_OBJECT (item), "active"); + gtk_tooltips_set_tip (tooltips, item, _("Display emblem icons in the shortcuts list for all files for which " + "emblems have been defined in the file properties dialog."), NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + + /* run the internal loop */ + gtk_grab_add (menu); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); + g_main_loop_run (loop); + gtk_grab_remove (menu); + + /* clean up */ + if (G_LIKELY (file != NULL)) + g_object_unref (G_OBJECT (file)); + if (G_UNLIKELY (volume != NULL)) + g_object_unref (G_OBJECT (volume)); + g_object_unref (G_OBJECT (tooltips)); + g_object_unref (G_OBJECT (menu)); + g_main_loop_unref (loop); + + /* we effectively handled the event */ + result = TRUE; + } + else if ((event->button == 1 || event->button == 2) && event->type == GDK_BUTTON_PRESS + && (event->state & gtk_accelerator_get_default_mod_mask ()) == 0) + { + /* remember the button as pressed and handle it in the release handler */ + view->pressed_button = event->button; } - /* append the remove menu item */ - item = gtk_image_menu_item_new_with_mnemonic (_("_Remove Shortcut")); - g_object_set_data_full (G_OBJECT (item), I_("thunar-shortcuts-row"), - gtk_tree_row_reference_new (model, path), - (GDestroyNotify) gtk_tree_row_reference_free); - g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_remove_activated), widget); - gtk_widget_set_sensitive (item, mutable); - 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")); - g_object_set_data_full (G_OBJECT (item), I_("thunar-shortcuts-row"), - gtk_tree_row_reference_new (model, path), - (GDestroyNotify) gtk_tree_row_reference_free); - g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (thunar_shortcuts_view_rename_activated), widget); - gtk_widget_set_sensitive (item, mutable); - 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); - - /* append the "Display icon emblems" item */ - item = gtk_check_menu_item_new_with_mnemonic (_("Display _Emblem Icons")); - exo_mutual_binding_new (G_OBJECT (view->preferences), "shortcuts-icon-emblems", G_OBJECT (item), "active"); - gtk_tooltips_set_tip (tooltips, item, _("Display emblem icons in the shortcuts list for all files for which " - "emblems have been defined in the file properties dialog."), NULL); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_widget_show (item); - - /* run the internal loop */ - gtk_grab_add (menu); - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); - g_main_loop_run (loop); - gtk_grab_remove (menu); - - /* clean up */ - if (G_LIKELY (file != NULL)) - g_object_unref (G_OBJECT (file)); - if (G_UNLIKELY (volume != NULL)) - g_object_unref (G_OBJECT (volume)); - g_object_unref (G_OBJECT (tooltips)); - g_object_unref (G_OBJECT (menu)); + /* release the path */ gtk_tree_path_free (path); - g_main_loop_unref (loop); - - /* we effectively handled the event */ - return TRUE; } return result; @@ -519,6 +517,47 @@ thunar_shortcuts_view_button_press_event (GtkWidget *widget, +static gboolean +thunar_shortcuts_view_button_release_event (GtkWidget *widget, + GdkEventButton *event) +{ + ThunarShortcutsView *view = THUNAR_SHORTCUTS_VIEW (widget); + + /* check if we have an event matching the pressed button state */ + if (G_LIKELY (view->pressed_button == event->button)) + { + /* check if we should simply open or open in new window */ + if (G_LIKELY (event->button == 1)) + thunar_shortcuts_view_open (view); + else if (G_UNLIKELY (event->button == 2)) + thunar_shortcuts_view_open_in_new_window (view); + } + + /* reset the pressed button state */ + view->pressed_button = -1; + + /* call the parent's release event handler */ + return (*GTK_WIDGET_CLASS (thunar_shortcuts_view_parent_class)->button_release_event) (widget, event); +} + + + +static void +thunar_shortcuts_view_drag_begin (GtkWidget *widget, + GdkDragContext *context) +{ + ThunarShortcutsView *view = THUNAR_SHORTCUTS_VIEW (widget); + + /* reset the pressed button state */ + view->pressed_button = -1; + + /* call the parent's drag_begin() handler */ + if (GTK_WIDGET_CLASS (thunar_shortcuts_view_parent_class)->drag_begin != NULL) + (*GTK_WIDGET_CLASS (thunar_shortcuts_view_parent_class)->drag_begin) (widget, context); +} + + + static void thunar_shortcuts_view_drag_data_received (GtkWidget *widget, GdkDragContext *context, @@ -630,21 +669,6 @@ thunar_shortcuts_view_drag_motion (GtkWidget *widget, -static void -thunar_shortcuts_view_row_activated (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column) -{ - /* call the row-activated method in the parent class */ - if (GTK_TREE_VIEW_CLASS (thunar_shortcuts_view_parent_class)->row_activated != NULL) - (*GTK_TREE_VIEW_CLASS (thunar_shortcuts_view_parent_class)->row_activated) (tree_view, path, column); - - /* open the folder referenced by the shortcut */ - thunar_shortcuts_view_open (THUNAR_SHORTCUTS_VIEW (tree_view)); -} - - - static void thunar_shortcuts_view_remove_activated (GtkWidget *item, ThunarShortcutsView *view) -- GitLab