annotate src/view_file_icon.c @ 1622:9e6cdef3bc3d

changed selection behavior as requested at http://sourceforge.net/tracker/?func=detail&aid=2789933&group_id=222125&atid=1054680 file view - sidecars are added to the selection if they were expicitly selected or if the entry is collapsed icon view - selection always contains sidecars file operations splits partially selected groups - selected files have disabled grouping
author nadvornik
date Tue, 02 Jun 2009 22:33:53 +0000
parents 7d631a8de48e
children 1e3bbaa772b9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1 /*
196
f6e307c7bad6 rename GQview -> Geeqie over the code
nadvornik
parents: 167
diff changeset
2 * Geeqie
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
3 * (C) 2006 John Ellis
1284
8b89e3ff286b Add year 2009 to copyright info everywhere.
zas_
parents: 1264
diff changeset
4 * Copyright (C) 2008 - 2009 The Geeqie Team
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
12
281
9995c5fb202a gqview.h -> main.h
zas_
parents: 272
diff changeset
13 #include "main.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14 #include "view_file_icon.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
16 #include "bar.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
17 #include "cellrenderericon.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include "collect.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
19 #include "collect-io.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
20 #include "collect-table.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
21 #include "dnd.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
22 #include "editors.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
23 #include "img-view.h"
586
905688aa2317 split filelist.c to filefilter.c and filedata.c
nadvornik
parents: 585
diff changeset
24 #include "filedata.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25 #include "layout.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26 #include "layout_image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27 #include "menu.h"
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
28 #include "metadata.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
29 #include "thumb.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
30 #include "utilops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
31 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
32 #include "ui_menu.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
33 #include "ui_tree_edit.h"
904
1698baa37871 Move uri_*() functions to separate files: uri_utils.[ch]
zas_
parents: 852
diff changeset
34 #include "uri_utils.h"
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
35 #include "view_file.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
36
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
37 #include <gdk/gdkkeysyms.h> /* for keyboard values */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
38
557
d8d61dc4ff52 Introduce ViewFileInfoList and ViewFileInfoIcon (not used yet).
zas_
parents: 516
diff changeset
39
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
40 /* between these, the icon width is increased by thumb_max_width / 2 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41 #define THUMB_MIN_ICON_WIDTH 128
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
42 #define THUMB_MAX_ICON_WIDTH 150
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
43
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
44 #define VFICON_MAX_COLUMNS 32
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45 #define THUMB_BORDER_PADDING 2
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
46
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
47 #define VFICON_TIP_DELAY 500
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
48
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
49 enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
50 FILE_COLUMN_POINTER = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
51 FILE_COLUMN_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
52 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
53
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
54 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
55 SELECTION_NONE = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
56 SELECTION_SELECTED = 1 << 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
57 SELECTION_PRELIGHT = 1 << 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
58 SELECTION_FOCUS = 1 << 2
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
59 } SelectionType;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
60
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
61 typedef struct _IconData IconData;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
62 struct _IconData
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
63 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
64 SelectionType selected;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
65 FileData *fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
66 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
67
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
68 static gint vficon_index_by_id(ViewFile *vf, IconData *in_id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
69
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
70 static IconData *vficon_icon_data(ViewFile *vf, FileData *fd)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
71 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
72 IconData *id = NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
73 GList *work;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
74
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
75 if (!fd) return NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
76 work = vf->list;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
77 while (work && !id)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
78 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
79 IconData *chk = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
80 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
81 if (chk->fd == fd) id = chk;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
82 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
83 return id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
84 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
85
812
d29c2d191c58 use vficon_refresh for updating
nadvornik
parents: 811
diff changeset
86 #if 0
d29c2d191c58 use vficon_refresh for updating
nadvornik
parents: 811
diff changeset
87 /* not used */
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
88 static gint iconlist_read(FileData *dir_fd, GList **list)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
89 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
90 GList *temp;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
91 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
92
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
93 if (!filelist_read(dir_fd, &temp, NULL)) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
94
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
95 work = temp;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
96 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
97 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
98 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
99 IconData *id;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101 fd = work->data;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
102 g_assert(fd->magick == 0x12345678);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
103 id = g_new0(IconData, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
104
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
105 id->selected = SELECTION_NONE;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
106 id->fd = fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
107
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
108 work->data = id;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
110 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
111
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
112 *list = temp;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
113
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
114 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
115 }
812
d29c2d191c58 use vficon_refresh for updating
nadvornik
parents: 811
diff changeset
116 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
117
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
118 static void iconlist_free(GList *list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
119 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
120 GList *work = list;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
121 while (work)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
122 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
123 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
124 file_data_unref(id->fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
125 g_free(id);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
126 work = work->next;
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
127 }
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
128
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
129 g_list_free(list);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
130
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
131 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
132
1002
3096a47232ec Use gpointer instead of void *.
zas_
parents: 996
diff changeset
133 gint iconlist_sort_file_cb(gpointer a, gpointer b)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
134 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
135 IconData *ida = a;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
136 IconData *idb = b;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
137 return filelist_sort_compare_filedata(ida->fd, idb->fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
138 }
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
139
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
140 GList *iconlist_sort(GList *list, SortType method, gboolean ascend)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
141 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
142 return filelist_sort_full(list, method, ascend, (GCompareFunc) iconlist_sort_file_cb);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
143 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
144
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
145 GList *iconlist_insert_sort(GList *list, IconData *id, SortType method, gboolean ascend)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
146 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
147 return filelist_insert_sort_full(list, id, method, ascend, (GCompareFunc) iconlist_sort_file_cb);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
148 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
149
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
150
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
151 static void vficon_toggle_filenames(ViewFile *vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
152 static void vficon_selection_remove(ViewFile *vf, IconData *id, SelectionType mask, GtkTreeIter *iter);
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
153 static void vficon_move_focus(ViewFile *vf, gint row, gint col, gboolean relative);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
154 static void vficon_set_focus(ViewFile *vf, IconData *id);
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
155 static void vficon_populate_at_new_size(ViewFile *vf, gint w, gint h, gboolean force);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
156
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
157
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
158 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
159 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
160 * pop-up menu
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
161 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
162 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
163
634
92208e71673b Introduce vf_pop_menu_file_list() as a wrapper to
zas_
parents: 633
diff changeset
164 GList *vficon_pop_menu_file_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
165 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
166 if (!VFICON(vf)->click_id) return NULL;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
167
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
168 if (VFICON(vf)->click_id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
169 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
170 return vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
171 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
172
1622
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
173
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
174 return g_list_prepend(filelist_copy(VFICON(vf)->click_id->fd->sidecar_files), file_data_ref(VFICON(vf)->click_id->fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
175 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
176
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
177 void vficon_pop_menu_view_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
178 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
179 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
180
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
181 if (!VFICON(vf)->click_id) return;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
182
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
183 if (VFICON(vf)->click_id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
184 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
185 GList *list;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
186
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
187 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
188 view_window_new_from_list(list);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
189 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
190 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
191 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
192 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
193 view_window_new(VFICON(vf)->click_id->fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
194 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
195 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
196
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
197 void vficon_pop_menu_rename_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
198 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
199 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
200
634
92208e71673b Introduce vf_pop_menu_file_list() as a wrapper to
zas_
parents: 633
diff changeset
201 file_util_rename(NULL, vf_pop_menu_file_list(vf), vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
203
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
204 void vficon_pop_menu_show_names_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
205 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
206 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
207
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
208 vficon_toggle_filenames(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
209 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
210
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
211 void vficon_pop_menu_refresh_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
213 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
214
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
215 vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
216 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
217
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
218 void vficon_popup_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
219 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
220 ViewFile *vf = data;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
221 vficon_selection_remove(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, NULL);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
222 VFICON(vf)->click_id = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
223 vf->popup = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
224 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
225
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
226 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
227 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
228 * signals
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
229 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
230 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
231
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
232 static void vficon_send_layout_select(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
233 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
234 FileData *read_ahead_fd = NULL;
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
235 FileData *sel_fd;
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
236 FileData *cur_fd;
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
237
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
238 if (!vf->layout || !id || !id->fd) return;
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
239
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
240 sel_fd = id->fd;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
241
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
242 cur_fd = layout_image_get_fd(vf->layout);
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
243 if (sel_fd == cur_fd) return; /* no change */
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
244
334
df868b947aa0 Rename image-related options.
zas_
parents: 333
diff changeset
245 if (options->image.enable_read_ahead)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247 gint row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
248
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
249 row = g_list_index(vf->list, id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
250 if (row > vficon_index_by_fd(vf, cur_fd) &&
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 671
diff changeset
251 (guint) (row + 1) < vf_count(vf, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
253 read_ahead_fd = vf_index_get_data(vf, row + 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255 else if (row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
257 read_ahead_fd = vf_index_get_data(vf, row - 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
258 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
259 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
260
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
261 layout_image_set_with_ahead(vf->layout, sel_fd, read_ahead_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
263
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
264 static void vficon_toggle_filenames(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
265 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
266 VFICON(vf)->show_text = !VFICON(vf)->show_text;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
267 options->show_icon_names = VFICON(vf)->show_text;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
268
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
269 vficon_populate_at_new_size(vf, vf->listview->allocation.width, vf->listview->allocation.height, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
271
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
272 static gint vficon_get_icon_width(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
273 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274 gint width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
275
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
276 if (!VFICON(vf)->show_text) return options->thumbnails.max_width;
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
277
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
278 width = options->thumbnails.max_width + options->thumbnails.max_width / 2;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
279 if (width < THUMB_MIN_ICON_WIDTH) width = THUMB_MIN_ICON_WIDTH;
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
280 if (width > THUMB_MAX_ICON_WIDTH) width = options->thumbnails.max_width;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
282 return width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
283 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
284
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
285 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
286 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
287 * misc utils
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
288 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
289 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
290
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
291 static gboolean vficon_find_position(ViewFile *vf, IconData *id, gint *row, gint *col)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
292 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
293 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
294
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
295 n = g_list_index(vf->list, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
296
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297 if (n < 0) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
298
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
299 *row = n / VFICON(vf)->columns;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
300 *col = n - (*row * VFICON(vf)->columns);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
301
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
302 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
303 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
304
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
305 static gboolean vficon_find_iter(ViewFile *vf, IconData *id, GtkTreeIter *iter, gint *column)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
306 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
308 gint row, col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
309
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
310 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
311 if (!vficon_find_position(vf, id, &row, &col)) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
312 if (!gtk_tree_model_iter_nth_child(store, iter, NULL, row)) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
313 if (column) *column = col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
314
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
315 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
316 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
317
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
318 static IconData *vficon_find_data(ViewFile *vf, gint row, gint col, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
319 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
320 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
321 GtkTreeIter p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
322
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
323 if (row < 0 || col < 0) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
324
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
325 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
326 if (gtk_tree_model_iter_nth_child(store, &p, NULL, row))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
327 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
328 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
329
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
330 gtk_tree_model_get(store, &p, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
331 if (!list) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
332
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
333 if (iter) *iter = p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
334
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
335 return g_list_nth_data(list, col);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
336 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
337
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
338 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
339 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
340
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
341 static IconData *vficon_find_data_by_coord(ViewFile *vf, gint x, gint y, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
342 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
343 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
344 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
345
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
346 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vf->listview), x, y,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
347 &tpath, &column, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
348 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
349 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
350 GtkTreeIter row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
351 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
352 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
353
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
354 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
355 gtk_tree_model_get_iter(store, &row, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
356 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
357
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
358 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
359
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
360 n = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(column), "column_number"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
361 if (list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
363 if (iter) *iter = row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
364 return g_list_nth_data(list, n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
365 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
366 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
367
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
368 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
369 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
370
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
371 static void vficon_mark_toggled_cb(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
372 {
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
373 ViewFile *vf = data;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
374 GtkTreeModel *store;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
375 GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
376 GtkTreeIter row;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
377 gint column;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
378 GList *list;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
379 guint toggled_mark;
967
eb5dbdff14f6 Move variable declaration at start of block.
zas_
parents: 966
diff changeset
380 IconData *id;
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
381
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
382 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
383 if (!path || !gtk_tree_model_get_iter(store, &row, path))
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 968
diff changeset
384 return;
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
385
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
386 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
387
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
388 column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cell), "column_number"));
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
389 g_object_get(G_OBJECT(cell), "toggled_mark", &toggled_mark, NULL);
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
390
967
eb5dbdff14f6 Move variable declaration at start of block.
zas_
parents: 966
diff changeset
391 id = g_list_nth_data(list, column);
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
392 if (id)
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
393 {
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
394 FileData *fd = id->fd;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
395 file_data_set_mark(fd, toggled_mark, !file_data_get_mark(fd, toggled_mark));
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
396 }
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
397 }
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
398
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
399
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
400 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
401 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
402 * tooltip type window
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
403 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
404 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
405
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
406 static void tip_show(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
407 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
408 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
409 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
410
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
411 if (VFICON(vf)->tip_window) return;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
412
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
413 gdk_window_get_pointer(gtk_tree_view_get_bin_window(GTK_TREE_VIEW(vf->listview)), &x, &y, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
414
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
415 VFICON(vf)->tip_id = vficon_find_data_by_coord(vf, x, y, NULL);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
416 if (!VFICON(vf)->tip_id) return;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
417
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
418 VFICON(vf)->tip_window = gtk_window_new(GTK_WINDOW_POPUP);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
419 gtk_window_set_resizable(GTK_WINDOW(VFICON(vf)->tip_window), FALSE);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
420 gtk_container_set_border_width(GTK_CONTAINER(VFICON(vf)->tip_window), 2);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
421
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
422 label = gtk_label_new(VFICON(vf)->tip_id->fd->name);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
423
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
424 g_object_set_data(G_OBJECT(VFICON(vf)->tip_window), "tip_label", label);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
425 gtk_container_add(GTK_CONTAINER(VFICON(vf)->tip_window), label);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
426 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
427
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
428 gdk_window_get_pointer(NULL, &x, &y, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
429
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
430 if (!GTK_WIDGET_REALIZED(VFICON(vf)->tip_window)) gtk_widget_realize(VFICON(vf)->tip_window);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
431 gtk_window_move(GTK_WINDOW(VFICON(vf)->tip_window), x + 16, y + 16);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
432 gtk_widget_show(VFICON(vf)->tip_window);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
433 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
434
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
435 static void tip_hide(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
436 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
437 if (VFICON(vf)->tip_window) gtk_widget_destroy(VFICON(vf)->tip_window);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
438 VFICON(vf)->tip_window = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
439 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
440
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
441 static gboolean tip_schedule_cb(gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
442 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
443 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
444 GtkWidget *window;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
445
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
446 if (!VFICON(vf)->tip_delay_id) return FALSE;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
447
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
448 window = gtk_widget_get_toplevel(vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
449
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
450 if (GTK_WIDGET_SENSITIVE(window) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
451 GTK_WINDOW(window)->has_focus)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
452 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
453 tip_show(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
454 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
455
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
456 VFICON(vf)->tip_delay_id = 0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
457 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
458 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
459
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
460 static void tip_schedule(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
461 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
462 tip_hide(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
463
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
464 if (VFICON(vf)->tip_delay_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
465 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
466 g_source_remove(VFICON(vf)->tip_delay_id);
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
467 VFICON(vf)->tip_delay_id = 0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
468 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
469
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
470 if (!VFICON(vf)->show_text)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
471 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
472 VFICON(vf)->tip_delay_id = g_timeout_add(VFICON_TIP_DELAY, tip_schedule_cb, vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
473 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
474 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
475
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
476 static void tip_unschedule(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
477 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
478 tip_hide(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
479
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
480 if (VFICON(vf)->tip_delay_id)
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
481 {
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
482 g_source_remove(VFICON(vf)->tip_delay_id);
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
483 VFICON(vf)->tip_delay_id = 0;
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1519
diff changeset
484 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
486
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
487 static void tip_update(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
488 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
489 if (VFICON(vf)->tip_window)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
490 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
491 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
492
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493 gdk_window_get_pointer(NULL, &x, &y, NULL);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
494 gtk_window_move(GTK_WINDOW(VFICON(vf)->tip_window), x + 16, y + 16);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
495
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
496 if (id != VFICON(vf)->tip_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
497 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
498 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
500 VFICON(vf)->tip_id = id;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
501
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
502 if (!VFICON(vf)->tip_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
503 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
504 tip_hide(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
505 tip_schedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
506 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
508
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
509 label = g_object_get_data(G_OBJECT(VFICON(vf)->tip_window), "tip_label");
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
510 gtk_label_set_text(GTK_LABEL(label), VFICON(vf)->tip_id->fd->name);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
512 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
513 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
514 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
515 tip_schedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
516 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
517 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
518
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
519 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
520 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
521 * dnd
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
522 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
524
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
525 static void vficon_dnd_get(GtkWidget *widget, GdkDragContext *context,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526 GtkSelectionData *selection_data, guint info,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 guint time, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
529 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
530 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
531 gchar *uri_text = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
532 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
533
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
534 if (!VFICON(vf)->click_id) return;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
535
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
536 if (VFICON(vf)->click_id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
538 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
539 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
541 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
542 list = g_list_append(NULL, file_data_ref(VFICON(vf)->click_id->fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
543 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
545 if (!list) return;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
546 uri_text = uri_text_from_filelist(list, &total, (info == TARGET_TEXT_PLAIN));
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
547 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
548
1164
3692efcbd325 Fix compilation warnings.
zas_
parents: 1055
diff changeset
549 DEBUG_1("%s", uri_text);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
550
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
551 gtk_selection_data_set(selection_data, selection_data->target,
64
04ff0df3ad2f Mon Aug 15 17:13:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
552 8, (guchar *)uri_text, total);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
553 g_free(uri_text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
554 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
555
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
556 static void vficon_drag_data_received(GtkWidget *entry_widget, GdkDragContext *context,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
557 int x, int y, GtkSelectionData *selection,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
558 guint info, guint time, gpointer data)
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
559 {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
560 ViewFile *vf = data;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
561
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
562 if (info == TARGET_TEXT_PLAIN) {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
563 IconData *id = vficon_find_data_by_coord(vf, x, y, NULL);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
564
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
565 if (id && id->fd) {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
566 /* Add keywords to file */
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
567 FileData *fd = id->fd;
1264
de24174d9e55 Silent two minor warnings: GtkSelectionData data field is guchar* while g_strndup() wants gchar * as first parameter.
zas_
parents: 1242
diff changeset
568 gchar *str = g_strndup((gchar *)selection->data, selection->length);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
569 GList *kw_list = string_to_keywords_list(str);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
570
1238
947e603a52c6 simplified metadata interface, dropped metadata_read,
nadvornik
parents: 1233
diff changeset
571 metadata_append_list(fd, KEYWORD_KEY, kw_list);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
572 string_list_free(kw_list);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
573 g_free(str);
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
574 /*
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
575 file notification should handle this automatically
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
576 if (vf->layout && vf->layout->bar_info) {
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
577 bar_set_fd(vf->layout->bar_info, id->fd);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
578 }
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
579 */
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
580 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
581 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
582 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
583
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
584 static void vficon_dnd_begin(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
585 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
586 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
587
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
588 tip_unschedule(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
589
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
590 if (VFICON(vf)->click_id && VFICON(vf)->click_id->fd->thumb_pixbuf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
591 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
592 gint items;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
593
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
594 if (VFICON(vf)->click_id->selected & SELECTION_SELECTED)
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
595 items = g_list_length(VFICON(vf)->selection);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
596 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
597 items = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
598
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
599 dnd_set_drag_icon(widget, context, VFICON(vf)->click_id->fd->thumb_pixbuf, items);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
600 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
601 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
602
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
603 static void vficon_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
604 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
605 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
606
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
607 vficon_selection_remove(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
608
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
609 if (context->action == GDK_ACTION_MOVE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
610 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
611 vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
613
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
614 tip_unschedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
615 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
616
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
617 void vficon_dnd_init(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
618 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
619 gtk_drag_source_set(vf->listview, GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
620 dnd_file_drag_types, dnd_file_drag_types_count,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
621 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
622 gtk_drag_dest_set(vf->listview, GTK_DEST_DEFAULT_ALL,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
623 dnd_file_drag_types, dnd_file_drag_types_count,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
624 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
625
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
626 g_signal_connect(G_OBJECT(vf->listview), "drag_data_get",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
627 G_CALLBACK(vficon_dnd_get), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
628 g_signal_connect(G_OBJECT(vf->listview), "drag_begin",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
629 G_CALLBACK(vficon_dnd_begin), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
630 g_signal_connect(G_OBJECT(vf->listview), "drag_end",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
631 G_CALLBACK(vficon_dnd_end), vf);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
632 g_signal_connect(G_OBJECT(vf->listview), "drag_data_received",
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
633 G_CALLBACK(vficon_drag_data_received), vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
634 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
635
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
636 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
637 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
638 * cell updates
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
639 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
640 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
641
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
642 static void vficon_selection_set(ViewFile *vf, IconData *id, SelectionType value, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
643 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
644 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
645 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
647 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
648
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
649
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
650 if (id->selected == value) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
651 id->selected = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
652
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
653 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
654 if (iter)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
655 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
656 gtk_tree_model_get(store, iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
657 if (list) gtk_list_store_set(GTK_LIST_STORE(store), iter, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
658 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
659 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
661 GtkTreeIter row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
663 if (vficon_find_iter(vf, id, &row, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
664 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
665 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
666 if (list) gtk_list_store_set(GTK_LIST_STORE(store), &row, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
668 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
669 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
670
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
671 static void vficon_selection_add(ViewFile *vf, IconData *id, SelectionType mask, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
672 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
673 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
674
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
675 vficon_selection_set(vf, id, id->selected | mask, iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
676 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
677
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
678 static void vficon_selection_remove(ViewFile *vf, IconData *id, SelectionType mask, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
680 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
681
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
682 vficon_selection_set(vf, id, id->selected & ~mask, iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
683 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684
852
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
685 void vficon_marks_set(ViewFile *vf, gint enable)
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
686 {
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
687 vficon_populate_at_new_size(vf, vf->listview->allocation.width, vf->listview->allocation.height, TRUE);
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
688 }
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
689
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
690 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
691 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
692 * selections
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
693 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
694 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
695
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
696 static void vficon_verify_selections(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
697 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
698 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
699
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
700 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
702 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
703 IconData *id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
704 work = work->next;
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
705
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
706 if (vficon_index_by_id(vf, id) >= 0) continue;
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
707
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
708 VFICON(vf)->selection = g_list_remove(VFICON(vf)->selection, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
709 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
711
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
712 void vficon_select_all(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
713 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
714 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
715
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
716 g_list_free(VFICON(vf)->selection);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
717 VFICON(vf)->selection = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
718
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
719 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
720 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
721 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
722 IconData *id = work->data;
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
723 work = work->next;
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
724
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
725 VFICON(vf)->selection = g_list_append(VFICON(vf)->selection, id);
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
726 vficon_selection_add(vf, id, SELECTION_SELECTED, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
727 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
728
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
729 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
730 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
731
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
732 void vficon_select_none(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
733 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
734 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
735
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
736 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
737 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
738 {
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
739 IconData *id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
740 work = work->next;
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
741
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
742 vficon_selection_remove(vf, id, SELECTION_SELECTED, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
743 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
744
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
745 g_list_free(VFICON(vf)->selection);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
746 VFICON(vf)->selection = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
747
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
748 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
749 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
750
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
751 void vficon_select_invert(ViewFile *vf)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
752 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
753 GList *work;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
754
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
755 work = vf->list;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
756 while (work)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
757 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
758 IconData *id = work->data;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
759 work = work->next;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
760
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
761 if (id->selected & SELECTION_SELECTED)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
762 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
763 VFICON(vf)->selection = g_list_remove(VFICON(vf)->selection, id);
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
764 vficon_selection_remove(vf, id, SELECTION_SELECTED, NULL);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
765 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
766 else
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
767 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
768 VFICON(vf)->selection = g_list_append(VFICON(vf)->selection, id);
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
769 vficon_selection_add(vf, id, SELECTION_SELECTED, NULL);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
770 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
771 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
772
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
773 vf_send_update(vf);
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
774 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
775
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
776 static void vficon_select(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
777 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
778 VFICON(vf)->prev_selection = id;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
779
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
780 if (!id || id->selected & SELECTION_SELECTED) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
781
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
782 VFICON(vf)->selection = g_list_append(VFICON(vf)->selection, id);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
783 vficon_selection_add(vf, id, SELECTION_SELECTED, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
784
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
785 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
786 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
787
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
788 static void vficon_unselect(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
789 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
790 VFICON(vf)->prev_selection = id;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
791
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
792 if (!id || !(id->selected & SELECTION_SELECTED) ) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
793
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
794 VFICON(vf)->selection = g_list_remove(VFICON(vf)->selection, id);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
795 vficon_selection_remove(vf, id, SELECTION_SELECTED, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
796
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
797 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
798 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
799
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
800 static void vficon_select_util(ViewFile *vf, IconData *id, gboolean select)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
801 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
802 if (select)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
803 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
804 vficon_select(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
805 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
806 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
807 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
808 vficon_unselect(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
809 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
810 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
811
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
812 static void vficon_select_region_util(ViewFile *vf, IconData *start, IconData *end, gboolean select)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
813 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
814 gint row1, col1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
815 gint row2, col2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
816 gint t;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
817 gint i, j;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
818
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
819 if (!vficon_find_position(vf, start, &row1, &col1) ||
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
820 !vficon_find_position(vf, end, &row2, &col2) ) return;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
821
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
822 VFICON(vf)->prev_selection = end;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
823
330
57a4ced53618 Rename collection options.
zas_
parents: 320
diff changeset
824 if (!options->collections.rectangular_selection)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
825 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
826 GList *work;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
827 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
828
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
829 if (g_list_index(vf->list, start) > g_list_index(vf->list, end))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
830 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
831 id = start;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
832 start = end;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
833 end = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
834 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
835
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
836 work = g_list_find(vf->list, start);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
837 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
838 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
839 id = work->data;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
840 vficon_select_util(vf, id, select);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
841
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
842 if (work->data != end)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
843 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
844 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
845 work = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
846 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
847 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
848 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
849
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
850 if (row2 < row1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
851 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
852 t = row1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
853 row1 = row2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
854 row2 = t;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
855 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
856 if (col2 < col1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
857 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
858 t = col1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
859 col1 = col2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
860 col2 = t;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
861 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
862
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 499
diff changeset
863 DEBUG_1("table: %d x %d to %d x %d", row1, col1, row2, col2);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
864
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
865 for (i = row1; i <= row2; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
866 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
867 for (j = col1; j <= col2; j++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
868 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
869 IconData *id = vficon_find_data(vf, i, j, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
870 if (id) vficon_select_util(vf, id, select);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
871 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
872 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
873 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
874
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
875 gboolean vficon_index_is_selected(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
876 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
877 IconData *id = g_list_nth_data(vf->list, row);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
878
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
879 if (!id) return FALSE;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
880
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
881 return (id->selected & SELECTION_SELECTED);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
882 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
883
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 671
diff changeset
884 guint vficon_selection_count(ViewFile *vf, gint64 *bytes)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
885 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
886 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
887 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
888 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
889 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
890
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
891 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
892 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
893 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
894 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
895 FileData *fd = id->fd;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
896 g_assert(fd->magick == 0x12345678);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
897 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
898
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
899 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
900 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
901
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
902 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
903 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
904
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
905 return g_list_length(VFICON(vf)->selection);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
906 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
907
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
908 GList *vficon_selection_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
909 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
910 GList *list = NULL;
1622
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
911 GList *work, *work2;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
912
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
913 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
914 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
915 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
916 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
917 FileData *fd = id->fd;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
918 g_assert(fd->magick == 0x12345678);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
919
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
920 list = g_list_prepend(list, file_data_ref(fd));
1622
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
921
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
922 work2 = fd->sidecar_files;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
923 while (work2)
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
924 {
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
925 fd = work2->data;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
926 list = g_list_prepend(list, file_data_ref(fd));
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
927 work2 = work2->next;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1621
diff changeset
928 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
929
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
930 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
931 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
932
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
933 list = g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
934
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
935 return list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
936 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
937
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
938 GList *vficon_selection_get_list_by_index(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
939 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
940 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
941 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
942
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
943 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
944 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
945 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
946 list = g_list_prepend(list, GINT_TO_POINTER(g_list_index(vf->list, work->data)));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
947 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
948 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
949
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
950 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
951 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
952
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
953 static void vficon_select_by_id(ViewFile *vf, IconData *id)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
954 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
955 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
956
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
957 if (!(id->selected & SELECTION_SELECTED))
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
958 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
959 vf_select_none(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
960 vficon_select(vf, id);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
961 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
962
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
963 vficon_set_focus(vf, id);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
964 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
965
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
966 void vficon_select_by_fd(ViewFile *vf, FileData *fd)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
967 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
968 IconData *id = NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
969 GList *work;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
970
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
971 if (!fd) return;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
972 work = vf->list;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
973 while (work && !id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
974 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
975 IconData *chk = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
976 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
977 if (chk->fd == fd) id = chk;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
978 }
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
979 vficon_select_by_id(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
980 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
981
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
982 void vficon_mark_to_selection(ViewFile *vf, gint mark, MarkToSelectionMode mode)
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
983 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
984 GList *work;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
985 gint n = mark - 1;
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
986
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
987 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
988
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
989 work = vf->list;
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
990 while (work)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
991 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
992 IconData *id = work->data;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
993 FileData *fd = id->fd;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
994 gboolean mark_val, selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
995
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
996 g_assert(fd->magick == 0x12345678);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
997
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
998 mark_val = file_data_get_mark(fd, n);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
999 selected = (id->selected & SELECTION_SELECTED);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1000
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1001 switch (mode)
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1002 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1003 case MTS_MODE_SET: selected = mark_val;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1004 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1005 case MTS_MODE_OR: selected = mark_val | selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1006 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1007 case MTS_MODE_AND: selected = mark_val & selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1008 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1009 case MTS_MODE_MINUS: selected = !mark_val & selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1010 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1011 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1012
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1013 vficon_select_util(vf, id, selected);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1014
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1015 work = work->next;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1016 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1017 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1018
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1019 void vficon_selection_to_mark(ViewFile *vf, gint mark, SelectionToMarkMode mode)
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1020 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1021 GList *slist;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1022 GList *work;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1023 gint n = mark -1;
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1024
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1025 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1026
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1027 slist = vf_selection_get_list(vf);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1028 work = slist;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1029 while (work)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1030 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1031 FileData *fd = work->data;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1032
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1033 switch (mode)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1034 {
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1035 case STM_MODE_SET: file_data_set_mark(fd, n, 1);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1036 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1037 case STM_MODE_RESET: file_data_set_mark(fd, n, 0);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1038 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1039 case STM_MODE_TOGGLE: file_data_set_mark(fd, n, !file_data_get_mark(fd, n));
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1040 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1041 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1042 work = work->next;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1043 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1044 filelist_free(slist);
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1045 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1046
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1047 static void vficon_select_closest(ViewFile *vf, FileData *sel_fd)
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1048 {
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1049 GList *work;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1050 IconData *id = NULL;
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1051
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1052 if (sel_fd->parent) sel_fd = sel_fd->parent;
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1053 work = vf->list;
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1054
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1055 while (work)
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1056 {
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1057 gint match;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1058 FileData *fd;
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1059
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1060 id = work->data;
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1061 fd = id->fd;
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1062 work = work->next;
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1063
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1064 match = filelist_sort_compare_filedata_full(fd, sel_fd, vf->sort_method, vf->sort_ascend);
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1065
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1066 if (match >= 0) break;
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1067 }
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1068
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1069 if (id)
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1070 {
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1071 vficon_select(vf, id);
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1072 vficon_send_layout_select(vf, id);
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1073 }
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1074 }
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1075
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1076
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1077 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1078 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1079 * focus
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1080 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1081 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1082
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1083 static void vficon_move_focus(ViewFile *vf, gint row, gint col, gboolean relative)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1084 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1085 gint new_row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1086 gint new_col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1087
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1088 if (relative)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1089 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1090 new_row = VFICON(vf)->focus_row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1091 new_col = VFICON(vf)->focus_column;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1092
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1093 new_row += row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1094 if (new_row < 0) new_row = 0;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1095 if (new_row >= VFICON(vf)->rows) new_row = VFICON(vf)->rows - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1096
516
b7e99bfeadc9 Convert the minority of while() to while ().
zas_
parents: 507
diff changeset
1097 while (col != 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1098 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1099 if (col < 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1100 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1101 new_col--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1102 col++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1103 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1104 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1105 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1106 new_col++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1107 col--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1108 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1109
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1110 if (new_col < 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1111 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1112 if (new_row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1113 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1114 new_row--;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1115 new_col = VFICON(vf)->columns - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1116 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1117 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1118 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119 new_col = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1120 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1121 }
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1122 if (new_col >= VFICON(vf)->columns)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1124 if (new_row < VFICON(vf)->rows - 1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1125 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1126 new_row++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1127 new_col = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1128 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1129 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1130 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1131 new_col = VFICON(vf)->columns - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1132 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1133 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1134 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1135 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1136 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1137 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1138 new_row = row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1139 new_col = col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1140
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1141 if (new_row >= VFICON(vf)->rows)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1142 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1143 if (VFICON(vf)->rows > 0)
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1144 new_row = VFICON(vf)->rows - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1145 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1146 new_row = 0;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1147 new_col = VFICON(vf)->columns - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1148 }
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1149 if (new_col >= VFICON(vf)->columns) new_col = VFICON(vf)->columns - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1150 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1151
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1152 if (new_row == VFICON(vf)->rows - 1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1153 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1154 gint l;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1155
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1156 /* if we moved beyond the last image, go to the last image */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1157
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1158 l = g_list_length(vf->list);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1159 if (VFICON(vf)->rows > 1) l -= (VFICON(vf)->rows - 1) * VFICON(vf)->columns;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1160 if (new_col >= l) new_col = l - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1161 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1162
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1163 vficon_set_focus(vf, vficon_find_data(vf, new_row, new_col, NULL));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1164 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1165
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1166 static void vficon_set_focus(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1167 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1168 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169 gint row, col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1170
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1171 if (g_list_find(vf->list, VFICON(vf)->focus_id))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1172 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1173 if (id == VFICON(vf)->focus_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1174 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1175 /* ensure focus row col are correct */
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1176 vficon_find_position(vf, VFICON(vf)->focus_id, &VFICON(vf)->focus_row, &VFICON(vf)->focus_column);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1177 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1178 }
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1179 vficon_selection_remove(vf, VFICON(vf)->focus_id, SELECTION_FOCUS, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1180 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1181
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1182 if (!vficon_find_position(vf, id, &row, &col))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1183 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1184 VFICON(vf)->focus_id = NULL;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1185 VFICON(vf)->focus_row = -1;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1186 VFICON(vf)->focus_column = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1187 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1190 VFICON(vf)->focus_id = id;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1191 VFICON(vf)->focus_row = row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1192 VFICON(vf)->focus_column = col;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1193 vficon_selection_add(vf, VFICON(vf)->focus_id, SELECTION_FOCUS, NULL);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1194
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1195 if (vficon_find_iter(vf, VFICON(vf)->focus_id, &iter, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1196 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1197 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1198 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1199 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1200
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1201 tree_view_row_make_visible(GTK_TREE_VIEW(vf->listview), &iter, FALSE);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1202
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1203 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1204 tpath = gtk_tree_model_get_path(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1205 /* focus is set to an extra column with 0 width to hide focus, we draw it ourself */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1206 column = gtk_tree_view_get_column(GTK_TREE_VIEW(vf->listview), VFICON_MAX_COLUMNS);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1207 gtk_tree_view_set_cursor(GTK_TREE_VIEW(vf->listview), tpath, column, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1208 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1209 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1210 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1211
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 1002
diff changeset
1212 #if 0
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1213 static void vficon_update_focus(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1214 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1215 gint new_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1216 gint new_col = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1217
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1218 if (VFICON(vf)->focus_id && vficon_find_position(vf, VFICON(vf)->focus_id, &new_row, &new_col))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1219 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1220 /* first find the old focus, if it exists and is valid */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1221 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1222 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1223 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1224 /* (try to) stay where we were */
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1225 new_row = VFICON(vf)->focus_row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1226 new_col = VFICON(vf)->focus_column;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1227 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1228
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1229 vficon_move_focus(vf, new_row, new_col, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 }
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 1002
diff changeset
1231 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1232
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1233 /* used to figure the page up/down distances */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1234 static gint page_height(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1235 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1236 GtkAdjustment *adj;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1237 gint page_size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1238 gint row_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1239 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1240
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1241 adj = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242 page_size = (gint)adj->page_increment;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
1244 row_height = options->thumbnails.max_height + THUMB_BORDER_PADDING * 2;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1245 if (VFICON(vf)->show_text) row_height += options->thumbnails.max_height / 3;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1246
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1247 ret = page_size / row_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1248 if (ret < 1) ret = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1249
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1250 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1251 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1253 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1254 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1255 * keyboard
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1256 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1257 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1258
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1259 static void vfi_menu_position_cb(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1260 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1261 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1263 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1264 gint column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1265 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266 gint cw, ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1267
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1268 if (!vficon_find_iter(vf, VFICON(vf)->click_id, &iter, &column)) return;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1269 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1270 tpath = gtk_tree_model_get_path(store, &iter);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1271 tree_view_get_cell_clamped(GTK_TREE_VIEW(vf->listview), tpath, column, FALSE, x, y, &cw, &ch);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1272 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1273 *y += ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274 popup_menu_position_clamp(menu, x, y, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1275 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1276
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1277 gboolean vficon_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1279 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280 gint focus_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1281 gint focus_col = 0;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1282 IconData *id;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1283 gboolean stop_signal;
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1284
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1285 stop_signal = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1286 switch (event->keyval)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288 case GDK_Left: case GDK_KP_Left:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1289 focus_col = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1290 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1291 case GDK_Right: case GDK_KP_Right:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1292 focus_col = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1293 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1294 case GDK_Up: case GDK_KP_Up:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1295 focus_row = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1296 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1297 case GDK_Down: case GDK_KP_Down:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1298 focus_row = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1299 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1300 case GDK_Page_Up: case GDK_KP_Page_Up:
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1301 focus_row = -page_height(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1302 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1303 case GDK_Page_Down: case GDK_KP_Page_Down:
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1304 focus_row = page_height(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306 case GDK_Home: case GDK_KP_Home:
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1307 focus_row = -VFICON(vf)->focus_row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1308 focus_col = -VFICON(vf)->focus_column;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1309 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1310 case GDK_End: case GDK_KP_End:
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1311 focus_row = VFICON(vf)->rows - 1 - VFICON(vf)->focus_row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1312 focus_col = VFICON(vf)->columns - 1 - VFICON(vf)->focus_column;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1313 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1314 case GDK_space:
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1315 id = vficon_find_data(vf, VFICON(vf)->focus_row, VFICON(vf)->focus_column, NULL);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1316 if (id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1317 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1318 VFICON(vf)->click_id = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1319 if (event->state & GDK_CONTROL_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1320 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1321 gint selected;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1322
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1323 selected = id->selected & SELECTION_SELECTED;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1324 if (selected)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1325 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1326 vficon_unselect(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1327 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1328 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1329 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1330 vficon_select(vf, id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1331 vficon_send_layout_select(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1332 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1333 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1334 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1335 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1336 vf_select_none(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1337 vficon_select(vf, id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1338 vficon_send_layout_select(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1339 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1340 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1341 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1342 case GDK_Menu:
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1343 id = vficon_find_data(vf, VFICON(vf)->focus_row, VFICON(vf)->focus_column, NULL);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1344 VFICON(vf)->click_id = id;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1345
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1346 vficon_selection_add(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, NULL);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1347 tip_unschedule(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1348
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
1349 vf->popup = vf_pop_menu(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1350 gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, vfi_menu_position_cb, vf, 0, GDK_CURRENT_TIME);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1351 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1352 default:
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1353 stop_signal = FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1354 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1355 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1356
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 if (focus_row != 0 || focus_col != 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1358 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1359 IconData *new_id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1360 IconData *old_id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1361
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1362 old_id = vficon_find_data(vf, VFICON(vf)->focus_row, VFICON(vf)->focus_column, NULL);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1363 vficon_move_focus(vf, focus_row, focus_col, TRUE);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1364 new_id = vficon_find_data(vf, VFICON(vf)->focus_row, VFICON(vf)->focus_column, NULL);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1365
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1366 if (new_id != old_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1368 if (event->state & GDK_SHIFT_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369 {
330
57a4ced53618 Rename collection options.
zas_
parents: 320
diff changeset
1370 if (!options->collections.rectangular_selection)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1371 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1372 vficon_select_region_util(vf, old_id, new_id, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1375 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1376 vficon_select_region_util(vf, VFICON(vf)->click_id, old_id, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1377 }
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1378 vficon_select_region_util(vf, VFICON(vf)->click_id, new_id, TRUE);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1379 vficon_send_layout_select(vf, new_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1380 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1381 else if (event->state & GDK_CONTROL_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1383 VFICON(vf)->click_id = new_id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1384 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1385 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1386 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1387 VFICON(vf)->click_id = new_id;
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1388 vf_select_none(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1389 vficon_select(vf, new_id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1390 vficon_send_layout_select(vf, new_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1392 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1393 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1394
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1395 if (stop_signal)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 {
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1397 #if 0
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1398 g_signal_stop_emission_by_name(GTK_OBJECT(widget), "key_press_event");
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1399 #endif
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1400 tip_unschedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1402
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403 return stop_signal;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1404 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1405
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1406 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1407 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1408 * mouse
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1409 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1410 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1411
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1412 static gboolean vficon_motion_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1413 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1414 ViewFile *vf = data;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1415 IconData *id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1416
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1417 id = vficon_find_data_by_coord(vf, (gint)bevent->x, (gint)bevent->y, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1418 tip_update(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1419
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1420 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1421 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1422
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1423 gboolean vficon_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1425 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1426 GtkTreeIter iter;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1427 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1428
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1429 tip_unschedule(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1430
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1431 id = vficon_find_data_by_coord(vf, (gint)bevent->x, (gint)bevent->y, &iter);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1432
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1433 VFICON(vf)->click_id = id;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1434 vficon_selection_add(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1435
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1436 switch (bevent->button)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1437 {
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
1438 case MOUSE_BUTTON_LEFT:
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1439 if (!GTK_WIDGET_HAS_FOCUS(vf->listview))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1440 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1441 gtk_widget_grab_focus(vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1442 }
1206
d79305a42a9b Switch to fullscreen when double clicking on file in icon or list view. Feature request 1966042. The code was there since a long time but disabled, please report any issue.
zas_
parents: 1202
diff changeset
1443 #if 1
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1444 if (bevent->type == GDK_2BUTTON_PRESS &&
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1445 vf->layout)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1446 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1447 vficon_selection_remove(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, &iter);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1448 layout_image_full_screen_start(vf->layout);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1449 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1450 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1451 break;
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
1452 case MOUSE_BUTTON_RIGHT:
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
1453 vf->popup = vf_pop_menu(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1454 gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, NULL, NULL, bevent->button, bevent->time);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1455 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1456 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1457 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1458 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1459
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
1460 return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1461 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1462
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1463 gboolean vficon_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1464 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1465 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1466 GtkTreeIter iter;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1467 IconData *id = NULL;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1468 gboolean was_selected;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1469
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1470 tip_schedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1471
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1472 if ((gint)bevent->x != 0 || (gint)bevent->y != 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1473 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1474 id = vficon_find_data_by_coord(vf, (gint)bevent->x, (gint)bevent->y, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1475 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1476
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1477 if (VFICON(vf)->click_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1478 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1479 vficon_selection_remove(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1480 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1481
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1482 if (!id || VFICON(vf)->click_id != id) return TRUE;
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1483
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1484 was_selected = !!(id->selected & SELECTION_SELECTED);
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1485
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1486 switch (bevent->button)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1487 {
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1488 case MOUSE_BUTTON_LEFT:
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1489 {
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1490 vficon_set_focus(vf, id);
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1491
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1492 if (bevent->state & GDK_CONTROL_MASK)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1493 {
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1494 gboolean select;
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1495
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1496 select = !(id->selected & SELECTION_SELECTED);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1497 if ((bevent->state & GDK_SHIFT_MASK) && VFICON(vf)->prev_selection)
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1498 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1499 vficon_select_region_util(vf, VFICON(vf)->prev_selection, id, select);
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1500 }
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1501 else
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1502 {
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1503 vficon_select_util(vf, id, select);
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1504 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1505 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1506 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1507 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1508 vf_select_none(vf);
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1509
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1510 if ((bevent->state & GDK_SHIFT_MASK) && VFICON(vf)->prev_selection)
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1511 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1512 vficon_select_region_util(vf, VFICON(vf)->prev_selection, id, TRUE);
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1513 }
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1514 else
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1515 {
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1516 vficon_select_util(vf, id, TRUE);
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1517 was_selected = FALSE;
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1518 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1519 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1520 }
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1521 break;
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1522 case MOUSE_BUTTON_MIDDLE:
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1523 {
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1524 vficon_select_util(vf, id, !(id->selected & SELECTION_SELECTED));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1525 }
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1526 break;
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1527 default:
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1528 break;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1529 }
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1530
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1531 if (!was_selected && (id->selected & SELECTION_SELECTED))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1532 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1533 vficon_send_layout_select(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1534 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1535
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1536 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1537 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1538
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1539 static gboolean vficon_leave_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1540 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1541 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1542
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1543 tip_unschedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1544 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1545 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1546
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1547 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1548 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1549 * population
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1550 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1551 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1552
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1553 static gboolean vficon_destroy_node_cb(GtkTreeModel *store, GtkTreePath *tpath, GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1554 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1555 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1556
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1557 gtk_tree_model_get(store, iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1558 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1559
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1560 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1561 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1562
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1563 static void vficon_clear_store(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1564 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1565 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1566
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1567 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1568 gtk_tree_model_foreach(store, vficon_destroy_node_cb, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1569
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1570 gtk_list_store_clear(GTK_LIST_STORE(store));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1571 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1572
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1573 static GList *vficon_add_row(ViewFile *vf, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1574 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1575 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1576 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1577 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1578
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1579 for (i = 0; i < VFICON(vf)->columns; i++) list = g_list_prepend(list, NULL);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1580
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1581 store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1582 gtk_list_store_append(store, iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1583 gtk_list_store_set(store, iter, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1584
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1585 return list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1586 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1587
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1588 static void vficon_populate(ViewFile *vf, gboolean resize, gboolean keep_position)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1589 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1590 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1591 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1592 GList *work;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1593 IconData *visible_id = NULL;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1594 gint r, c;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1595 gboolean valid;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1596 GtkTreeIter iter;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1597
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1598 vficon_verify_selections(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1599
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1600 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1601
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1602 if (keep_position && GTK_WIDGET_REALIZED(vf->listview) &&
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1603 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vf->listview), 0, 0, &tpath, NULL, NULL, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1604 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1605 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1606 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1607
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1608 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1609 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1610
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1611 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1612 if (list) visible_id = list->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1613 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1614
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1615
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1616 if (resize)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1617 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1618 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1619 gint thumb_width;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1620
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1621 vficon_clear_store(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1622
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1623 thumb_width = vficon_get_icon_width(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1624
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1625 for (i = 0; i < VFICON_MAX_COLUMNS; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1626 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1627 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1628 GtkCellRenderer *cell;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1629 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1630
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1631 column = gtk_tree_view_get_column(GTK_TREE_VIEW(vf->listview), i);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1632 gtk_tree_view_column_set_visible(column, (i < VFICON(vf)->columns));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1633 gtk_tree_view_column_set_fixed_width(column, thumb_width + (THUMB_BORDER_PADDING * 6));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1634
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1635 list = gtk_tree_view_column_get_cell_renderers(column);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1636 cell = (list) ? list->data : NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1637 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1638
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1639 if (cell && GQV_IS_CELL_RENDERER_ICON(cell))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1640 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1641 g_object_set(G_OBJECT(cell), "fixed_width", thumb_width,
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
1642 "fixed_height", options->thumbnails.max_height,
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1643 "show_text", VFICON(vf)->show_text,
852
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
1644 "show_marks", vf->marks_enabled,
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
1645 "num_marks", FILEDATA_MARKS_SIZE,
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
1646 NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1647 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1648 }
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1649 if (GTK_WIDGET_REALIZED(vf->listview)) gtk_tree_view_columns_autosize(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1650 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1651
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1652 r = -1;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1653 c = 0;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1654
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1655 valid = gtk_tree_model_iter_children(store, &iter, NULL);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1656
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1657 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1658 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1659 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1660 GList *list;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1661 r++;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1662 c = 0;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1663 if (valid)
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1664 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1665 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1666 gtk_list_store_set(GTK_LIST_STORE(store), &iter, FILE_COLUMN_POINTER, list, -1);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1667 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1668 else
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1669 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1670 list = vficon_add_row(vf, &iter);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1671 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1672
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1673 while (list)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1674 {
585
4875d67823b4 Revert wrong patch rev 676.
zas_
parents: 583
diff changeset
1675 IconData *id;
4875d67823b4 Revert wrong patch rev 676.
zas_
parents: 583
diff changeset
1676
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1677 if (work)
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1678 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1679 id = work->data;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1680 work = work->next;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1681 c++;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1682 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1683 else
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1684 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1685 id = NULL;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1686 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1687
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1688 list->data = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1689 list = list->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1690 }
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1691 if (valid) valid = gtk_tree_model_iter_next(store, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1692 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1693
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1694 r++;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1695 while (valid)
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1696 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1697 GList *list;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1698
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1699 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1700 valid = gtk_list_store_remove(GTK_LIST_STORE(store), &iter);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1701 g_list_free(list);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1702 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1703
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1704 VFICON(vf)->rows = r;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1705
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1706 if (visible_id &&
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1707 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vf->listview), 0, 0, &tpath, NULL, NULL, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1708 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1709 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1710 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1711
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1712 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1713 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1714
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1715 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1716 if (g_list_find(list, visible_id) == NULL &&
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1717 vficon_find_iter(vf, visible_id, &iter, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1718 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1719 tree_view_row_make_visible(GTK_TREE_VIEW(vf->listview), &iter, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1720 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1721 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1722
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1723
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1724 vf_send_update(vf);
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1725 vf_thumb_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1726 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1727
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1728 static void vficon_populate_at_new_size(ViewFile *vf, gint w, gint h, gboolean force)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1729 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1730 gint new_cols;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1731 gint thumb_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1732
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1733 thumb_width = vficon_get_icon_width(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1734
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1735 new_cols = w / (thumb_width + (THUMB_BORDER_PADDING * 6));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1736 if (new_cols < 1) new_cols = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1737
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1738 if (!force && new_cols == VFICON(vf)->columns) return;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1739
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1740 VFICON(vf)->columns = new_cols;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1741
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1742 vficon_populate(vf, TRUE, TRUE);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1743
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1744 DEBUG_1("col tab pop cols=%d rows=%d", VFICON(vf)->columns, VFICON(vf)->rows);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1745 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1746
817
ad7f56cea841 dropped vficon_sync, use vficon_refresh everywhere
nadvornik
parents: 814
diff changeset
1747 #if 0
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1748 static void vficon_sync(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1749 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1750 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1751 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1752 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1753 gint r, c;
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1754 gint valid;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1755
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1756 if (VFICON(vf)->rows == 0) return;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1757
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1758 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1759
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1760 r = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1761 c = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1762
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1763 valid = gtk_tree_model_iter_children(store, &iter, NULL);
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1764
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1765 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1766 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1767 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1768 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1769 r++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1770 c = 0;
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1771 if (valid)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1772 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1773 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1774 gtk_list_store_set(GTK_LIST_STORE(store), &iter, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1775 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1776 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1777 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1778 list = vficon_add_row(vf, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1779 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1780
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1781 while (list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1782 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1783 IconData *id;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1784
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1785 if (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1786 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1787 id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1788 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1789 c++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1790 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1791 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1792 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1793 id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1794 }
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1795
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1796 list->data = id;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1797 list = list->next;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1798 }
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1799 if (valid) valid = gtk_tree_model_iter_next(store, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1800 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1801
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1802 r++;
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1803 while (valid)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1804 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1805 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1806
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1807 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1808 valid = gtk_list_store_remove(GTK_LIST_STORE(store), &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1809 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1810 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1811
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1812 VFICON(vf)->rows = r;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1813
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1814 vficon_update_focus(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1815 }
817
ad7f56cea841 dropped vficon_sync, use vficon_refresh everywhere
nadvornik
parents: 814
diff changeset
1816 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1817
812
d29c2d191c58 use vficon_refresh for updating
nadvornik
parents: 811
diff changeset
1818 #if 0
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1819 static void vficon_sync_idle(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1820 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1821 if (VFICON(vf)->sync_idle_id == -1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1822 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1823 /* high priority, the view needs to be resynced before a redraw
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1824 * may contain invalid pointers at this time
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1825 */
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1826 VFICON(vf)->sync_idle_id = g_idle_add_full(G_PRIORITY_HIGH, vficon_sync_idle_cb, vf, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1827 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1828 }
812
d29c2d191c58 use vficon_refresh for updating
nadvornik
parents: 811
diff changeset
1829 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1830
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1831 static void vficon_sized_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1832 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1833 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1834
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1835 vficon_populate_at_new_size(vf, allocation->width, allocation->height, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1836 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1837
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1838 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1839 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1840 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1841 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1842 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1843
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1844 void vficon_sort_set(ViewFile *vf, SortType type, gboolean ascend)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1845 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1846 if (vf->sort_method == type && vf->sort_ascend == ascend) return;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1847
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1848 vf->sort_method = type;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1849 vf->sort_ascend = ascend;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1850
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1851 if (!vf->list) return;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1852
817
ad7f56cea841 dropped vficon_sync, use vficon_refresh everywhere
nadvornik
parents: 814
diff changeset
1853 vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1854 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1855
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1856 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1857 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1858 * thumb updates
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1859 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1860 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1861
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1862 void vficon_thumb_progress_count(GList *list, gint *count, gint *done)
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1863 {
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1864 GList *work = list;
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1865 while (work)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1866 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1867 IconData *id = work->data;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1868 FileData *fd = id->fd;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1869 work = work->next;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1870
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1871 if (fd->thumb_pixbuf) (*done)++;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1872 (*count)++;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1873 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1874 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1875
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1876 void vficon_set_thumb_fd(ViewFile *vf, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1877 {
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1878 GtkTreeModel *store;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1879 GtkTreeIter iter;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1880 GList *list;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1881
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1882 if (!vficon_find_iter(vf, vficon_icon_data(vf, fd), &iter, NULL)) return;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1883
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1884 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1885
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1886 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1887 gtk_list_store_set(GTK_LIST_STORE(store), &iter, FILE_COLUMN_POINTER, list, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1888 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1889
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1890
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1891 FileData *vficon_thumb_next_fd(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1892 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1893 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1894 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1895
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1896 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vf->listview), 0, 0, &tpath, NULL, NULL, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1897 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1898 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1899 GtkTreeIter iter;
1437
a3d3208b0c50 gint -> gboolean.
zas_
parents: 1365
diff changeset
1900 gboolean valid = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1901
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1902 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1903 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1904 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1905
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1906 while (!fd && valid && tree_view_row_get_visibility(GTK_TREE_VIEW(vf->listview), &iter, FALSE) == 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1907 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1908 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1909
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1910 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1911
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1912 while (!fd && list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1913 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1914 IconData *id = list->data;
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1915 if (id && !id->fd->thumb_pixbuf) fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1916 list = list->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1917 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1918
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1919 valid = gtk_tree_model_iter_next(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1920 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1921 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1922
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1923 /* then find first undone */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1924
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1925 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1926 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1927 GList *work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1928 while (work && !fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1929 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1930 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1931 FileData *fd_p = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1932 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1933
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1934 if (!fd_p->thumb_pixbuf) fd = fd_p;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1935 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1936 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1937
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1938 return fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1939 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1940
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1941 void vficon_thumb_reset_all(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1942 {
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1943 GList *work = vf->list;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1944
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1945 while (work)
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1946 {
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1947 IconData *id = work->data;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1948 FileData *fd = id->fd;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1949 if (fd->thumb_pixbuf)
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1950 {
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1951 g_object_unref(fd->thumb_pixbuf);
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1952 fd->thumb_pixbuf = NULL;
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1953 }
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1954 work = work->next;
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1955 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1956 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1957
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1958
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1959 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1960 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1961 * row stuff
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1962 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1963 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1964
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1965 FileData *vficon_index_get_data(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1966 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1967 IconData *id;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1968
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1969 id = g_list_nth_data(vf->list, row);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1970 return id ? id->fd : NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1971 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1972
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1973
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1974 gint vficon_index_by_fd(ViewFile *vf, FileData *in_fd)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1975 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1976 gint p = 0;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1977 GList *work;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1978
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1979 if (!in_fd) return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1980
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1981 work = vf->list;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1982 while (work)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1983 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1984 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1985 FileData *fd = id->fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1986 if (fd == in_fd) return p;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1987 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1988 p++;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1989 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1990
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1991 return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1992 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1993
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1994 static gint vficon_index_by_id(ViewFile *vf, IconData *in_id)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1995 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1996 gint p = 0;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1997 GList *work;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1998
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1999 if (!in_id) return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2000
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2001 work = vf->list;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2002 while (work)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2003 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2004 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2005 if (id == in_id) return p;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2006 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2007 p++;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2008 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2009
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2010 return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2011 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2012
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 671
diff changeset
2013 guint vficon_count(ViewFile *vf, gint64 *bytes)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2014 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2015 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2016 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2017 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2018 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2019
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2020 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2021 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2022 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2023 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2024 FileData *fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2025 work = work->next;
579
2ef88100cee2 Minor tidyup.
zas_
parents: 578
diff changeset
2026
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2027 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2028 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2029
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2030 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2031 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2032
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2033 return g_list_length(vf->list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2034 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2035
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2036 GList *vficon_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2037 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2038 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2039 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2040
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2041 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2042 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2043 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2044 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2045 FileData *fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2046 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2047
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2048 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2049 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2050
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2051 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2052 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2053
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2054 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2055 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2056 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2057 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2058 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2059
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2060 static gboolean vficon_refresh_real(ViewFile *vf, gboolean keep_position)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2061 {
1437
a3d3208b0c50 gint -> gboolean.
zas_
parents: 1365
diff changeset
2062 gboolean ret = TRUE;
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2063 GList *work, *work_fd;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2064 IconData *focus_id;
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2065 GList *new_filelist = NULL;
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2066 FileData *first_selected = NULL;
832
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2067 GList *new_iconlist = NULL;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2068
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2069 focus_id = VFICON(vf)->focus_id;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2070
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2071 if (vf->dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2072 {
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2073 ret = filelist_read(vf->dir_fd, &new_filelist, NULL);
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 904
diff changeset
2074 new_filelist = file_data_filter_marks_list(new_filelist, vf_marks_get_filter(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2075 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2076
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2077 vf->list = iconlist_sort(vf->list, vf->sort_method, vf->sort_ascend); /* the list might not be sorted if there were renames */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2078 new_filelist = filelist_sort(new_filelist, vf->sort_method, vf->sort_ascend);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2079
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2080 if (VFICON(vf)->selection)
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2081 {
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2082 first_selected = ((IconData *)(VFICON(vf)->selection->data))->fd;
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2083 file_data_ref(first_selected);
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2084 g_list_free(VFICON(vf)->selection);
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2085 VFICON(vf)->selection = NULL;
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2086
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2087
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2088 }
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
2089
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2090 /* check for same files from old_list */
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2091 work = vf->list;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2092 work_fd = new_filelist;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2093 while (work || work_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2094 {
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2095 IconData *id = NULL;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2096 FileData *fd = NULL;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2097 FileData *new_fd = NULL;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2098 gint match;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2099
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2100 if (work && work_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2101 {
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2102 id = work->data;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2103 fd = id->fd;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2104
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2105 new_fd = work_fd->data;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2106
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2107 if (fd == new_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2108 {
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2109 /* not changed, go to next */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2110 work = work->next;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2111 work_fd = work_fd->next;
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2112 if (id->selected & SELECTION_SELECTED)
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2113 {
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2114 VFICON(vf)->selection = g_list_prepend(VFICON(vf)->selection, id);
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2115 }
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2116 continue;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2117 }
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2118
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2119 match = filelist_sort_compare_filedata_full(fd, new_fd, vf->sort_method, vf->sort_ascend);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2120 if (match == 0) g_warning("multiple fd for the same path");
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2121 }
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2122 else if (work)
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2123 {
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2124 id = work->data;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2125 fd = id->fd;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2126 match = -1;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2127 }
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2128 else /* work_fd */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2129 {
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2130 new_fd = work_fd->data;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2131 match = 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2132 }
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2133
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2134 if (match < 0)
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2135 {
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2136 /* file no longer exists, delete from vf->list */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2137 GList *to_delete = work;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2138 work = work->next;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2139 if (id == VFICON(vf)->prev_selection) VFICON(vf)->prev_selection = NULL;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2140 if (id == VFICON(vf)->click_id) VFICON(vf)->click_id = NULL;
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2141 file_data_unref(fd);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2142 g_free(id);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2143 vf->list = g_list_delete_link(vf->list, to_delete);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2144 }
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2145 else
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2146 {
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2147 /* new file, add to vf->list */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2148 id = g_new0(IconData, 1);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2149
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2150 id->selected = SELECTION_NONE;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2151 id->fd = file_data_ref(new_fd);
832
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2152 if (work)
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2153 vf->list = g_list_insert_before(vf->list, work, id);
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2154 else
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2155 new_iconlist = g_list_prepend(new_iconlist, id); /* it is faster to append all new entries together later */
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2156
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2157 work_fd = work_fd->next;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2158 }
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2159
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2160 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2161
832
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2162 if (new_iconlist)
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2163 {
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2164 vf->list = g_list_concat(vf->list, g_list_reverse(new_iconlist));
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2165 }
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2166
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2167 VFICON(vf)->selection = g_list_reverse(VFICON(vf)->selection);
832
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2168
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2169 filelist_free(new_filelist);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2170
831
b02a24ebf441 fixed iconview update after deletion of selected image
nadvornik
parents: 817
diff changeset
2171 vficon_populate(vf, TRUE, keep_position);
b02a24ebf441 fixed iconview update after deletion of selected image
nadvornik
parents: 817
diff changeset
2172
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2173 if (first_selected && !VFICON(vf)->selection)
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
2174 {
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
2175 /* all selected files disappeared */
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2176 vficon_select_closest(vf, first_selected);
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
2177 }
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2178 file_data_unref(first_selected);
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2179
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2180 /* attempt to keep focus on same icon when refreshing */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2181 if (focus_id && g_list_find(vf->list, focus_id))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2182 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2183 vficon_set_focus(vf, focus_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2184 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2185
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2186 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2187 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2188
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2189 gboolean vficon_refresh(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2190 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2191 return vficon_refresh_real(vf, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2192 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2193
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2194 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2195 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2196 * draw, etc.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2197 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2198 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2199
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2200 typedef struct _ColumnData ColumnData;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2201 struct _ColumnData
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2202 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2203 ViewFile *vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2204 gint number;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2205 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2206
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2207 static void vficon_cell_data_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2208 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2209 {
1621
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2210 GList *list;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2211 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2212 ColumnData *cd = data;
1621
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2213 ViewFile *vf = cd->vf;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2214
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2215 if (!GQV_IS_CELL_RENDERER_ICON(cell)) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2216
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2217 gtk_tree_model_get(tree_model, iter, FILE_COLUMN_POINTER, &list, -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2218
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2219 id = g_list_nth_data(list, cd->number);
1621
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2220
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2221 if (id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2222 {
1621
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2223 GdkColor color_fg;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2224 GdkColor color_bg;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2225 GtkStyle *style;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2226 gchar *name_sidecars;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2227 gchar *link;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2228 GtkStateType state = GTK_STATE_NORMAL;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2229
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2230 g_assert(id->fd->magick == 0x12345678);
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2231
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2232 link = islink(id->fd->path) ? GQ_LINK_STR : "";
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2233 if (id->fd->sidecar_files)
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2234 {
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2235 gchar *sidecars = file_data_sc_list_to_string(id->fd);
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2236 name_sidecars = g_strdup_printf("%s%s %s", link, id->fd->name, sidecars);
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2237 g_free(sidecars);
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2238 }
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2239 else
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2240 {
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2241 gchar *disabled_grouping = id->fd->disable_grouping ? _(" [NO GROUPING]") : "";
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2242 name_sidecars = g_strdup_printf("%s%s%s", link, id->fd->name, disabled_grouping);
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2243 }
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2244
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2245 style = gtk_widget_get_style(vf->listview);
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2246 if (id->selected & SELECTION_SELECTED)
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2247 {
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2248 state = GTK_STATE_SELECTED;
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2249 }
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2250
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2251 memcpy(&color_fg, &style->text[state], sizeof(color_fg));
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2252 memcpy(&color_bg, &style->base[state], sizeof(color_bg));
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2253
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2254 if (id->selected & SELECTION_PRELIGHT)
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2255 {
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2256 shift_color(&color_bg, -1, 0);
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2257 }
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2258
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2259 g_object_set(cell, "pixbuf", id->fd->thumb_pixbuf,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2260 "text", name_sidecars,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2261 "marks", file_data_get_marks(id->fd),
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2262 "show_marks", vf->marks_enabled,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2263 "cell-background-gdk", &color_bg,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2264 "cell-background-set", TRUE,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2265 "foreground-gdk", &color_fg,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2266 "foreground-set", TRUE,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2267 "has-focus", (VFICON(vf)->focus_id == id), NULL);
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2268 g_free(name_sidecars);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2269 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2270 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2271 {
1621
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2272 g_object_set(cell, "pixbuf", NULL,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2273 "text", NULL,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2274 "show_marks", FALSE,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2275 "cell-background-set", FALSE,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2276 "foreground-set", FALSE,
7d631a8de48e Minor code cleanup and redundancy reduction.
zas_
parents: 1608
diff changeset
2277 "has-focus", FALSE, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2278 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2279 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2280
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2281 static void vficon_append_column(ViewFile *vf, gint n)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2282 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2283 ColumnData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2284 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2285 GtkCellRenderer *renderer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2286
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2287 column = gtk_tree_view_column_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2288 gtk_tree_view_column_set_min_width(column, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2289
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2290 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2291 gtk_tree_view_column_set_alignment(column, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2292
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2293 renderer = gqv_cell_renderer_icon_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2294 gtk_tree_view_column_pack_start(column, renderer, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2295 g_object_set(G_OBJECT(renderer), "xpad", THUMB_BORDER_PADDING * 2,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2296 "ypad", THUMB_BORDER_PADDING,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2297 "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2298
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2299 g_object_set_data(G_OBJECT(column), "column_number", GINT_TO_POINTER(n));
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
2300 g_object_set_data(G_OBJECT(renderer), "column_number", GINT_TO_POINTER(n));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2301
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2302 cd = g_new0(ColumnData, 1);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2303 cd->vf = vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2304 cd->number = n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2305 gtk_tree_view_column_set_cell_data_func(column, renderer, vficon_cell_data_cb, cd, g_free);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2306
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2307 gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
2308
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
2309 g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(vficon_mark_toggled_cb), vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2310 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2311
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2312 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2313 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2314 * base
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2315 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2316 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2317
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2318 gboolean vficon_set_fd(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2319 {
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2320 gboolean ret;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2321
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2322 if (!dir_fd) return FALSE;
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2323 if (vf->dir_fd == dir_fd) return TRUE;
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2324
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2325 file_data_unref(vf->dir_fd);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2326 vf->dir_fd = file_data_ref(dir_fd);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2327
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2328 g_list_free(VFICON(vf)->selection);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2329 VFICON(vf)->selection = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2330
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2331 iconlist_free(vf->list);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2332 vf->list = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2333
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2334 /* NOTE: populate will clear the store for us */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2335 ret = vficon_refresh_real(vf, FALSE);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2336
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2337 VFICON(vf)->focus_id = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2338 vficon_move_focus(vf, 0, 0, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2339
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2340 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2341 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2342
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 562
diff changeset
2343 void vficon_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2344 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2345 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2346
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 812
diff changeset
2347 vf_refresh_idle_cancel(vf);
787
a2209b1f769d use new notification in vficon
nadvornik
parents: 783
diff changeset
2348
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 812
diff changeset
2349 file_data_unregister_notify_func(vf_notify_cb, vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2350
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2351 tip_unschedule(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2352
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
2353 vf_thumb_cleanup(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2354
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2355 iconlist_free(vf->list);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2356 g_list_free(VFICON(vf)->selection);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2357 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2358
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2359 ViewFile *vficon_new(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2360 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2361 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2362 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2363 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2364
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2365 vf->info = g_new0(ViewFileInfoIcon, 1);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2366
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2367 VFICON(vf)->show_text = options->show_icon_names;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2368
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2369 store = gtk_list_store_new(1, G_TYPE_POINTER);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2370 vf->listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2371 g_object_unref(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2372
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2373 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2374 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_NONE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2375
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2376 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(vf->listview), FALSE);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2377 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(vf->listview), FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2378
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2379 for (i = 0; i < VFICON_MAX_COLUMNS; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2380 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2381 vficon_append_column(vf, i);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2382 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2383
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2384 /* zero width column to hide tree view focus, we draw it ourselves */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2385 vficon_append_column(vf, i);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2386 /* end column to fill white space */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2387 vficon_append_column(vf, i);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2388
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2389 g_signal_connect(G_OBJECT(vf->listview), "size_allocate",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2390 G_CALLBACK(vficon_sized_cb), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2391
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2392 gtk_widget_set_events(vf->listview, GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK |
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2393 GDK_BUTTON_PRESS_MASK | GDK_LEAVE_NOTIFY_MASK);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2394
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2395 g_signal_connect(G_OBJECT(vf->listview),"motion_notify_event",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2396 G_CALLBACK(vficon_motion_cb), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2397 g_signal_connect(G_OBJECT(vf->listview), "leave_notify_event",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2398 G_CALLBACK(vficon_leave_cb), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2399
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2400 /* force VFICON(vf)->columns to be at least 1 (sane) - this will be corrected in the size_cb */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2401 vficon_populate_at_new_size(vf, 1, 1, FALSE);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2402
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 812
diff changeset
2403 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
787
a2209b1f769d use new notification in vficon
nadvornik
parents: 783
diff changeset
2404
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2405 return vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2406 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2407
1055
1646720364cf Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents: 1005
diff changeset
2408 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */