Mercurial > hg > forks > geeqie
annotate src/view_dir.c @ 2915:8536c3a680ea
Fix #664: Recursive slideshow does not respect file sorting
https://github.com/BestImageViewer/geeqie/issues/664
author | Colin Clark <colin.clark@cclark.uk> |
---|---|
date | Mon, 08 Apr 2019 11:32:12 +0100 |
parents | 009f0a811472 |
children |
rev | line source |
---|---|
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1 /* |
2350
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
2 * Copyright (C) 2008 - 2016 The Geeqie Team |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
3 * |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
4 * Author: Laurent Monin |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
5 * |
2350
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
6 * This program is free software; you can redistribute it and/or modify |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
7 * it under the terms of the GNU General Public License as published by |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
8 * the Free Software Foundation; either version 2 of the License, or |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
9 * (at your option) any later version. |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
10 * |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
11 * This program is distributed in the hope that it will be useful, |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
14 * GNU General Public License for more details. |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
15 * |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
16 * You should have received a copy of the GNU General Public License along |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
17 * with this program; if not, write to the Free Software Foundation, Inc., |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
19 */ |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
20 |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
21 #include "main.h" |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
22 #include "view_dir.h" |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
23 |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
24 #include "dnd.h" |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
25 #include "dupe.h" |
902
ee3a7b7dbc33
Move history_list_*() functions to separate files:
Laurent Monin <geeqie@norz.org>
parents:
818
diff
changeset
|
26 #include "editors.h" |
586
122fc2223b42
split filelist.c to filefilter.c and filedata.c
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
556
diff
changeset
|
27 #include "filedata.h" |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
28 #include "layout_image.h" |
384
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
29 #include "layout_util.h" |
1612
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
30 #include "pixbuf_util.h" |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
31 #include "ui_fileops.h" |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
32 #include "ui_tree_edit.h" |
383
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
33 #include "ui_menu.h" |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
34 #include "utilops.h" |
904
ab63ec98b0f6
Move uri_*() functions to separate files: uri_utils.[ch]
Laurent Monin <geeqie@norz.org>
parents:
902
diff
changeset
|
35 #include "uri_utils.h" |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
36 #include "view_dir_list.h" |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
37 #include "view_dir_tree.h" |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
38 |
1612
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
39 /* Folders icons to be used in tree or list directory view */ |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
40 static PixmapFolders *folder_icons_new(GtkWidget *widget) |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
41 { |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
42 PixmapFolders *pf = g_new0(PixmapFolders, 1); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2181
diff
changeset
|
43 |
1612
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
44 #if 1 |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
45 GtkIconSize size = GTK_ICON_SIZE_MENU; |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
46 |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
47 /* Attempt to use stock gtk icons */ |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
48 pf->close = gtk_widget_render_icon(widget, GTK_STOCK_DIRECTORY, size, NULL); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
49 pf->open = gtk_widget_render_icon(widget, GTK_STOCK_OPEN, size, NULL); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
50 pf->deny = gtk_widget_render_icon(widget, GTK_STOCK_STOP, size, NULL); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
51 pf->parent = gtk_widget_render_icon(widget, GTK_STOCK_GO_UP, size, NULL); |
2855
009f0a811472
Fix #642: If a folder is a link, use an icon to indicate it is a link
Colin Clark <colin.clark@cclark.uk>
parents:
2663
diff
changeset
|
52 /* FIXME: this is not a suitable icon */ |
009f0a811472
Fix #642: If a folder is a link, use an icon to indicate it is a link
Colin Clark <colin.clark@cclark.uk>
parents:
2663
diff
changeset
|
53 pf->link = gtk_widget_render_icon(widget, GTK_STOCK_REDO, size, NULL); |
1612
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
54 #else |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
55 /* GQView legacy icons */ |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
56 pf->close = pixbuf_inline(PIXBUF_INLINE_FOLDER_CLOSED); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
57 pf->open = pixbuf_inline(PIXBUF_INLINE_FOLDER_OPEN); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
58 pf->deny = pixbuf_inline(PIXBUF_INLINE_FOLDER_LOCKED); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
59 pf->parent = pixbuf_inline(PIXBUF_INLINE_FOLDER_UP); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
60 #endif |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
61 return pf; |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
62 } |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
63 |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
64 static void folder_icons_free(PixmapFolders *pf) |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
65 { |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
66 if (!pf) return; |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
67 |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
68 g_object_unref(pf->close); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
69 g_object_unref(pf->open); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
70 g_object_unref(pf->deny); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
71 g_object_unref(pf->parent); |
2855
009f0a811472
Fix #642: If a folder is a link, use an icon to indicate it is a link
Colin Clark <colin.clark@cclark.uk>
parents:
2663
diff
changeset
|
72 g_object_unref(pf->link); |
1612
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
73 |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
74 g_free(pf); |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
75 } |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
76 |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
77 |
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
78 |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
79 static void vd_notify_cb(FileData *fd, NotifyType type, gpointer data); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
80 |
401
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
81 static void vd_destroy_cb(GtkWidget *widget, gpointer data) |
384
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
82 { |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
83 ViewDir *vd = data; |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
84 |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
85 file_data_unregister_notify_func(vd_notify_cb, vd); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
86 |
384
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
87 if (vd->popup) |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
88 { |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
89 g_signal_handlers_disconnect_matched(G_OBJECT(vd->popup), G_SIGNAL_MATCH_DATA, |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
90 0, 0, 0, NULL, vd); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
91 gtk_widget_destroy(vd->popup); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
92 } |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
93 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
94 switch (vd->type) |
401
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
95 { |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
96 case DIRVIEW_LIST: vdlist_destroy_cb(widget, data); break; |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
97 case DIRVIEW_TREE: vdtree_destroy_cb(widget, data); break; |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
98 } |
442 | 99 |
384
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
100 if (vd->pf) folder_icons_free(vd->pf); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
101 if (vd->drop_list) filelist_free(vd->drop_list); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
102 |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
103 if (vd->dir_fd) file_data_unref(vd->dir_fd); |
384
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
104 if (vd->info) g_free(vd->info); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
105 |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
106 g_free(vd); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
107 } |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
108 |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
109 ViewDir *vd_new(DirViewType type, FileData *dir_fd) |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
110 { |
384
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
111 ViewDir *vd = g_new0(ViewDir, 1); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
112 |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
113 vd->widget = gtk_scrolled_window_new(NULL, NULL); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
114 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(vd->widget), GTK_SHADOW_IN); |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
115 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(vd->widget), |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
116 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
117 |
1612
73a7aac03c37
Attempt to use stock gtk icons for directory list and tree views.
Laurent Monin <geeqie@norz.org>
parents:
1553
diff
changeset
|
118 vd->pf = folder_icons_new(vd->widget); |
391
733d403fb0db
Fix a crash introduced in revision 477.
Laurent Monin <geeqie@norz.org>
parents:
389
diff
changeset
|
119 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
120 switch (type) |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
121 { |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
122 case DIRVIEW_LIST: vd = vdlist_new(vd, dir_fd); break; |
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
123 case DIRVIEW_TREE: vd = vdtree_new(vd, dir_fd); break; |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
124 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
125 |
405
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
126 gtk_container_add(GTK_CONTAINER(vd->widget), vd->view); |
442 | 127 |
405
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
128 vd_dnd_init(vd); |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
129 |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
130 g_signal_connect(G_OBJECT(vd->view), "row_activated", |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
131 G_CALLBACK(vd_activate_cb), vd); |
384
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
132 g_signal_connect(G_OBJECT(vd->widget), "destroy", |
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
133 G_CALLBACK(vd_destroy_cb), vd); |
405
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
134 g_signal_connect(G_OBJECT(vd->view), "key_press_event", |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
135 G_CALLBACK(vd_press_key_cb), vd); |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
136 g_signal_connect(G_OBJECT(vd->view), "button_press_event", |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
137 G_CALLBACK(vd_press_cb), vd); |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
138 g_signal_connect(G_OBJECT(vd->view), "button_release_event", |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
139 G_CALLBACK(vd_release_cb), vd); |
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
140 |
1730
08732ff9f8ba
fixed vd_notify_cb leak
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1668
diff
changeset
|
141 file_data_register_notify_func(vd_notify_cb, vd, NOTIFY_PRIORITY_HIGH); |
405
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
142 |
1730
08732ff9f8ba
fixed vd_notify_cb leak
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1668
diff
changeset
|
143 /* vd_set_fd expects that vd_notify_cb is already registered */ |
08732ff9f8ba
fixed vd_notify_cb leak
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1668
diff
changeset
|
144 if (dir_fd) vd_set_fd(vd, dir_fd); |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
145 |
405
d64659c27a88
Fix forgotten vd->pf affectation.
Laurent Monin <geeqie@norz.org>
parents:
402
diff
changeset
|
146 gtk_widget_show(vd->view); |
384
00d9ffa0d171
Merge parts of view_dir_list/tree constructors/destructors to
Laurent Monin <geeqie@norz.org>
parents:
383
diff
changeset
|
147 |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
148 return vd; |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
149 } |
442 | 150 |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
151 void vd_set_select_func(ViewDir *vd, |
1628
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
152 void (*func)(ViewDir *vd, FileData *fd, gpointer data), gpointer data) |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
153 { |
442 | 154 vd->select_func = func; |
155 vd->select_data = data; | |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
156 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
157 |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
158 void vd_set_layout(ViewDir *vd, LayoutWindow *layout) |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
159 { |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
160 vd->layout = layout; |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
161 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
162 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
163 gboolean vd_set_fd(ViewDir *vd, FileData *dir_fd) |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
164 { |
1437 | 165 gboolean ret = FALSE; |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
166 |
1230
2370991ca557
fixed view_dir notification
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1055
diff
changeset
|
167 file_data_unregister_notify_func(vd_notify_cb, vd); |
2370991ca557
fixed view_dir notification
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1055
diff
changeset
|
168 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
169 switch (vd->type) |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
170 { |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
171 case DIRVIEW_LIST: ret = vdlist_set_fd(vd, dir_fd); break; |
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
172 case DIRVIEW_TREE: ret = vdtree_set_fd(vd, dir_fd); break; |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
173 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
174 |
1230
2370991ca557
fixed view_dir notification
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1055
diff
changeset
|
175 file_data_register_notify_func(vd_notify_cb, vd, NOTIFY_PRIORITY_HIGH); |
2370991ca557
fixed view_dir notification
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1055
diff
changeset
|
176 |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
177 return ret; |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
178 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
179 |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
180 void vd_refresh(ViewDir *vd) |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
181 { |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
182 switch (vd->type) |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
183 { |
982 | 184 case DIRVIEW_LIST: vdlist_refresh(vd); break; |
185 case DIRVIEW_TREE: vdtree_refresh(vd); break; | |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
186 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
187 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
188 |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
189 const gchar *vd_row_get_path(ViewDir *vd, gint row) |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
190 { |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
191 const gchar *ret = NULL; |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
192 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
193 switch (vd->type) |
380
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
194 { |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
195 case DIRVIEW_LIST: ret = vdlist_row_get_path(vd, row); break; |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
196 case DIRVIEW_TREE: ret = vdtree_row_get_path(vd, row); break; |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
197 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
198 |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
199 return ret; |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
200 } |
41079d11eba7
Introduce a new struct ViewDir to handle directory views common
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
201 |
1628
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
202 /* the calling stack is this: |
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
203 vd_select_row -> select_func -> layout_set_fd -> vd_set_fd |
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
204 */ |
396
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
205 void vd_select_row(ViewDir *vd, FileData *fd) |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
206 { |
1628
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
207 if (fd && vd->select_func) |
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
208 { |
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
209 vd->select_func(vd, fd, vd->select_data); |
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
210 } |
396
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
211 } |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
212 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
213 gboolean vd_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter) |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
214 { |
1437 | 215 gboolean ret = FALSE; |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
216 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
217 switch (vd->type) |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
218 { |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
219 case DIRVIEW_LIST: ret = vdlist_find_row(vd, fd, iter); break; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
220 case DIRVIEW_TREE: ret = vdtree_find_row(vd, fd, iter, NULL); break; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
221 } |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
222 |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
223 return ret; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
224 } |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
225 |
399
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
226 FileData *vd_get_fd_from_tree_path(ViewDir *vd, GtkTreeView *tview, GtkTreePath *tpath) |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
227 { |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
228 GtkTreeIter iter; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
229 FileData *fd = NULL; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
230 GtkTreeModel *store; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
231 |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
232 store = gtk_tree_view_get_model(tview); |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
233 gtk_tree_model_get_iter(store, &iter, tpath); |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
234 switch (vd->type) |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
235 { |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
236 case DIRVIEW_LIST: |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
237 gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &fd, -1); |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
238 break; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
239 case DIRVIEW_TREE: |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
240 { |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
241 NodeData *nd; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
242 gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &nd, -1); |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
243 fd = (nd) ? nd->fd : NULL; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
244 }; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
245 break; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
246 } |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
247 |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
248 return fd; |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
249 } |
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
250 |
1637
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
251 static void vd_rename_finished_cb(gboolean success, const gchar *new_path, gpointer data) |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
252 { |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
253 ViewDir *vd = data; |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
254 if (success) |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
255 { |
1927
d1a5b8633919
always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1802
diff
changeset
|
256 FileData *fd = file_data_new_dir(new_path); |
1637
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
257 GtkTreeIter iter; |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
258 |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
259 if (vd_find_row(vd, fd, &iter)) |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
260 { |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
261 tree_view_row_make_visible(GTK_TREE_VIEW(vd->view), &iter, TRUE); |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
262 } |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
263 |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
264 file_data_unref(fd); |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
265 } |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
266 } |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
267 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
268 static gboolean vd_rename_cb(TreeEditData *td, const gchar *old, const gchar *new, gpointer data) |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
269 { |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
270 ViewDir *vd = data; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
271 FileData *fd; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
272 gchar *new_path; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
273 gchar *base; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
274 |
399
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
275 fd = vd_get_fd_from_tree_path(vd, GTK_TREE_VIEW(vd->view), td->path); |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
276 if (!fd) return FALSE; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
277 |
818
5b5ede62141b
fixed segfault in vd_rename_cb
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
783
diff
changeset
|
278 base = remove_level_from_path(fd->path); |
702
1350095d7b25
Drop concat_dir_and_file() and use g_build_filename() instead.
Laurent Monin <geeqie@norz.org>
parents:
586
diff
changeset
|
279 new_path = g_build_filename(base, new, NULL); |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
280 g_free(base); |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
281 |
1637
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
282 file_util_rename_dir(fd, new_path, vd->view, vd_rename_finished_cb, vd); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2181
diff
changeset
|
283 |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
284 g_free(new_path); |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
285 |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
286 return FALSE; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
287 } |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
288 |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
289 static void vd_rename_by_data(ViewDir *vd, FileData *fd) |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
290 { |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
291 GtkTreeModel *store; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
292 GtkTreePath *tpath; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
293 GtkTreeIter iter; |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
294 |
1553
6d5f62b0eef7
fixed tests for vd_find_row return value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1523
diff
changeset
|
295 if (!fd || !vd_find_row(vd, fd, &iter)) return; |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
296 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
297 tpath = gtk_tree_model_get_path(store, &iter); |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
298 |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
299 tree_edit_by_path(GTK_TREE_VIEW(vd->view), tpath, 0, fd->name, |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
300 vd_rename_cb, vd); |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
301 gtk_tree_path_free(tpath); |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
302 } |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
303 |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
304 |
383
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
305 void vd_color_set(ViewDir *vd, FileData *fd, gint color_set) |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
306 { |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
307 GtkTreeModel *store; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
308 GtkTreeIter iter; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
309 |
1553
6d5f62b0eef7
fixed tests for vd_find_row return value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1523
diff
changeset
|
310 if (!vd_find_row(vd, fd, &iter)) return; |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
311 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); |
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
312 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
313 switch (vd->type) |
383
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
314 { |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
315 case DIRVIEW_LIST: |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
316 gtk_list_store_set(GTK_LIST_STORE(store), &iter, DIR_COLUMN_COLOR, color_set, -1); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
317 break; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
318 case DIRVIEW_TREE: |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
319 gtk_tree_store_set(GTK_TREE_STORE(store), &iter, DIR_COLUMN_COLOR, color_set, -1); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
320 break; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
321 } |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
322 } |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
323 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
324 void vd_popup_destroy_cb(GtkWidget *widget, gpointer data) |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
325 { |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
326 ViewDir *vd = data; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
327 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
328 vd_color_set(vd, vd->click_fd, FALSE); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
329 vd->click_fd = NULL; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
330 vd->popup = NULL; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
331 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
332 vd_color_set(vd, vd->drop_fd, FALSE); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
333 filelist_free(vd->drop_list); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
334 vd->drop_list = NULL; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
335 vd->drop_fd = NULL; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
336 } |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
337 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
338 /* |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
339 *----------------------------------------------------------------------------- |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
340 * drop menu (from dnd) |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
341 *----------------------------------------------------------------------------- |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
342 */ |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
343 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
344 static void vd_drop_menu_copy_cb(GtkWidget *widget, gpointer data) |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
345 { |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
346 ViewDir *vd = data; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
347 const gchar *path; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
348 GList *list; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
349 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
350 if (!vd->drop_fd) return; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
351 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
352 path = vd->drop_fd->path; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
353 list = vd->drop_list; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
354 vd->drop_list = NULL; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
355 |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
356 file_util_copy_simple(list, path, vd->widget); |
383
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
357 } |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
358 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
359 static void vd_drop_menu_move_cb(GtkWidget *widget, gpointer data) |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
360 { |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
361 ViewDir *vd = data; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
362 const gchar *path; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
363 GList *list; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
364 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
365 if (!vd->drop_fd) return; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
366 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
367 path = vd->drop_fd->path; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
368 list = vd->drop_list; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
369 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
370 vd->drop_list = NULL; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
371 |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
372 file_util_move_simple(list, path, vd->widget); |
383
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
373 } |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
374 |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
375 static void vd_drop_menu_filter_cb(GtkWidget *widget, gpointer data) |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
376 { |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
377 ViewDir *vd = data; |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
378 const gchar *path; |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
379 GList *list; |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
380 const gchar *key; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2181
diff
changeset
|
381 |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
382 if (!vd->drop_fd) return; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2181
diff
changeset
|
383 |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
384 key = g_object_get_data(G_OBJECT(widget), "filter_key"); |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
385 |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
386 path = vd->drop_fd->path; |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
387 list = vd->drop_list; |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
388 |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
389 vd->drop_list = NULL; |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
390 |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
391 file_util_start_filter_from_filelist(key, list, path, vd->widget); |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
392 } |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
393 |
1413
87e1103a91d9
Use dynamic allocation for editor key passed to various callbacks.
Laurent Monin <geeqie@norz.org>
parents:
1412
diff
changeset
|
394 static void vd_drop_menu_edit_item_free(gpointer data) |
87e1103a91d9
Use dynamic allocation for editor key passed to various callbacks.
Laurent Monin <geeqie@norz.org>
parents:
1412
diff
changeset
|
395 { |
87e1103a91d9
Use dynamic allocation for editor key passed to various callbacks.
Laurent Monin <geeqie@norz.org>
parents:
1412
diff
changeset
|
396 g_free(data); |
87e1103a91d9
Use dynamic allocation for editor key passed to various callbacks.
Laurent Monin <geeqie@norz.org>
parents:
1412
diff
changeset
|
397 } |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
398 |
383
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
399 GtkWidget *vd_drop_menu(ViewDir *vd, gint active) |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
400 { |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
401 GtkWidget *menu; |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
402 GList *editors_list = editor_list_get(); |
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
403 GList *work = editors_list; |
383
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
404 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
405 menu = popup_menu_short_lived(); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
406 g_signal_connect(G_OBJECT(menu), "destroy", |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
407 G_CALLBACK(vd_popup_destroy_cb), vd); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
408 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
409 menu_item_add_stock_sensitive(menu, _("_Copy"), GTK_STOCK_COPY, active, |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
410 G_CALLBACK(vd_drop_menu_copy_cb), vd); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
411 menu_item_add_sensitive(menu, _("_Move"), active, G_CALLBACK(vd_drop_menu_move_cb), vd); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
412 |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
413 while (work) |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
414 { |
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
415 GtkWidget *item; |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
416 const EditorDescription *editor = work->data; |
1413
87e1103a91d9
Use dynamic allocation for editor key passed to various callbacks.
Laurent Monin <geeqie@norz.org>
parents:
1412
diff
changeset
|
417 gchar *key; |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
418 work = work->next; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2181
diff
changeset
|
419 |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
420 if (!editor_is_filter(editor->key)) continue; |
1413
87e1103a91d9
Use dynamic allocation for editor key passed to various callbacks.
Laurent Monin <geeqie@norz.org>
parents:
1412
diff
changeset
|
421 key = g_strdup(editor->key); |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
422 item = menu_item_add_sensitive(menu, editor->name, active, G_CALLBACK(vd_drop_menu_filter_cb), vd); |
1413
87e1103a91d9
Use dynamic allocation for editor key passed to various callbacks.
Laurent Monin <geeqie@norz.org>
parents:
1412
diff
changeset
|
423 g_object_set_data_full(G_OBJECT(item), "filter_key", key, vd_drop_menu_edit_item_free); |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
424 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2181
diff
changeset
|
425 |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1232
diff
changeset
|
426 g_list_free(editors_list); |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
427 |
383
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
428 menu_item_add_divider(menu); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
429 menu_item_add_stock(menu, _("Cancel"), GTK_STOCK_CANCEL, NULL, vd); |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
430 |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
431 return menu; |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
432 } |
e2edfa5524d4
Move some dnd common code from view_dir_list.c and view_dir_tree.c
Laurent Monin <geeqie@norz.org>
parents:
380
diff
changeset
|
433 |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
434 /* |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
435 *----------------------------------------------------------------------------- |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
436 * pop-up menu |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
437 *----------------------------------------------------------------------------- |
442 | 438 */ |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
439 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
440 static void vd_pop_menu_up_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
441 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
442 ViewDir *vd = data; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
443 gchar *path; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
444 |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
445 if (!vd->dir_fd || strcmp(vd->dir_fd->path, G_DIR_SEPARATOR_S) == 0) return; |
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
446 path = remove_level_from_path(vd->dir_fd->path); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
447 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
448 if (vd->select_func) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
449 { |
1927
d1a5b8633919
always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1802
diff
changeset
|
450 FileData *fd = file_data_new_dir(path); |
1628
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
451 vd->select_func(vd, fd, vd->select_data); |
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
452 file_data_unref(fd); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
453 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
454 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
455 g_free(path); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
456 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
457 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
458 static void vd_pop_menu_slide_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
459 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
460 ViewDir *vd = data; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
461 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
462 if (!vd->layout) return; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
463 if (!vd->click_fd) return; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
464 |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
465 layout_set_fd(vd->layout, vd->click_fd); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
466 layout_select_none(vd->layout); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
467 layout_image_slideshow_stop(vd->layout); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
468 layout_image_slideshow_start(vd->layout); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
469 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
470 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
471 static void vd_pop_menu_slide_rec_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
472 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
473 ViewDir *vd = data; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
474 GList *list; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
475 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
476 if (!vd->layout) return; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
477 if (!vd->click_fd) return; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
478 |
2915
8536c3a680ea
Fix #664: Recursive slideshow does not respect file sorting
Colin Clark <colin.clark@cclark.uk>
parents:
2855
diff
changeset
|
479 list = filelist_recursive_full(vd->click_fd, vd->layout->sort_method, vd->layout->sort_ascend); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
480 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
481 layout_image_slideshow_stop(vd->layout); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
482 layout_image_slideshow_start_from_list(vd->layout, list); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
483 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
484 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
485 static void vd_pop_menu_dupe(ViewDir *vd, gint recursive) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
486 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
487 DupeWindow *dw; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
488 GList *list = NULL; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
489 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
490 if (!vd->click_fd) return; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
491 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
492 if (recursive) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
493 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
494 list = g_list_append(list, file_data_ref(vd->click_fd)); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
495 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
496 else |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
497 { |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
498 filelist_read(vd->click_fd, &list, NULL); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
499 list = filelist_filter(list, FALSE); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
500 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
501 |
2426
28546abc2b90
Fix #435: Remember duplicates settings
Colin Clark <cclark@mcb.net>
parents:
2376
diff
changeset
|
502 dw = dupe_window_new(); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
503 dupe_window_add_files(dw, list, recursive); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
504 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
505 filelist_free(list); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
506 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
507 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
508 static void vd_pop_menu_dupe_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
509 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
510 ViewDir *vd = data; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
511 vd_pop_menu_dupe(vd, FALSE); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
512 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
513 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
514 static void vd_pop_menu_dupe_rec_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
515 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
516 ViewDir *vd = data; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
517 vd_pop_menu_dupe(vd, TRUE); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
518 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
519 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
520 static void vd_pop_menu_delete_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
521 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
522 ViewDir *vd = data; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
523 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
524 if (!vd->click_fd) return; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
525 file_util_delete_dir(vd->click_fd, vd->widget); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
526 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
527 |
522
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
528 static void vd_pop_menu_copy_path_cb(GtkWidget *widget, gpointer data) |
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
529 { |
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
530 ViewDir *vd = data; |
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
531 |
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
532 if (!vd->click_fd) return; |
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
533 |
2663
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
534 file_util_copy_path_to_clipboard(vd->click_fd, TRUE); |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
535 } |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
536 |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
537 static void vd_pop_menu_copy_path_unquoted_cb(GtkWidget *widget, gpointer data) |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
538 { |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
539 ViewDir *vd = data; |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
540 |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
541 if (!vd->click_fd) return; |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
542 |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
543 file_util_copy_path_to_clipboard(vd->click_fd, FALSE); |
522
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
544 } |
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
545 |
417
4171f168347a
Fix directory view popup menu to display a View As submenu
Laurent Monin <geeqie@norz.org>
parents:
407
diff
changeset
|
546 static void vd_pop_submenu_dir_view_as_cb(GtkWidget *widget, gpointer data) |
4171f168347a
Fix directory view popup menu to display a View As submenu
Laurent Monin <geeqie@norz.org>
parents:
407
diff
changeset
|
547 { |
4171f168347a
Fix directory view popup menu to display a View As submenu
Laurent Monin <geeqie@norz.org>
parents:
407
diff
changeset
|
548 ViewDir *vd = data; |
419 | 549 |
1668
238bf773ac46
use radio buttons for file and dir mode in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1666
diff
changeset
|
550 DirViewType new_type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "menu_item_radio_data")); |
1412
4e84054a1d7a
fixed saving of file_view_type
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1365
diff
changeset
|
551 layout_views_set(vd->layout, new_type, vd->layout->options.file_view_type); |
417
4171f168347a
Fix directory view popup menu to display a View As submenu
Laurent Monin <geeqie@norz.org>
parents:
407
diff
changeset
|
552 } |
4171f168347a
Fix directory view popup menu to display a View As submenu
Laurent Monin <geeqie@norz.org>
parents:
407
diff
changeset
|
553 |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
554 static void vd_pop_menu_refresh_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
555 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
556 ViewDir *vd = data; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
557 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
558 if (vd->layout) layout_refresh(vd->layout); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
559 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
560 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
561 static void vd_toggle_show_hidden_files_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
562 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
563 ViewDir *vd = data; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
564 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
565 options->file_filter.show_hidden_files = !options->file_filter.show_hidden_files; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
566 if (vd->layout) layout_refresh(vd->layout); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
567 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
568 |
1231
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
569 static void vd_pop_menu_new_rename_cb(gboolean success, const gchar *new_path, gpointer data) |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
570 { |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
571 ViewDir *vd = data; |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
572 FileData *fd = NULL; |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
573 if (!success) return; |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
574 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
575 switch (vd->type) |
1231
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
576 { |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
577 case DIRVIEW_LIST: |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
578 { |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
579 vd_refresh(vd); |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
580 fd = vdlist_row_by_path(vd, new_path, NULL); |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
581 }; |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
582 break; |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
583 case DIRVIEW_TREE: |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
584 { |
1927
d1a5b8633919
always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1802
diff
changeset
|
585 FileData *new_fd = file_data_new_dir(new_path); |
1231
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
586 fd = vdtree_populate_path(vd, new_fd, TRUE, TRUE); |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
587 file_data_unref(new_fd); |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
588 } |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
589 break; |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
590 } |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
591 vd_rename_by_data(vd, fd); |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
592 } |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
593 |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
594 static void vd_pop_menu_new_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
595 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
596 ViewDir *vd = data; |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
597 FileData *dir_fd = NULL; |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
598 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
599 switch (vd->type) |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
600 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
601 case DIRVIEW_LIST: |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
602 { |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
603 if (!vd->dir_fd) return; |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
604 dir_fd = vd->dir_fd; |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
605 }; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
606 break; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
607 case DIRVIEW_TREE: |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
608 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
609 if (!vd->click_fd) return; |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
610 dir_fd = vd->click_fd; |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
611 }; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
612 break; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
613 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
614 |
1231
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1230
diff
changeset
|
615 file_util_create_dir(dir_fd, widget, vd_pop_menu_new_rename_cb, vd); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
616 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
617 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
618 static void vd_pop_menu_rename_cb(GtkWidget *widget, gpointer data) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
619 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
620 ViewDir *vd = data; |
442 | 621 |
389
cc1094d922dd
Merge few more vdlist/vdtree functions.
Laurent Monin <geeqie@norz.org>
parents:
388
diff
changeset
|
622 vd_rename_by_data(vd, vd->click_fd); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
623 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
624 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
625 GtkWidget *vd_pop_menu(ViewDir *vd, FileData *fd) |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
626 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
627 GtkWidget *menu; |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
628 gboolean active; |
1437 | 629 gboolean rename_delete_active = FALSE; |
630 gboolean new_folder_active = FALSE; | |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
631 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
632 active = (fd != NULL); |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
633 switch (vd->type) |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
634 { |
392
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
635 case DIRVIEW_LIST: |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
636 { |
392
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
637 /* check using . (always row 0) */ |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
638 new_folder_active = (vd->dir_fd && access_file(vd->dir_fd->path , W_OK | X_OK)); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
639 |
392
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
640 /* ignore .. and . */ |
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
641 rename_delete_active = (new_folder_active && fd && |
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
642 strcmp(fd->name, ".") != 0 && |
442 | 643 strcmp(fd->name, "..") != 0 && |
644 access_file(fd->path, W_OK | X_OK)); | |
392
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
645 }; |
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
646 break; |
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
647 case DIRVIEW_TREE: |
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
648 { |
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
649 if (fd) |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
650 { |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
651 gchar *parent; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
652 new_folder_active = (fd && access_file(fd->path, W_OK | X_OK)); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
653 parent = remove_level_from_path(fd->path); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
654 rename_delete_active = access_file(parent, W_OK | X_OK); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
655 g_free(parent); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
656 }; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
657 } |
392
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
658 break; |
ca6a17f915e4
Fix new folder feature in dirlist mode, it was broken by revision 481.
Laurent Monin <geeqie@norz.org>
parents:
391
diff
changeset
|
659 } |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
660 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
661 menu = popup_menu_short_lived(); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
662 g_signal_connect(G_OBJECT(menu), "destroy", |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
663 G_CALLBACK(vd_popup_destroy_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
664 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
665 menu_item_add_stock_sensitive(menu, _("_Up to parent"), GTK_STOCK_GO_UP, |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
753
diff
changeset
|
666 (vd->dir_fd && strcmp(vd->dir_fd->path, G_DIR_SEPARATOR_S) != 0), |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
667 G_CALLBACK(vd_pop_menu_up_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
668 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
669 menu_item_add_divider(menu); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
670 menu_item_add_sensitive(menu, _("_Slideshow"), active, |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
671 G_CALLBACK(vd_pop_menu_slide_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
672 menu_item_add_sensitive(menu, _("Slideshow recursive"), active, |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
673 G_CALLBACK(vd_pop_menu_slide_rec_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
674 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
675 menu_item_add_divider(menu); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
676 menu_item_add_stock_sensitive(menu, _("Find _duplicates..."), GTK_STOCK_FIND, active, |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
677 G_CALLBACK(vd_pop_menu_dupe_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
678 menu_item_add_stock_sensitive(menu, _("Find duplicates recursive..."), GTK_STOCK_FIND, active, |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
679 G_CALLBACK(vd_pop_menu_dupe_rec_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
680 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
681 menu_item_add_divider(menu); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
682 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
683 menu_item_add_sensitive(menu, _("_New folder..."), new_folder_active, |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
684 G_CALLBACK(vd_pop_menu_new_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
685 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
686 menu_item_add_sensitive(menu, _("_Rename..."), rename_delete_active, |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
687 G_CALLBACK(vd_pop_menu_rename_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
688 |
1513
e557cd82d138
dropped show_copy_path option
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1498
diff
changeset
|
689 menu_item_add(menu, _("_Copy path"), |
e557cd82d138
dropped show_copy_path option
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1498
diff
changeset
|
690 G_CALLBACK(vd_pop_menu_copy_path_cb), vd); |
522
e84b21870d68
Allow to copy the path of a directory to clipboard from directory views.
Laurent Monin <geeqie@norz.org>
parents:
512
diff
changeset
|
691 |
2663
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
692 menu_item_add(menu, _("_Copy path unquoted"), |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
693 G_CALLBACK(vd_pop_menu_copy_path_unquoted_cb), vd); |
3e6d26094fb4
Fix #520: copy path inserts quotes around path
Colin Clark <colin.clark@cclark.uk>
parents:
2572
diff
changeset
|
694 |
2572
31c6e3c9163e
Fix #505: ‘Copy path’ and ‘Delete’ are too close in the drop down menu
Colin Clark <colin.clark@cclark.uk>
parents:
2426
diff
changeset
|
695 menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, rename_delete_active, |
31c6e3c9163e
Fix #505: ‘Copy path’ and ‘Delete’ are too close in the drop down menu
Colin Clark <colin.clark@cclark.uk>
parents:
2426
diff
changeset
|
696 G_CALLBACK(vd_pop_menu_delete_cb), vd); |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
697 menu_item_add_divider(menu); |
442 | 698 |
1666
1285de1ad012
created Files and Folders submenu
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
699 |
2181
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2040
diff
changeset
|
700 menu_item_add_radio(menu, _("View as _List"), GINT_TO_POINTER(DIRVIEW_LIST), vd->type == DIRVIEW_LIST, |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2040
diff
changeset
|
701 G_CALLBACK(vd_pop_submenu_dir_view_as_cb), vd); |
417
4171f168347a
Fix directory view popup menu to display a View As submenu
Laurent Monin <geeqie@norz.org>
parents:
407
diff
changeset
|
702 |
2181
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2040
diff
changeset
|
703 menu_item_add_radio(menu, _("View as _Tree"), GINT_TO_POINTER(DIRVIEW_TREE), vd->type == DIRVIEW_TREE, |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2040
diff
changeset
|
704 G_CALLBACK(vd_pop_submenu_dir_view_as_cb), vd); |
1666
1285de1ad012
created Files and Folders submenu
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
705 |
1285de1ad012
created Files and Folders submenu
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
706 menu_item_add_divider(menu); |
417
4171f168347a
Fix directory view popup menu to display a View As submenu
Laurent Monin <geeqie@norz.org>
parents:
407
diff
changeset
|
707 |
388
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
708 menu_item_add_check(menu, _("Show _hidden files"), options->file_filter.show_hidden_files, |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
709 G_CALLBACK(vd_toggle_show_hidden_files_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
710 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
711 menu_item_add_stock(menu, _("Re_fresh"), GTK_STOCK_REFRESH, |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
712 G_CALLBACK(vd_pop_menu_refresh_cb), vd); |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
713 |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
714 return menu; |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
715 } |
5e8bef8d014a
Make directory view popup menu common and move it to view_dir.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
384
diff
changeset
|
716 |
1637
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
717 void vd_new_folder(ViewDir *vd, FileData *dir_fd) |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
718 { |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
719 file_util_create_dir(dir_fd, vd->widget, vd_pop_menu_new_rename_cb, vd); |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
720 } |
f82f5ef47061
unify code paths for New directory
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1628
diff
changeset
|
721 |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
722 /* |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
723 *----------------------------------------------------------------------------- |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
724 * dnd |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
725 *----------------------------------------------------------------------------- |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
726 */ |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
727 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
728 static GtkTargetEntry vd_dnd_drop_types[] = { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
729 { "text/uri-list", 0, TARGET_URI_LIST } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
730 }; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
731 static gint vd_dnd_drop_types_count = 1; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
732 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
733 static void vd_dest_set(ViewDir *vd, gint enable) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
734 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
735 if (enable) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
736 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
737 gtk_drag_dest_set(vd->view, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
738 GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
739 vd_dnd_drop_types, vd_dnd_drop_types_count, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
740 GDK_ACTION_MOVE | GDK_ACTION_COPY); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
741 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
742 else |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
743 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
744 gtk_drag_dest_unset(vd->view); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
745 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
746 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
747 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
748 static void vd_dnd_get(GtkWidget *widget, GdkDragContext *context, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
749 GtkSelectionData *selection_data, guint info, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
750 guint time, gpointer data) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
751 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
752 ViewDir *vd = data; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
753 GList *list; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
754 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
755 if (!vd->click_fd) return; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
756 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
757 switch (info) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
758 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
759 case TARGET_URI_LIST: |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
760 case TARGET_TEXT_PLAIN: |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
761 list = g_list_prepend(NULL, vd->click_fd); |
2040 | 762 uri_selection_data_set_uris_from_filelist(selection_data, list); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
763 g_list_free(list); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
764 break; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
765 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
766 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
767 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
768 static void vd_dnd_begin(GtkWidget *widget, GdkDragContext *context, gpointer data) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
769 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
770 ViewDir *vd = data; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
771 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
772 vd_color_set(vd, vd->click_fd, TRUE); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
773 vd_dest_set(vd, FALSE); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
774 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
775 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
776 static void vd_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
777 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
778 ViewDir *vd = data; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
779 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
780 vd_color_set(vd, vd->click_fd, FALSE); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
781 |
2034
9297985567b5
use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2021
diff
changeset
|
782 if (vd->type == DIRVIEW_LIST && gdk_drag_context_get_selected_action(context) == GDK_ACTION_MOVE) |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
783 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
784 vd_refresh(vd); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
785 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
786 vd_dest_set(vd, TRUE); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
787 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
788 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
789 static void vd_dnd_drop_receive(GtkWidget *widget, |
511 | 790 GdkDragContext *context, gint x, gint y, |
791 GtkSelectionData *selection_data, guint info, | |
792 guint time, gpointer data) | |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
793 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
794 ViewDir *vd = data; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
795 GtkTreePath *tpath; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
796 FileData *fd = NULL; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
797 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
798 vd->click_fd = NULL; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
799 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
800 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), x, y, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
801 &tpath, NULL, NULL, NULL)) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
802 { |
399
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
803 fd = vd_get_fd_from_tree_path(vd, GTK_TREE_VIEW(widget), tpath); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
804 gtk_tree_path_free(tpath); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
805 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
806 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
807 if (!fd) return; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
808 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
809 if (info == TARGET_URI_LIST) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
810 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
811 GList *list; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
812 gint active; |
1437 | 813 gboolean done = FALSE; |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
814 |
2040 | 815 list = uri_filelist_from_gtk_selection_data(selection_data); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
816 if (!list) return; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
817 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
818 active = access_file(fd->path, W_OK | X_OK); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
819 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
820 vd_color_set(vd, fd, TRUE); |
494
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
821 |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
822 if (active) |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
823 { |
2034
9297985567b5
use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2021
diff
changeset
|
824 if (gdk_drag_context_get_actions(context) == GDK_ACTION_COPY) |
494
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
825 { |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
826 file_util_copy_simple(list, fd->path, vd->widget); |
494
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
827 done = TRUE; |
1656
84034de67e74
fixed leak in file_util_* functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1637
diff
changeset
|
828 list = NULL; |
494
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
829 } |
2034
9297985567b5
use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2021
diff
changeset
|
830 else if (gdk_drag_context_get_actions(context) == GDK_ACTION_MOVE) |
494
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
831 { |
753
cffccbff200a
rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
736
diff
changeset
|
832 file_util_move_simple(list, fd->path, vd->widget); |
494
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
833 done = TRUE; |
1656
84034de67e74
fixed leak in file_util_* functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1637
diff
changeset
|
834 list = NULL; |
494
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
835 } |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
836 } |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
837 |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
838 if (done == FALSE) |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
839 { |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
840 vd->popup = vd_drop_menu(vd, active); |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
841 gtk_menu_popup(GTK_MENU(vd->popup), NULL, NULL, NULL, NULL, 0, time); |
fbb4ef90cf96
Honor Control and Shift keys while drag'n'droping files
Laurent Monin <geeqie@norz.org>
parents:
475
diff
changeset
|
842 } |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
843 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
844 vd->drop_fd = fd; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
845 vd->drop_list = list; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
846 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
847 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
848 |
407
f441b932ed5c
Rename vd_drop_update() to vd_dnd_drop_update().
Laurent Monin <geeqie@norz.org>
parents:
405
diff
changeset
|
849 static void vd_dnd_drop_update(ViewDir *vd, gint x, gint y) |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
850 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
851 GtkTreePath *tpath; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
852 FileData *fd = NULL; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
853 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
854 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vd->view), x, y, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
855 &tpath, NULL, NULL, NULL)) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
856 { |
399
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
857 fd = vd_get_fd_from_tree_path(vd, GTK_TREE_VIEW(vd->view), tpath); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
858 gtk_tree_path_free(tpath); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
859 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
860 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
861 if (fd != vd->drop_fd) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
862 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
863 vd_color_set(vd, vd->drop_fd, FALSE); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
864 vd_color_set(vd, fd, TRUE); |
407
f441b932ed5c
Rename vd_drop_update() to vd_dnd_drop_update().
Laurent Monin <geeqie@norz.org>
parents:
405
diff
changeset
|
865 if (fd && vd->dnd_drop_update_func) vd->dnd_drop_update_func(vd); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
866 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
867 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
868 vd->drop_fd = fd; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
869 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
870 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
871 void vd_dnd_drop_scroll_cancel(ViewDir *vd) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
872 { |
1523
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1513
diff
changeset
|
873 if (vd->drop_scroll_id) |
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1513
diff
changeset
|
874 { |
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1513
diff
changeset
|
875 g_source_remove(vd->drop_scroll_id); |
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1513
diff
changeset
|
876 vd->drop_scroll_id = 0; |
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1513
diff
changeset
|
877 } |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
878 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
879 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
880 static gboolean vd_auto_scroll_idle_cb(gpointer data) |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
881 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
882 ViewDir *vd = data; |
2373
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
883 #if GTK_CHECK_VERSION(3,0,0) |
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
884 GdkDeviceManager *device_manager; |
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
885 GdkDevice *device; |
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
886 #endif |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
887 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
888 if (vd->drop_fd) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
889 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
890 GdkWindow *window; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
891 gint x, y; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
892 gint w, h; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
893 |
2034
9297985567b5
use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2021
diff
changeset
|
894 window = gtk_widget_get_window(vd->view); |
2373
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
895 #if GTK_CHECK_VERSION(3,0,0) |
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
896 device_manager = gdk_display_get_device_manager(gdk_window_get_display(window)); |
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
897 device = gdk_device_manager_get_client_pointer(device_manager); |
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
898 gdk_window_get_device_position(window, device, &x, &y, NULL); |
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
899 #else |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
900 gdk_window_get_pointer(window, &x, &y, NULL); |
2373
b7228e6b2a02
Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents:
2350
diff
changeset
|
901 #endif |
2034
9297985567b5
use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2021
diff
changeset
|
902 w = gdk_window_get_width(window); |
9297985567b5
use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2021
diff
changeset
|
903 h = gdk_window_get_height(window); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
904 if (x >= 0 && x < w && y >= 0 && y < h) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
905 { |
407
f441b932ed5c
Rename vd_drop_update() to vd_dnd_drop_update().
Laurent Monin <geeqie@norz.org>
parents:
405
diff
changeset
|
906 vd_dnd_drop_update(vd, x, y); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
907 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
908 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
909 |
1523
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1513
diff
changeset
|
910 vd->drop_scroll_id = 0; |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
911 return FALSE; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
912 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
913 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
914 static gboolean vd_auto_scroll_notify_cb(GtkWidget *widget, gint x, gint y, gpointer data) |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
915 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
916 ViewDir *vd = data; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
917 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
918 if (!vd->drop_fd || vd->drop_list) return FALSE; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
919 |
1523
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1513
diff
changeset
|
920 if (!vd->drop_scroll_id) vd->drop_scroll_id = g_idle_add(vd_auto_scroll_idle_cb, vd); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
921 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
922 return TRUE; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
923 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
924 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
925 static gboolean vd_dnd_drop_motion(GtkWidget *widget, GdkDragContext *context, |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
926 gint x, gint y, guint time, gpointer data) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
927 { |
442 | 928 ViewDir *vd = data; |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
929 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
930 vd->click_fd = NULL; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
931 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
932 if (gtk_drag_get_source_widget(context) == vd->view) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
933 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
934 /* from same window */ |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
935 gdk_drag_status(context, 0, time); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
936 return TRUE; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
937 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
938 else |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
939 { |
2034
9297985567b5
use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2021
diff
changeset
|
940 gdk_drag_status(context, gdk_drag_context_get_suggested_action(context), time); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
941 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
942 |
407
f441b932ed5c
Rename vd_drop_update() to vd_dnd_drop_update().
Laurent Monin <geeqie@norz.org>
parents:
405
diff
changeset
|
943 vd_dnd_drop_update(vd, x, y); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
944 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
945 if (vd->drop_fd) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
946 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
947 GtkAdjustment *adj = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(vd->view)); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
948 widget_auto_scroll_start(vd->view, adj, -1, -1, vd_auto_scroll_notify_cb, vd); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
949 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
950 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
951 return FALSE; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
952 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
953 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
954 static void vd_dnd_drop_leave(GtkWidget *widget, GdkDragContext *context, guint time, gpointer data) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
955 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
956 ViewDir *vd = data; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
957 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
958 if (vd->drop_fd != vd->click_fd) vd_color_set(vd, vd->drop_fd, FALSE); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
959 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
960 vd->drop_fd = NULL; |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
961 |
407
f441b932ed5c
Rename vd_drop_update() to vd_dnd_drop_update().
Laurent Monin <geeqie@norz.org>
parents:
405
diff
changeset
|
962 if (vd->dnd_drop_leave_func) vd->dnd_drop_leave_func(vd); |
394
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
963 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
964 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
965 void vd_dnd_init(ViewDir *vd) |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
966 { |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
967 gtk_drag_source_set(vd->view, GDK_BUTTON1_MASK | GDK_BUTTON2_MASK, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
968 dnd_file_drag_types, dnd_file_drag_types_count, |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
969 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_ASK); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
970 g_signal_connect(G_OBJECT(vd->view), "drag_data_get", |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
971 G_CALLBACK(vd_dnd_get), vd); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
972 g_signal_connect(G_OBJECT(vd->view), "drag_begin", |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
973 G_CALLBACK(vd_dnd_begin), vd); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
974 g_signal_connect(G_OBJECT(vd->view), "drag_end", |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
975 G_CALLBACK(vd_dnd_end), vd); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
976 |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
977 vd_dest_set(vd, TRUE); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
978 g_signal_connect(G_OBJECT(vd->view), "drag_data_received", |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
979 G_CALLBACK(vd_dnd_drop_receive), vd); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
980 g_signal_connect(G_OBJECT(vd->view), "drag_motion", |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
981 G_CALLBACK(vd_dnd_drop_motion), vd); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
982 g_signal_connect(G_OBJECT(vd->view), "drag_leave", |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
983 G_CALLBACK(vd_dnd_drop_leave), vd); |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
984 } |
ae99e42db2f1
Merge dirlist/dirview dnd code.
Laurent Monin <geeqie@norz.org>
parents:
392
diff
changeset
|
985 |
395
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
986 /* |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
987 *---------------------------------------------------------------------------- |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
988 * callbacks |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
989 *---------------------------------------------------------------------------- |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
990 */ |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
991 |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
992 void vd_menu_position_cb(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data) |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
993 { |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
994 ViewDir *vd = data; |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
995 GtkTreeModel *store; |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
996 GtkTreeIter iter; |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
997 GtkTreePath *tpath; |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
998 gint cw, ch; |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
999 |
1553
6d5f62b0eef7
fixed tests for vd_find_row return value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1523
diff
changeset
|
1000 if (!vd_find_row(vd, vd->click_fd, &iter)) return; |
395
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
1001 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
1002 tpath = gtk_tree_model_get_path(store, &iter); |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
1003 tree_view_get_cell_clamped(GTK_TREE_VIEW(vd->view), tpath, 0, TRUE, x, y, &cw, &ch); |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
1004 gtk_tree_path_free(tpath); |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
1005 *y += ch; |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
1006 popup_menu_position_clamp(menu, x, y, 0); |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
1007 } |
3df085acd9f9
Move common menu position callback to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
394
diff
changeset
|
1008 |
396
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1009 void vd_activate_cb(GtkTreeView *tview, GtkTreePath *tpath, GtkTreeViewColumn *column, gpointer data) |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1010 { |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1011 ViewDir *vd = data; |
399
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
1012 FileData *fd = vd_get_fd_from_tree_path(vd, tview, tpath); |
396
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1013 |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1014 vd_select_row(vd, fd); |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1015 } |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1016 |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1017 static GdkColor *vd_color_shifted(GtkWidget *widget) |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1018 { |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1019 static GdkColor color; |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1020 static GtkWidget *done = NULL; |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1021 |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1022 if (done != widget) |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1023 { |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1024 GtkStyle *style; |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1025 |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1026 style = gtk_widget_get_style(widget); |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1027 memcpy(&color, &style->base[GTK_STATE_NORMAL], sizeof(color)); |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1028 shift_color(&color, -1, 0); |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1029 done = widget; |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1030 } |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1031 |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1032 return &color; |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1033 } |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1034 |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1035 void vd_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1036 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1037 { |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1038 ViewDir *vd = data; |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1039 gboolean set; |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1040 |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1041 gtk_tree_model_get(tree_model, iter, DIR_COLUMN_COLOR, &set, -1); |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1042 g_object_set(G_OBJECT(cell), |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1043 "cell-background-gdk", vd_color_shifted(vd->view), |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1044 "cell-background-set", set, NULL); |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1045 } |
039f140aa8dc
Merge few more functions to view_dir.c.
Laurent Monin <geeqie@norz.org>
parents:
395
diff
changeset
|
1046 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
1047 gboolean vd_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) |
397
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1048 { |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1049 ViewDir *vd = data; |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1050 GtkTreePath *tpath; |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1051 FileData *fd = NULL; |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1052 |
2376
6c310168a91c
Add four new preferences
Maciej S. Szmigiero <mail@maciej.szmigiero.name>
parents:
2373
diff
changeset
|
1053 if (vd->type == DIRVIEW_LIST && !options->view_dir_list_single_click_enter) |
6c310168a91c
Add four new preferences
Maciej S. Szmigiero <mail@maciej.szmigiero.name>
parents:
2373
diff
changeset
|
1054 return FALSE; |
6c310168a91c
Add four new preferences
Maciej S. Szmigiero <mail@maciej.szmigiero.name>
parents:
2373
diff
changeset
|
1055 |
400
bf1ab4d8c66b
Fix a bug introduced in revision 489.
Laurent Monin <geeqie@norz.org>
parents:
399
diff
changeset
|
1056 if (!vd->click_fd) return FALSE; |
397
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1057 vd_color_set(vd, vd->click_fd, FALSE); |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1058 |
448
2c1500b5c933
Use explicit names for mouse buttons instead of numbers.
Laurent Monin <geeqie@norz.org>
parents:
442
diff
changeset
|
1059 if (bevent->button != MOUSE_BUTTON_LEFT) return TRUE; |
397
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1060 |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1061 if ((bevent->x != 0 || bevent->y != 0) && |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1062 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y, |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1063 &tpath, NULL, NULL, NULL)) |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1064 { |
399
e6690e137fc6
Reduce code redundancy with the introduction of a new
Laurent Monin <geeqie@norz.org>
parents:
397
diff
changeset
|
1065 fd = vd_get_fd_from_tree_path(vd, GTK_TREE_VIEW(widget), tpath); |
397
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1066 gtk_tree_path_free(tpath); |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1067 } |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1068 |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1069 if (fd && vd->click_fd == fd) |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1070 { |
1628
ac33c60e405e
simplified the code around vd_select_row
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1612
diff
changeset
|
1071 vd_select_row(vd, vd->click_fd); |
397
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1072 } |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1073 |
400
bf1ab4d8c66b
Fix a bug introduced in revision 489.
Laurent Monin <geeqie@norz.org>
parents:
399
diff
changeset
|
1074 return FALSE; |
397
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1075 } |
6377db24e371
Merge vd(list|tree)_release_cb() in vd_release_cb().
Laurent Monin <geeqie@norz.org>
parents:
396
diff
changeset
|
1076 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
1077 gboolean vd_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) |
401
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1078 { |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1079 ViewDir *vd = data; |
1437 | 1080 gboolean ret = FALSE; |
401
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1081 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
1082 switch (vd->type) |
401
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1083 { |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1084 case DIRVIEW_LIST: ret = vdlist_press_key_cb(widget, event, data); break; |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1085 case DIRVIEW_TREE: ret = vdtree_press_key_cb(widget, event, data); break; |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1086 } |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1087 |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1088 return ret; |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1089 } |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1090 |
1452
8a37a1a4bc67
gint -> gboolean where applicable.
Laurent Monin <geeqie@norz.org>
parents:
1437
diff
changeset
|
1091 gboolean vd_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) |
401
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1092 { |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1093 ViewDir *vd = data; |
1437 | 1094 gboolean ret = FALSE; |
401
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1095 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1284
diff
changeset
|
1096 switch (vd->type) |
401
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1097 { |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1098 case DIRVIEW_LIST: ret = vdlist_press_cb(widget, bevent, data); break; |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1099 case DIRVIEW_TREE: ret = vdtree_press_cb(widget, bevent, data); break; |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1100 } |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1101 |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1102 return ret; |
7dc6fdbdfef9
Add some wrappers in view_dir.c and simplify even more.
Laurent Monin <geeqie@norz.org>
parents:
400
diff
changeset
|
1103 } |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1104 |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1105 static void vd_notify_cb(FileData *fd, NotifyType type, gpointer data) |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1106 { |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1107 ViewDir *vd = data; |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1108 gboolean refresh; |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1109 gchar *base; |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1110 |
945
337c15abd3be
speed-up of directory notification on deleting large number of files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
943
diff
changeset
|
1111 if (!S_ISDIR(fd->mode)) return; /* this gives correct results even on recently deleted files/directories */ |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1112 |
1498
2b0712dcf139
improved debug messages
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1452
diff
changeset
|
1113 DEBUG_1("Notify vd: %s %04x", fd->path, type); |
2b0712dcf139
improved debug messages
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1452
diff
changeset
|
1114 |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1115 base = remove_level_from_path(fd->path); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1116 |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1117 if (vd->type == DIRVIEW_LIST) |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1118 { |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1119 refresh = (fd == vd->dir_fd); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1120 |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1121 if (!refresh) |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1122 { |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1123 refresh = (strcmp(base, vd->dir_fd->path) == 0); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1124 } |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1125 |
1432
7f454e7d07a3
improved notification system
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1413
diff
changeset
|
1126 if ((type & NOTIFY_CHANGE) && fd->change) |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1127 { |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1128 if (!refresh && fd->change->dest) |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1129 { |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1130 gchar *dest_base = remove_level_from_path(fd->change->dest); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1131 refresh = (strcmp(dest_base, vd->dir_fd->path) == 0); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1132 g_free(dest_base); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1133 } |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1134 |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1135 if (!refresh && fd->change->source) |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1136 { |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1137 gchar *source_base = remove_level_from_path(fd->change->source); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1138 refresh = (strcmp(source_base, vd->dir_fd->path) == 0); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1139 g_free(source_base); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1140 } |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1141 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2181
diff
changeset
|
1142 |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1143 if (refresh) vd_refresh(vd); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1144 } |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1145 |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1146 if (vd->type == DIRVIEW_TREE) |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1147 { |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1148 GtkTreeIter iter; |
1927
d1a5b8633919
always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1802
diff
changeset
|
1149 FileData *base_fd = file_data_new_dir(base); |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1150 |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1151 if (vd_find_row(vd, base_fd, &iter)) |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1152 { |
943
80a103f6e5a3
improved updating of view_dir_tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
917
diff
changeset
|
1153 vdtree_populate_path_by_iter(vd, &iter, TRUE, vd->dir_fd); |
995 | 1154 } |
907
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1155 |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1156 file_data_unref(base_fd); |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1157 } |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1158 |
598938add3af
added notification handler to view_dir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
904
diff
changeset
|
1159 g_free(base); |
917
ed703ede9861
Fix missing newline at end of file.
Laurent Monin <geeqie@norz.org>
parents:
907
diff
changeset
|
1160 } |
1055
4bbdfab3c89a
Adding a vim modeline to all files - patch by Klaus Ethgen
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
995
diff
changeset
|
1161 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |