aboutsummarylogtreecommitdiffstats
path: root/popovers__file-chooser-list.patch
blob: eb574116c7069fd4d6501465de0b57508e59a0b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
diff -U 5 -r -Z -B ./org/gtk/gtkfilechooserwidget.c ./mod/gtk/gtkfilechooserwidget.c
--- ./org/gtk/gtkfilechooserwidget.c	2017-07-19 04:55:39.000000000 +0200
+++ ./mod/gtk/gtkfilechooserwidget.c	2017-07-30 15:26:07.513375549 +0200
@@ -77,10 +77,11 @@
 #include "gtkspinner.h"
 #include "gtkseparator.h"
 #include "gtkmodelbutton.h"
 #include "gtkgesturelongpress.h"
 #include "gtkdebug.h"
+#include "deprecated/gtkimagemenuitem.h"
 
 #include <cairo-gobject.h>
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -2222,10 +2223,14 @@
 static GtkWidget *
 append_separator (GtkWidget *box)
 {
   GtkWidget *separator;
 
+  separator = gtk_separator_menu_item_new();
+  gtk_widget_set_visible(GTK_WIDGET(separator), TRUE);
+  gtk_menu_shell_append(GTK_MENU_SHELL(box), separator);
+  return separator;
   separator = g_object_new (GTK_TYPE_SEPARATOR,
                             "orientation", GTK_ORIENTATION_HORIZONTAL,
                             "visible", TRUE,
                             "margin-start", 12,
                             "margin-end", 12,
@@ -2243,10 +2248,18 @@
             const gchar *label,
             const gchar *action)
 {
   GtkWidget *item;
 
+  if (g_str_match_string("toggle", action, TRUE))
+    item = gtk_check_menu_item_new_with_mnemonic(label);
+  else
+    item = gtk_image_menu_item_new_with_mnemonic(label);
+  g_object_set(G_OBJECT(item), "action-name", action, NULL);
+  gtk_widget_set_visible(GTK_WIDGET(item), TRUE);
+  gtk_menu_shell_append(GTK_MENU_SHELL(box), item);
+  return item;
  item = g_object_new (GTK_TYPE_MODEL_BUTTON,
                        "visible", TRUE,
                        "action-name", action,
                        "text", label,
                        NULL);
@@ -2267,10 +2280,13 @@
   priv->browse_files_popover = gtk_popover_new (priv->browse_files_tree_view);
   box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   g_object_set (box, "margin", 10, NULL);
   gtk_widget_show (box);
   gtk_container_add (GTK_CONTAINER (priv->browse_files_popover), box);
+  priv->browse_files_popover = gtk_menu_new();
+  gtk_menu_attach_to_widget(GTK_MENU(priv->browse_files_popover), GTK_WIDGET(priv->browse_files_tree_view), NULL);
+  box = priv->browse_files_popover;
 
   priv->visit_file_item = add_button (box, _("_Visit File"), "item.visit");
   priv->open_folder_item = add_button (box, _("_Open With File Manager"), "item.open");
   priv->copy_file_location_item = add_button (box, _("_Copy Location"), "item.copy-location");
   priv->add_shortcut_item = add_button (box, _("_Add to Bookmarks"), "item.add-shortcut");
@@ -2282,10 +2298,16 @@
 
   priv->hidden_files_item = add_button (box, _("Show _Hidden Files"), "item.toggle-show-hidden");
   priv->size_column_item = add_button (box, _("Show _Size Column"), "item.toggle-show-size");
   priv->show_time_item = add_button (box, _("Show _Time"), "item.toggle-show-time");
   priv->sort_directories_item = add_button (box, _("Sort _Folders before Files"), "item.toggle-sort-dirs-first");
+  g_object_set(priv->visit_file_item, "image", gtk_image_new_from_icon_name("gtk-jump-to",GTK_ICON_SIZE_MENU), NULL);
+  g_object_set(priv->open_folder_item, "image", gtk_image_new_from_icon_name("gtk-open",GTK_ICON_SIZE_MENU), NULL);
+  g_object_set(priv->copy_file_location_item, "image", gtk_image_new_from_icon_name("gtk-copy",GTK_ICON_SIZE_MENU), NULL);
+  g_object_set(priv->add_shortcut_item, "image", gtk_image_new_from_icon_name("gtk-add",GTK_ICON_SIZE_MENU), NULL);
+  g_object_set(priv->delete_file_item, "image", gtk_image_new_from_icon_name("gtk-delete",GTK_ICON_SIZE_MENU), NULL);
+  g_object_set(priv->trash_file_item, "image", gtk_image_new_from_icon_name("user-trash-full",GTK_ICON_SIZE_MENU), NULL);
 }
 
 /* Updates the popover for the file list, creating it if necessary */
 static void
 file_list_update_popover (GtkFileChooserWidget *impl)
@@ -2338,10 +2360,12 @@
   GList *list;
   GtkTreePath *path;
 
 
   file_list_update_popover (impl);
+  gtk_menu_popup_at_pointer(GTK_MENU(priv->browse_files_popover), NULL);
+  return;
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->browse_files_tree_view));
   list = gtk_tree_selection_get_selected_rows (selection, &model);
   if (list)
     {