annotate src/view_file_icon.c @ 1519:2c25cb0eca57

Remove unused field in IconData.
author zas_
date Mon, 06 Apr 2009 19:13:35 +0000
parents d352a44545a6
children 24a12aa0cb54
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
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
173 return 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
174 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
175
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
176 void vficon_pop_menu_view_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
177 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
178 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
179
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
180 if (!VFICON(vf)->click_id) return;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
181
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
182 if (VFICON(vf)->click_id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
183 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
184 GList *list;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
185
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
186 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
187 view_window_new_from_list(list);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
188 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
189 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
190 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
191 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
192 view_window_new(VFICON(vf)->click_id->fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
193 }
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
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
196 void vficon_pop_menu_rename_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
197 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
198 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
199
634
92208e71673b Introduce vf_pop_menu_file_list() as a wrapper to
zas_
parents: 633
diff changeset
200 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
201 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
203 void vficon_pop_menu_show_names_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
204 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
205 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
206
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
207 vficon_toggle_filenames(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
208 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
209
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
210 void vficon_pop_menu_refresh_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
212 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
213
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
214 vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
215 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
216
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
217 void vficon_popup_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
218 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
219 ViewFile *vf = data;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
220 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
221 VFICON(vf)->click_id = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
222 vf->popup = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
223 }
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 * signals
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
228 *-------------------------------------------------------------------
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
231 static void vficon_send_layout_select(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
232 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
233 FileData *read_ahead_fd = NULL;
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
234 FileData *sel_fd;
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
235 FileData *cur_fd;
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
236
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
237 if (!vf->layout || !id || !id->fd) return;
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
238
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
239 sel_fd = id->fd;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
240
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
241 cur_fd = layout_image_get_fd(vf->layout);
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
242 if (sel_fd == cur_fd) return; /* no change */
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
243
334
df868b947aa0 Rename image-related options.
zas_
parents: 333
diff changeset
244 if (options->image.enable_read_ahead)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
245 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 gint row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
248 row = g_list_index(vf->list, id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
249 if (row > vficon_index_by_fd(vf, cur_fd) &&
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 671
diff changeset
250 (guint) (row + 1) < vf_count(vf, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
252 read_ahead_fd = vf_index_get_data(vf, row + 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254 else if (row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
256 read_ahead_fd = vf_index_get_data(vf, row - 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
257 }
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
260 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
261 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
263 static void vficon_toggle_filenames(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
264 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
265 VFICON(vf)->show_text = !VFICON(vf)->show_text;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
266 options->show_icon_names = VFICON(vf)->show_text;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
267
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
268 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
269 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
271 static gint vficon_get_icon_width(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
272 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
273 gint width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
275 if (!VFICON(vf)->show_text) return options->thumbnails.max_width;
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
276
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
277 width = options->thumbnails.max_width + options->thumbnails.max_width / 2;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
278 if (width < THUMB_MIN_ICON_WIDTH) width = THUMB_MIN_ICON_WIDTH;
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
279 if (width > THUMB_MAX_ICON_WIDTH) width = options->thumbnails.max_width;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
280
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281 return width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
282 }
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 * misc utils
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
287 *-------------------------------------------------------------------
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
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
290 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
291 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
292 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
293
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
294 n = g_list_index(vf->list, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
295
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
296 if (n < 0) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
298 *row = n / VFICON(vf)->columns;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
299 *col = n - (*row * VFICON(vf)->columns);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
300
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
301 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
302 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
303
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
304 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
305 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
306 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307 gint row, col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
308
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
309 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
310 if (!vficon_find_position(vf, id, &row, &col)) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
311 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
312 if (column) *column = col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
313
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
314 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
315 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
316
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
317 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
318 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
319 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
320 GtkTreeIter p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
321
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
322 if (row < 0 || col < 0) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
323
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
324 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
325 if (gtk_tree_model_iter_nth_child(store, &p, NULL, row))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
326 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
327 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
328
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
329 gtk_tree_model_get(store, &p, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
330 if (!list) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
331
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
332 if (iter) *iter = p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
333
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
334 return g_list_nth_data(list, col);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
335 }
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 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
338 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
339
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
340 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
341 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
342 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
343 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
344
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
345 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
346 &tpath, &column, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
347 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
348 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
349 GtkTreeIter row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
350 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
351 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
352
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
353 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
354 gtk_tree_model_get_iter(store, &row, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
355 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
356
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
357 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
358
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
359 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
360 if (list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
361 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362 if (iter) *iter = row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
363 return g_list_nth_data(list, n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
364 }
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 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
368 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
369
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
370 static void vficon_mark_toggled_cb(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
371 {
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
372 ViewFile *vf = data;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
373 GtkTreeModel *store;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
374 GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
375 GtkTreeIter row;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
376 gint column;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
377 GList *list;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
378 guint toggled_mark;
967
eb5dbdff14f6 Move variable declaration at start of block.
zas_
parents: 966
diff changeset
379 IconData *id;
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
380
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
381 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
382 if (!path || !gtk_tree_model_get_iter(store, &row, path))
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 968
diff changeset
383 return;
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
384
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
385 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
386
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
387 column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cell), "column_number"));
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
388 g_object_get(G_OBJECT(cell), "toggled_mark", &toggled_mark, NULL);
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
389
967
eb5dbdff14f6 Move variable declaration at start of block.
zas_
parents: 966
diff changeset
390 id = g_list_nth_data(list, column);
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
391 if (id)
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
392 {
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
393 FileData *fd = id->fd;
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
394 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
395 }
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
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
399 /*
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 * tooltip type window
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
402 *-------------------------------------------------------------------
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
405 static void tip_show(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
406 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
407 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
408 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
409
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
410 if (VFICON(vf)->tip_window) return;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
411
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
412 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
413
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
414 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
415 if (!VFICON(vf)->tip_id) return;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
416
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
417 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
418 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
419 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
420
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
421 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
422
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
423 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
424 gtk_container_add(GTK_CONTAINER(VFICON(vf)->tip_window), label);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
425 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
426
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
427 gdk_window_get_pointer(NULL, &x, &y, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
428
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
429 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
430 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
431 gtk_widget_show(VFICON(vf)->tip_window);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
432 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
433
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
434 static void tip_hide(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
435 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
436 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
437 VFICON(vf)->tip_window = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
438 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
439
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
440 static gboolean tip_schedule_cb(gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
441 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
442 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
443 GtkWidget *window;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
444
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
445 if (VFICON(vf)->tip_delay_id == -1) return FALSE;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
446
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
447 window = gtk_widget_get_toplevel(vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
448
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
449 if (GTK_WIDGET_SENSITIVE(window) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
450 GTK_WINDOW(window)->has_focus)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
451 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
452 tip_show(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
453 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
454
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
455 VFICON(vf)->tip_delay_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
456 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
457 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
458
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
459 static void tip_schedule(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
460 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
461 tip_hide(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
462
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
463 if (VFICON(vf)->tip_delay_id != -1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
464 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
465 g_source_remove(VFICON(vf)->tip_delay_id);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
466 VFICON(vf)->tip_delay_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
467 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
468
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
469 if (!VFICON(vf)->show_text)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
471 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
472 }
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
475 static void tip_unschedule(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
477 tip_hide(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
478
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
479 if (VFICON(vf)->tip_delay_id != -1) g_source_remove(VFICON(vf)->tip_delay_id);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
480 VFICON(vf)->tip_delay_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
481 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
482
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
483 static void tip_update(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
484 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
485 if (VFICON(vf)->tip_window)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
486 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
487 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
488
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
489 gdk_window_get_pointer(NULL, &x, &y, NULL);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
490 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
491
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
492 if (id != VFICON(vf)->tip_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
494 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
495
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
496 VFICON(vf)->tip_id = id;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
497
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
498 if (!VFICON(vf)->tip_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
500 tip_hide(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
501 tip_schedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
502 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
503 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
504
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
505 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
506 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
507 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
508 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
509 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
510 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
511 tip_schedule(vf);
9
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
514
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
515 /*
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 * dnd
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 static void vficon_dnd_get(GtkWidget *widget, GdkDragContext *context,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
522 GtkSelectionData *selection_data, guint info,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523 guint time, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
524 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
525 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 gchar *uri_text = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
529
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
530 if (!VFICON(vf)->click_id) return;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
531
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
532 if (VFICON(vf)->click_id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
533 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
534 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
535 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
538 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
539 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
541 if (!list) return;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
542 uri_text = uri_text_from_filelist(list, &total, (info == TARGET_TEXT_PLAIN));
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
543 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544
1164
3692efcbd325 Fix compilation warnings.
zas_
parents: 1055
diff changeset
545 DEBUG_1("%s", uri_text);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
546
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
547 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
548 8, (guchar *)uri_text, total);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
549 g_free(uri_text);
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
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
552 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
553 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
554 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
555 {
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 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
557
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 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
559 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
560
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 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
562 /* 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
563 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
564 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
565 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
566
1238
947e603a52c6 simplified metadata interface, dropped metadata_read,
nadvornik
parents: 1233
diff changeset
567 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
568 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
569 g_free(str);
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
570 /*
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
571 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
572 if (vf->layout && vf->layout->bar_info) {
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
573 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
574 }
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
575 */
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 }
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
577 }
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 }
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
579
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
580 static void vficon_dnd_begin(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
581 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
582 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
583
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
584 tip_unschedule(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
585
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
586 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
587 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
588 gint items;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
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->selected & SELECTION_SELECTED)
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
591 items = g_list_length(VFICON(vf)->selection);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
592 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
593 items = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
594
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
595 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
596 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
597 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
598
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
599 static void vficon_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
600 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
601 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
602
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
603 vficon_selection_remove(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
604
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
605 if (context->action == GDK_ACTION_MOVE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
606 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
607 vf_refresh(vf);
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
610 tip_unschedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
611 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
613 void vficon_dnd_init(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
614 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
615 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
616 dnd_file_drag_types, dnd_file_drag_types_count,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
617 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
618 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
619 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
620 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
621
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
622 g_signal_connect(G_OBJECT(vf->listview), "drag_data_get",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
623 G_CALLBACK(vficon_dnd_get), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
624 g_signal_connect(G_OBJECT(vf->listview), "drag_begin",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
625 G_CALLBACK(vficon_dnd_begin), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
626 g_signal_connect(G_OBJECT(vf->listview), "drag_end",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
627 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
628 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
629 G_CALLBACK(vficon_drag_data_received), vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
630 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
631
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
632 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
633 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
634 * cell updates
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
638 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
639 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
640 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
641 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
642
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
643 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
644
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
645
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646 if (id->selected == value) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
647 id->selected = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
648
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
649 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
650 if (iter)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
651 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
652 gtk_tree_model_get(store, iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
653 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
654 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
655 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
656 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
657 GtkTreeIter row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
658
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
659 if (vficon_find_iter(vf, id, &row, NULL))
9
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 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662 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
663 }
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
666
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
667 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
668 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
669 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
670
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
671 vficon_selection_set(vf, id, id->selected | mask, iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
672 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
673
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
674 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
675 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
676 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
677
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
678 vficon_selection_set(vf, id, id->selected & ~mask, iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
680
852
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
681 void vficon_marks_set(ViewFile *vf, gint enable)
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
682 {
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
683 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
684 }
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
685
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
686 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
687 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
688 * selections
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
689 *-------------------------------------------------------------------
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
692 static void vficon_verify_selections(ViewFile *vf)
9
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 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
695
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
696 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
697 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
698 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
699 IconData *id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
700 work = work->next;
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
701
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
702 if (vficon_index_by_id(vf, id) >= 0) continue;
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
703
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
704 VFICON(vf)->selection = g_list_remove(VFICON(vf)->selection, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
705 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
708 void vficon_select_all(ViewFile *vf)
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 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
711
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
712 g_list_free(VFICON(vf)->selection);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
713 VFICON(vf)->selection = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
714
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
715 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
716 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
717 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
718 IconData *id = work->data;
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
719 work = work->next;
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
720
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
721 VFICON(vf)->selection = g_list_append(VFICON(vf)->selection, id);
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
722 vficon_selection_add(vf, id, SELECTION_SELECTED, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
724
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
725 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
726 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
727
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
728 void vficon_select_none(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
729 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
730 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
731
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
732 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
733 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
734 {
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
735 IconData *id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
736 work = work->next;
577
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
737
5ded871a0968 Minor cleanup.
zas_
parents: 575
diff changeset
738 vficon_selection_remove(vf, id, SELECTION_SELECTED, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
739 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
740
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
741 g_list_free(VFICON(vf)->selection);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
742 VFICON(vf)->selection = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
743
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
744 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
745 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
746
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
747 void vficon_select_invert(ViewFile *vf)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
748 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
749 GList *work;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
750
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
751 work = vf->list;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
752 while (work)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
753 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
754 IconData *id = work->data;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
755 work = work->next;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
756
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
757 if (id->selected & SELECTION_SELECTED)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
758 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
759 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
760 vficon_selection_remove(vf, id, SELECTION_SELECTED, NULL);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
761 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
762 else
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
763 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
764 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
765 vficon_selection_add(vf, id, SELECTION_SELECTED, NULL);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
766 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
767 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 586
diff changeset
768
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
769 vf_send_update(vf);
601
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
772 static void vficon_select(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
773 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
774 VFICON(vf)->prev_selection = id;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
775
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
776 if (!id || id->selected & SELECTION_SELECTED) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
777
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
778 VFICON(vf)->selection = g_list_append(VFICON(vf)->selection, id);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
779 vficon_selection_add(vf, id, SELECTION_SELECTED, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
780
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
781 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
782 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
783
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
784 static void vficon_unselect(ViewFile *vf, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
785 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
786 VFICON(vf)->prev_selection = id;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
787
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
788 if (!id || !(id->selected & SELECTION_SELECTED) ) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
789
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
790 VFICON(vf)->selection = g_list_remove(VFICON(vf)->selection, id);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
791 vficon_selection_remove(vf, id, SELECTION_SELECTED, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
792
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
793 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
794 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
795
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
796 static void vficon_select_util(ViewFile *vf, IconData *id, gboolean select)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
797 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
798 if (select)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
799 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
800 vficon_select(vf, id);
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 else
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_unselect(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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
807
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
808 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
809 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
810 gint row1, col1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
811 gint row2, col2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
812 gint t;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
813 gint i, j;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
814
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
815 if (!vficon_find_position(vf, start, &row1, &col1) ||
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
816 !vficon_find_position(vf, end, &row2, &col2) ) return;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
817
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
818 VFICON(vf)->prev_selection = end;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
819
330
57a4ced53618 Rename collection options.
zas_
parents: 320
diff changeset
820 if (!options->collections.rectangular_selection)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
821 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
822 GList *work;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
823 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
824
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
825 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
826 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
827 id = start;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
828 start = end;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
829 end = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
830 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
831
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
832 work = g_list_find(vf->list, start);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
833 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
834 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
835 id = work->data;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
836 vficon_select_util(vf, id, select);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
837
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
838 if (work->data != end)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
839 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
840 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
841 work = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
842 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
843 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
844 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
845
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
846 if (row2 < row1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
847 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
848 t = row1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
849 row1 = row2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
850 row2 = t;
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 if (col2 < col1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
853 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
854 t = col1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
855 col1 = col2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
856 col2 = t;
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
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 499
diff changeset
859 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
860
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
861 for (i = row1; i <= row2; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
862 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
863 for (j = col1; j <= col2; j++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
864 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
865 IconData *id = vficon_find_data(vf, i, j, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
866 if (id) vficon_select_util(vf, id, select);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
867 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
868 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
869 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
870
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
871 gboolean vficon_index_is_selected(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
872 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
873 IconData *id = g_list_nth_data(vf->list, row);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
874
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
875 if (!id) return FALSE;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
876
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
877 return (id->selected & SELECTION_SELECTED);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
878 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
879
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 671
diff changeset
880 guint vficon_selection_count(ViewFile *vf, gint64 *bytes)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
881 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
882 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
883 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
884 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
885 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
886
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
887 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
888 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
889 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
890 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
891 FileData *fd = id->fd;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
892 g_assert(fd->magick == 0x12345678);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
893 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
894
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
895 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
896 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
897
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
898 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
899 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
900
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
901 return g_list_length(VFICON(vf)->selection);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
902 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
903
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
904 GList *vficon_selection_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
905 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
906 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
907 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
908
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
909 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
910 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
911 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
912 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
913 FileData *fd = id->fd;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
914 g_assert(fd->magick == 0x12345678);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
915
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
916 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
917
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
918 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
919 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
920
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
921 list = g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
922
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
923 return list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
924 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
925
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
926 GList *vficon_selection_get_list_by_index(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
927 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
928 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
929 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
930
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
931 work = VFICON(vf)->selection;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
932 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
933 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
934 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
935 work = work->next;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
938 return g_list_reverse(list);
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
941 static void vficon_select_by_id(ViewFile *vf, IconData *id)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
942 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
943 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
944
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
945 if (!(id->selected & SELECTION_SELECTED))
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
946 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
947 vf_select_none(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
948 vficon_select(vf, id);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
949 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
950
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
951 vficon_set_focus(vf, id);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
952 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
953
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
954 void vficon_select_by_fd(ViewFile *vf, FileData *fd)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
955 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
956 IconData *id = NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
957 GList *work;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
958
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
959 if (!fd) return;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
960 work = vf->list;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
961 while (work && !id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
962 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
963 IconData *chk = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
964 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
965 if (chk->fd == fd) id = chk;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
966 }
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
967 vficon_select_by_id(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
968 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
969
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
970 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
971 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
972 GList *work;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
973 gint n = mark - 1;
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
974
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
975 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
976
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
977 work = vf->list;
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
978 while (work)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
979 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
980 IconData *id = work->data;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
981 FileData *fd = id->fd;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
982 gboolean mark_val, selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
983
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
984 g_assert(fd->magick == 0x12345678);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
985
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
986 mark_val = file_data_get_mark(fd, n);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
987 selected = (id->selected & SELECTION_SELECTED);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
988
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
989 switch (mode)
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
990 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
991 case MTS_MODE_SET: selected = mark_val;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
992 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
993 case MTS_MODE_OR: selected = mark_val | selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
994 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
995 case MTS_MODE_AND: selected = mark_val & selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
996 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
997 case MTS_MODE_MINUS: selected = !mark_val & selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
998 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
999 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1000
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1001 vficon_select_util(vf, id, selected);
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 work = work->next;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1004 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1005 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1006
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1007 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
1008 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1009 GList *slist;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1010 GList *work;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1011 gint n = mark -1;
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1012
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1013 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1014
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1015 slist = vf_selection_get_list(vf);
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1016 work = slist;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1017 while (work)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1018 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1019 FileData *fd = work->data;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1020
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1021 switch (mode)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1022 {
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1023 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
1024 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1025 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
1026 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1027 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
1028 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1029 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1030 work = work->next;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1031 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1032 filelist_free(slist);
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1033 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1034
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1035 static void vficon_select_closest(ViewFile *vf, FileData *sel_fd)
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1036 {
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1037 GList *work;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1038 IconData *id = NULL;
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1039
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1040 if (sel_fd->parent) sel_fd = sel_fd->parent;
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1041 work = vf->list;
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1042
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1043 while (work)
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1044 {
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1045 gint match;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1046 FileData *fd;
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1047
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1048 id = work->data;
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1049 fd = id->fd;
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1050 work = work->next;
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1051
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1052 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
1053
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1054 if (match >= 0) break;
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1055 }
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1056
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1057 if (id)
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1058 {
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1059 vficon_select(vf, id);
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1060 vficon_send_layout_select(vf, id);
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1061 }
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1062 }
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
1063
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1064
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1065 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1066 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1067 * focus
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1068 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1069 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1070
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1071 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
1072 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1073 gint new_row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1074 gint new_col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1075
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1076 if (relative)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1077 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1078 new_row = VFICON(vf)->focus_row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1079 new_col = VFICON(vf)->focus_column;
9
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 new_row += row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1082 if (new_row < 0) new_row = 0;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1083 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
1084
516
b7e99bfeadc9 Convert the minority of while() to while ().
zas_
parents: 507
diff changeset
1085 while (col != 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1086 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1087 if (col < 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1088 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1089 new_col--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1090 col++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1091 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1092 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1093 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1094 new_col++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1095 col--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1096 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1097
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1098 if (new_col < 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1099 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1100 if (new_row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1101 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1102 new_row--;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1103 new_col = VFICON(vf)->columns - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1104 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1105 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1106 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1107 new_col = 0;
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 }
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1110 if (new_col >= VFICON(vf)->columns)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1111 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1112 if (new_row < VFICON(vf)->rows - 1)
9
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++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1115 new_col = 0;
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 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1119 new_col = VFICON(vf)->columns - 1;
9
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1122 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1124 else
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 = row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1127 new_col = col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1128
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1129 if (new_row >= VFICON(vf)->rows)
9
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 if (VFICON(vf)->rows > 0)
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1132 new_row = VFICON(vf)->rows - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1133 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1134 new_row = 0;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1135 new_col = VFICON(vf)->columns - 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1136 }
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1137 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
1138 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1139
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1140 if (new_row == VFICON(vf)->rows - 1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1141 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1142 gint l;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1143
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1144 /* if we moved beyond the last image, go to the last image */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1145
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1146 l = g_list_length(vf->list);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1147 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
1148 if (new_col >= l) new_col = l - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1149 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1150
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1151 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
1152 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1153
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1154 static void vficon_set_focus(ViewFile *vf, IconData *id)
9
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 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1157 gint row, col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1158
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1159 if (g_list_find(vf->list, VFICON(vf)->focus_id))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1160 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1161 if (id == VFICON(vf)->focus_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1162 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1163 /* ensure focus row col are correct */
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1164 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
1165 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1166 }
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1167 vficon_selection_remove(vf, VFICON(vf)->focus_id, SELECTION_FOCUS, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1168 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1170 if (!vficon_find_position(vf, id, &row, &col))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1171 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1172 VFICON(vf)->focus_id = NULL;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1173 VFICON(vf)->focus_row = -1;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1174 VFICON(vf)->focus_column = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1175 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1176 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1177
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1178 VFICON(vf)->focus_id = id;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1179 VFICON(vf)->focus_row = row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1180 VFICON(vf)->focus_column = col;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1181 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
1182
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1183 if (vficon_find_iter(vf, VFICON(vf)->focus_id, &iter, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1185 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1186 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1187 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1189 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
1190
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1191 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1192 tpath = gtk_tree_model_get_path(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1193 /* 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
1194 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
1195 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
1196 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1197 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1198 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1199
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 1002
diff changeset
1200 #if 0
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1201 static void vficon_update_focus(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1202 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1203 gint new_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1204 gint new_col = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1205
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1206 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
1207 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1208 /* first find the old focus, if it exists and is valid */
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1211 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1212 /* (try to) stay where we were */
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1213 new_row = VFICON(vf)->focus_row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1214 new_col = VFICON(vf)->focus_column;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1215 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1216
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1217 vficon_move_focus(vf, new_row, new_col, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1218 }
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 1002
diff changeset
1219 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1220
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1221 /* used to figure the page up/down distances */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1222 static gint page_height(ViewFile *vf)
9
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 GtkAdjustment *adj;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1225 gint page_size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1226 gint row_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1227 gint ret;
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 adj = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 page_size = (gint)adj->page_increment;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1231
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
1232 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
1233 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
1234
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1235 ret = page_size / row_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1236 if (ret < 1) ret = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1237
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1238 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1239 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1240
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1241 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243 * keyboard
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1244 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1245 */
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 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
1248 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1249 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1250 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1251 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252 gint column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1253 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1254 gint cw, ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1255
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1256 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
1257 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1258 tpath = gtk_tree_model_get_path(store, &iter);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1259 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
1260 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261 *y += ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262 popup_menu_position_clamp(menu, x, y, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1263 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1264
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1265 gboolean vficon_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1267 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1268 gint focus_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1269 gint focus_col = 0;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1270 IconData *id;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1271 gboolean stop_signal;
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1272
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1273 stop_signal = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274 switch (event->keyval)
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 case GDK_Left: case GDK_KP_Left:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1277 focus_col = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279 case GDK_Right: case GDK_KP_Right:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280 focus_col = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1281 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1282 case GDK_Up: case GDK_KP_Up:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1283 focus_row = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1284 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1285 case GDK_Down: case GDK_KP_Down:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1286 focus_row = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288 case GDK_Page_Up: case GDK_KP_Page_Up:
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1289 focus_row = -page_height(vf);
9
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_Page_Down: case GDK_KP_Page_Down:
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1292 focus_row = page_height(vf);
9
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_Home: case GDK_KP_Home:
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1295 focus_row = -VFICON(vf)->focus_row;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1296 focus_col = -VFICON(vf)->focus_column;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1297 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1298 case GDK_End: case GDK_KP_End:
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1299 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
1300 focus_col = VFICON(vf)->columns - 1 - VFICON(vf)->focus_column;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1301 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1302 case GDK_space:
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1303 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
1304 if (id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1306 VFICON(vf)->click_id = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 if (event->state & GDK_CONTROL_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1309 gint selected;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1310
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1311 selected = id->selected & SELECTION_SELECTED;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1312 if (selected)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1313 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1314 vficon_unselect(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1315 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1316 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1317 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1318 vficon_select(vf, id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1319 vficon_send_layout_select(vf, id);
9
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1322 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1323 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1324 vf_select_none(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1325 vficon_select(vf, id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1326 vficon_send_layout_select(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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1329 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1330 case GDK_Menu:
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1331 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
1332 VFICON(vf)->click_id = id;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1333
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1334 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
1335 tip_unschedule(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1336
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
1337 vf->popup = vf_pop_menu(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1338 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
1339 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1340 default:
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1341 stop_signal = FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1342 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1343 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1344
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1345 if (focus_row != 0 || focus_col != 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1346 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1347 IconData *new_id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1348 IconData *old_id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1349
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1350 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
1351 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
1352 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
1353
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1354 if (new_id != old_id)
9
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 if (event->state & GDK_SHIFT_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 {
330
57a4ced53618 Rename collection options.
zas_
parents: 320
diff changeset
1358 if (!options->collections.rectangular_selection)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1359 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1360 vficon_select_region_util(vf, old_id, new_id, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1361 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1364 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
1365 }
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1366 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
1367 vficon_send_layout_select(vf, new_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1368 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369 else if (event->state & GDK_CONTROL_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1370 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1371 VFICON(vf)->click_id = new_id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1375 VFICON(vf)->click_id = new_id;
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1376 vf_select_none(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1377 vficon_select(vf, new_id);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1378 vficon_send_layout_select(vf, new_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1379 }
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1383 if (stop_signal)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1384 {
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1385 #if 0
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1386 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
1387 #endif
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1388 tip_unschedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1389 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1390
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 return stop_signal;
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 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 * mouse
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1398 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1400 static gboolean vficon_motion_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1402 ViewFile *vf = data;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1403 IconData *id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1404
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1405 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
1406 tip_update(vf, id);
9
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 return FALSE;
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
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1411 gboolean vficon_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1412 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1413 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1414 GtkTreeIter iter;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1415 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1416
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1417 tip_unschedule(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1418
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1419 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
1420
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1421 VFICON(vf)->click_id = id;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1422 vficon_selection_add(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1423
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 switch (bevent->button)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425 {
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
1426 case MOUSE_BUTTON_LEFT:
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1427 if (!GTK_WIDGET_HAS_FOCUS(vf->listview))
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 gtk_widget_grab_focus(vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1430 }
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
1431 #if 1
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1432 if (bevent->type == GDK_2BUTTON_PRESS &&
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1433 vf->layout)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1434 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1435 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
1436 layout_image_full_screen_start(vf->layout);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1437 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1438 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1439 break;
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
1440 case MOUSE_BUTTON_RIGHT:
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
1441 vf->popup = vf_pop_menu(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1442 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
1443 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1444 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1445 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1446 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1447
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
1448 return FALSE;
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
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1451 gboolean vficon_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1452 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1453 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1454 GtkTreeIter iter;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1455 IconData *id = NULL;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1456 gboolean was_selected;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1457
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1458 tip_schedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1459
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1460 if ((gint)bevent->x != 0 || (gint)bevent->y != 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1461 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1462 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
1463 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1464
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1465 if (VFICON(vf)->click_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1466 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1467 vficon_selection_remove(vf, VFICON(vf)->click_id, SELECTION_PRELIGHT, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1468 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1469
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1470 if (!id || VFICON(vf)->click_id != id) return TRUE;
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1471
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1472 was_selected = !!(id->selected & SELECTION_SELECTED);
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1473
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1474 switch (bevent->button)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1475 {
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1476 case MOUSE_BUTTON_LEFT:
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1477 {
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1478 vficon_set_focus(vf, id);
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1479
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1480 if (bevent->state & GDK_CONTROL_MASK)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1481 {
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1482 gboolean select;
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1483
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1484 select = !(id->selected & SELECTION_SELECTED);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1485 if ((bevent->state & GDK_SHIFT_MASK) && VFICON(vf)->prev_selection)
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1486 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1487 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
1488 }
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1489 else
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1490 {
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1491 vficon_select_util(vf, id, select);
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1492 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1493 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1494 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1495 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1496 vf_select_none(vf);
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1497
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1498 if ((bevent->state & GDK_SHIFT_MASK) && VFICON(vf)->prev_selection)
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1499 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1500 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
1501 }
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1502 else
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1503 {
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1504 vficon_select_util(vf, id, TRUE);
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1505 was_selected = FALSE;
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1506 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1507 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1508 }
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1509 break;
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1510 case MOUSE_BUTTON_MIDDLE:
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1511 {
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1512 vficon_select_util(vf, id, !(id->selected & SELECTION_SELECTED));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1513 }
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1514 break;
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1515 default:
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1516 break;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1517 }
580
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1518
e27c374460d3 vficon_release_cb(): use switch() and cleanup.
zas_
parents: 579
diff changeset
1519 if (!was_selected && (id->selected & SELECTION_SELECTED))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1520 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1521 vficon_send_layout_select(vf, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1522 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1523
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1524 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1525 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1526
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1527 static gboolean vficon_leave_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1528 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1529 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1530
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1531 tip_unschedule(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1532 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1533 }
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 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1537 * population
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1538 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1539 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1540
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1541 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
1542 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1543 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1544
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1545 gtk_tree_model_get(store, iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1546 g_list_free(list);
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 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1549 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1550
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1551 static void vficon_clear_store(ViewFile *vf)
9
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 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1554
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1555 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1556 gtk_tree_model_foreach(store, vficon_destroy_node_cb, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1557
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1558 gtk_list_store_clear(GTK_LIST_STORE(store));
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
838
9bd49e725ad3 use FileData in thumb_loader
nadvornik
parents: 832
diff changeset
1561 static void vficon_set_thumb(ViewFile *vf, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1562 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1563 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1564 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1565 GList *list;
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 if (!vficon_find_iter(vf, vficon_icon_data(vf, fd), &iter, NULL)) return;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1568
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1569 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1570
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1571 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1572 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
1573 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1574
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1575 static GList *vficon_add_row(ViewFile *vf, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1576 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1577 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1578 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1579 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1580
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1581 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
1582
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1583 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
1584 gtk_list_store_append(store, iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1585 gtk_list_store_set(store, iter, FILE_COLUMN_POINTER, list, -1);
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 return list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1588 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1589
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1590 static void vficon_populate(ViewFile *vf, gboolean resize, gboolean keep_position)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1591 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1592 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1593 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1594 GList *work;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1595 IconData *visible_id = NULL;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1596 gint r, c;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1597 gboolean valid;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1598 GtkTreeIter iter;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1599
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1600 vficon_verify_selections(vf);
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 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1603
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1604 if (keep_position && GTK_WIDGET_REALIZED(vf->listview) &&
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1605 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
1606 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1607 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1608 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1609
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1610 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1611 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1612
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1613 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1614 if (list) visible_id = list->data;
9
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
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 if (resize)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1619 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1620 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1621 gint thumb_width;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1622
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1623 vficon_clear_store(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1624
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1625 thumb_width = vficon_get_icon_width(vf);
9
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 for (i = 0; i < VFICON_MAX_COLUMNS; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1628 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1629 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1630 GtkCellRenderer *cell;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1631 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1632
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1633 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
1634 gtk_tree_view_column_set_visible(column, (i < VFICON(vf)->columns));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1635 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
1636
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1637 list = gtk_tree_view_column_get_cell_renderers(column);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1638 cell = (list) ? list->data : NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1639 g_list_free(list);
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 if (cell && GQV_IS_CELL_RENDERER_ICON(cell))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1642 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1643 g_object_set(G_OBJECT(cell), "fixed_width", thumb_width,
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
1644 "fixed_height", options->thumbnails.max_height,
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1645 "show_text", VFICON(vf)->show_text,
852
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
1646 "show_marks", vf->marks_enabled,
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
1647 "num_marks", FILEDATA_MARKS_SIZE,
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
1648 NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1649 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1650 }
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1651 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
1652 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1653
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1654 r = -1;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1655 c = 0;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1656
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1657 valid = gtk_tree_model_iter_children(store, &iter, NULL);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1658
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1659 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1660 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1661 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1662 GList *list;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1663 r++;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1664 c = 0;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1665 if (valid)
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1666 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1667 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1668 gtk_list_store_set(GTK_LIST_STORE(store), &iter, FILE_COLUMN_POINTER, list, -1);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1669 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1670 else
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1671 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1672 list = vficon_add_row(vf, &iter);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1673 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1674
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1675 while (list)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1676 {
585
4875d67823b4 Revert wrong patch rev 676.
zas_
parents: 583
diff changeset
1677 IconData *id;
4875d67823b4 Revert wrong patch rev 676.
zas_
parents: 583
diff changeset
1678
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1679 if (work)
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1680 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1681 id = work->data;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1682 work = work->next;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1683 c++;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1684 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1685 else
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1686 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1687 id = NULL;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1688 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1689
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1690 list->data = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1691 list = list->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1692 }
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1693 if (valid) valid = gtk_tree_model_iter_next(store, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1694 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1695
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1696 r++;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1697 while (valid)
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1698 {
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1699 GList *list;
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1700
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1701 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1702 valid = gtk_list_store_remove(GTK_LIST_STORE(store), &iter);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1703 g_list_free(list);
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1704 }
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1705
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1706 VFICON(vf)->rows = r;
805
5a3fc27147ab improved vficon_populate
nadvornik
parents: 804
diff changeset
1707
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1708 if (visible_id &&
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1709 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
1710 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1711 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1712 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1713
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1714 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1715 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1716
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1717 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1718 if (g_list_find(list, visible_id) == NULL &&
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1719 vficon_find_iter(vf, visible_id, &iter, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1720 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1721 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
1722 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1723 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1724
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1725
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1726 vf_send_update(vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1727 vficon_thumb_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1728 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1729
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1730 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
1731 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1732 gint new_cols;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1733 gint thumb_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1734
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1735 thumb_width = vficon_get_icon_width(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1736
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1737 new_cols = w / (thumb_width + (THUMB_BORDER_PADDING * 6));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1738 if (new_cols < 1) new_cols = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1739
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1740 if (!force && new_cols == VFICON(vf)->columns) return;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1741
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1742 VFICON(vf)->columns = new_cols;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1743
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1744 vficon_populate(vf, TRUE, TRUE);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1745
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1746 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
1747 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1748
817
ad7f56cea841 dropped vficon_sync, use vficon_refresh everywhere
nadvornik
parents: 814
diff changeset
1749 #if 0
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1750 static void vficon_sync(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1751 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1752 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1753 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1754 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1755 gint r, c;
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1756 gint valid;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1757
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1758 if (VFICON(vf)->rows == 0) return;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1759
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1760 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1761
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1762 r = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1763 c = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1764
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1765 valid = gtk_tree_model_iter_children(store, &iter, NULL);
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1766
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1767 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1768 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1769 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1770 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1771 r++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1772 c = 0;
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1773 if (valid)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1774 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1775 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1776 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
1777 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1778 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1779 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1780 list = vficon_add_row(vf, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1781 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1782
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1783 while (list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1784 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1785 IconData *id;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1786
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1787 if (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1788 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1789 id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1790 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1791 c++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1792 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1793 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1794 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1795 id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1796 }
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1797
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1798 list->data = id;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1799 list = list->next;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1800 }
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1801 if (valid) valid = gtk_tree_model_iter_next(store, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1802 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1803
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1804 r++;
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1805 while (valid)
9
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 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1808
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1809 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
804
e702eaa6d1df vficon_sync speed-up
nadvornik
parents: 803
diff changeset
1810 valid = gtk_list_store_remove(GTK_LIST_STORE(store), &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1811 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1812 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1813
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1814 VFICON(vf)->rows = r;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1815
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1816 vficon_update_focus(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1817 }
817
ad7f56cea841 dropped vficon_sync, use vficon_refresh everywhere
nadvornik
parents: 814
diff changeset
1818 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1819
812
d29c2d191c58 use vficon_refresh for updating
nadvornik
parents: 811
diff changeset
1820 #if 0
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1821 static void vficon_sync_idle(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1822 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1823 if (VFICON(vf)->sync_idle_id == -1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1824 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1825 /* high priority, the view needs to be resynced before a redraw
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1826 * may contain invalid pointers at this time
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1827 */
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
1828 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
1829 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1830 }
812
d29c2d191c58 use vficon_refresh for updating
nadvornik
parents: 811
diff changeset
1831 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1832
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1833 static void vficon_sized_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1834 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1835 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1836
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1837 vficon_populate_at_new_size(vf, allocation->width, allocation->height, FALSE);
9
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 /*
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 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1843 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1844 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1845
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1846 void vficon_sort_set(ViewFile *vf, SortType type, gboolean ascend)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1847 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1848 if (vf->sort_method == type && vf->sort_ascend == ascend) return;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1849
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1850 vf->sort_method = type;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1851 vf->sort_ascend = ascend;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1852
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1853 if (!vf->list) return;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1854
817
ad7f56cea841 dropped vficon_sync, use vficon_refresh everywhere
nadvornik
parents: 814
diff changeset
1855 vf_refresh(vf);
9
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 /*
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 * thumb updates
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1861 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1862 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1863
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1864 static gboolean vficon_thumb_next(ViewFile *vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1865
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1866 static gdouble vficon_thumb_progress(ViewFile *vf)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1867 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1868 gint count = 0;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1869 gint done = 0;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1870
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1871 GList *work = vf->list;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1872 while (work)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1873 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1874 IconData *id = work->data;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1875 FileData *fd = id->fd;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1876 work = work->next;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1877
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1878 if (fd->thumb_pixbuf) done++;
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1879 count++;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1880 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1881 DEBUG_1("thumb progress: %d of %d", done, count);
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1882 return (gdouble)done / count;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1883 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1884
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1885 static void vficon_thumb_status(ViewFile *vf, gdouble val, const gchar *text)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1886 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1887 if (vf->func_thumb_status)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1888 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1889 vf->func_thumb_status(vf, val, text, vf->data_thumb_status);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1890 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1891 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1892
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1893 static void vficon_thumb_cleanup(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1894 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1895 vficon_thumb_status(vf, 0.0, NULL);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1896
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1897 vf->thumbs_running = FALSE;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1898
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1899 thumb_loader_free(vf->thumbs_loader);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1900 vf->thumbs_loader = NULL;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1901
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1902 vf->thumbs_filedata = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1903 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1904
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1905 static void vficon_thumb_stop(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1906 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1907 if (vf->thumbs_running) vficon_thumb_cleanup(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1908 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1909
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1910 static void vficon_thumb_do(ViewFile *vf, ThumbLoader *tl, FileData *fd)
9
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 if (!fd) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1913
838
9bd49e725ad3 use FileData in thumb_loader
nadvornik
parents: 832
diff changeset
1914 vficon_set_thumb(vf, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1915
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1916 vficon_thumb_status(vf, vficon_thumb_progress(vf), _("Loading thumbs..."));
9
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 static void vficon_thumb_error_cb(ThumbLoader *tl, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1920 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1921 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1922
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1923 if (vf->thumbs_filedata && vf->thumbs_loader == tl)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1924 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1925 vficon_thumb_do(vf, tl, vf->thumbs_filedata);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1926 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1927
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1928 while (vficon_thumb_next(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1929 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1930
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1931 static void vficon_thumb_done_cb(ThumbLoader *tl, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1932 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1933 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1934
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1935 if (vf->thumbs_filedata && vf->thumbs_loader == tl)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1936 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1937 vficon_thumb_do(vf, tl, vf->thumbs_filedata);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1938 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1939
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1940 while (vficon_thumb_next(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1941 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1942
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1943 static gboolean vficon_thumb_next(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1944 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1945 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1946 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1947
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1948 if (!GTK_WIDGET_REALIZED(vf->listview))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1949 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1950 vficon_thumb_status(vf, 0.0, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1951 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1952 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1953
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1954 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
1955 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1956 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1957 GtkTreeIter iter;
1437
a3d3208b0c50 gint -> gboolean.
zas_
parents: 1365
diff changeset
1958 gboolean valid = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1959
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1960 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1961 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1962 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1963
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1964 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
1965 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1966 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1967
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1968 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1969
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1970 while (!fd && list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1971 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1972 IconData *id = list->data;
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1973 if (id && !id->fd->thumb_pixbuf) fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1974 list = list->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1975 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1976
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1977 valid = gtk_tree_model_iter_next(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1978 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1979 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1980
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1981 /* then find first undone */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1982
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1983 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1984 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1985 GList *work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1986 while (work && !fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1987 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1988 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1989 FileData *fd_p = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1990 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1991
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1992 if (!fd_p->thumb_pixbuf) fd = fd_p;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1993 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1994 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1995
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1996 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1997 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1998 /* done */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
1999 vficon_thumb_cleanup(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2000 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2001 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2002
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2003 vf->thumbs_filedata = fd;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2004
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2005 thumb_loader_free(vf->thumbs_loader);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2006
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2007 vf->thumbs_loader = thumb_loader_new(options->thumbnails.max_width, options->thumbnails.max_height);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2008 thumb_loader_set_callbacks(vf->thumbs_loader,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2009 vficon_thumb_done_cb,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2010 vficon_thumb_error_cb,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2011 NULL,
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2012 vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2013
838
9bd49e725ad3 use FileData in thumb_loader
nadvornik
parents: 832
diff changeset
2014 if (!thumb_loader_start(vf->thumbs_loader, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2015 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2016 /* set icon to unknown, continue */
838
9bd49e725ad3 use FileData in thumb_loader
nadvornik
parents: 832
diff changeset
2017 DEBUG_1("thumb loader start failed %s", fd->path);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2018 vficon_thumb_do(vf, vf->thumbs_loader, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2019
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2020 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2021 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2022
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2023 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2024 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2025
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2026 void vficon_thumb_update(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2027 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2028 vficon_thumb_stop(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2029
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2030 vficon_thumb_status(vf, 0.0, _("Loading thumbs..."));
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2031 vf->thumbs_running = TRUE;
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2032
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2033 if (thumb_format_changed)
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2034 {
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2035 GList *work = vf->list;
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2036 while (work)
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2037 {
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2038 IconData *id = work->data;
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2039 FileData *fd = id->fd;
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2040 if (fd->thumb_pixbuf)
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2041 {
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2042 g_object_unref(fd->thumb_pixbuf);
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2043 fd->thumb_pixbuf = NULL;
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2044 }
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2045 work = work->next;
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2046 }
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2047
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2048 thumb_format_changed = FALSE;
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
2049 }
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2050
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2051 while (vficon_thumb_next(vf));
9
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 * row stuff
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
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2060 FileData *vficon_index_get_data(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2061 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2062 IconData *id;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2063
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2064 id = g_list_nth_data(vf->list, row);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2065 return id ? id->fd : NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2066 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2067
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2068
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2069 gint vficon_index_by_fd(ViewFile *vf, FileData *in_fd)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2070 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2071 gint p = 0;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2072 GList *work;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2073
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2074 if (!in_fd) return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2075
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2076 work = vf->list;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2077 while (work)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2078 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2079 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2080 FileData *fd = id->fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2081 if (fd == in_fd) return p;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2082 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2083 p++;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2084 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2085
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2086 return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2087 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2088
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2089 static gint vficon_index_by_id(ViewFile *vf, IconData *in_id)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2090 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2091 gint p = 0;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2092 GList *work;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2093
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2094 if (!in_id) return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2095
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2096 work = vf->list;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2097 while (work)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2098 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2099 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2100 if (id == in_id) return p;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2101 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2102 p++;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2103 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2104
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2105 return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2106 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2107
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 671
diff changeset
2108 guint vficon_count(ViewFile *vf, gint64 *bytes)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2109 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2110 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2111 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2112 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2113 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2114
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2115 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2116 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2117 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2118 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2119 FileData *fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2120 work = work->next;
579
2ef88100cee2 Minor tidyup.
zas_
parents: 578
diff changeset
2121
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2122 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2123 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2124
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2125 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2126 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2127
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2128 return g_list_length(vf->list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2129 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2130
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2131 GList *vficon_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2132 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2133 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2134 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2135
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2136 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2137 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2138 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2139 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2140 FileData *fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2141 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2142
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2143 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2144 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2145
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2146 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2147 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2148
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2149 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2150 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2151 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2152 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2153 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2154
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2155 static gboolean vficon_refresh_real(ViewFile *vf, gboolean keep_position)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2156 {
1437
a3d3208b0c50 gint -> gboolean.
zas_
parents: 1365
diff changeset
2157 gboolean ret = TRUE;
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2158 GList *work, *work_fd;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2159 IconData *focus_id;
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2160 GList *new_filelist = NULL;
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2161 FileData *first_selected = NULL;
832
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2162 GList *new_iconlist = NULL;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2163
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2164 focus_id = VFICON(vf)->focus_id;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2165
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2166 if (vf->dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2167 {
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2168 ret = filelist_read(vf->dir_fd, &new_filelist, NULL);
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 904
diff changeset
2169 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
2170 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2171
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2172 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
2173 new_filelist = filelist_sort(new_filelist, vf->sort_method, vf->sort_ascend);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2174
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2175 if (VFICON(vf)->selection)
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2176 {
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2177 first_selected = ((IconData *)(VFICON(vf)->selection->data))->fd;
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2178 file_data_ref(first_selected);
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2179 g_list_free(VFICON(vf)->selection);
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2180 VFICON(vf)->selection = NULL;
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2181
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2182
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2183 }
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
2184
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2185 /* check for same files from old_list */
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2186 work = vf->list;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2187 work_fd = new_filelist;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2188 while (work || work_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2189 {
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2190 IconData *id = NULL;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2191 FileData *fd = NULL;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2192 FileData *new_fd = NULL;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2193 gint match;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2194
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2195 if (work && work_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2196 {
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2197 id = work->data;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2198 fd = id->fd;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2199
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2200 new_fd = work_fd->data;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2201
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2202 if (fd == new_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2203 {
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2204 /* not changed, go to next */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2205 work = work->next;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2206 work_fd = work_fd->next;
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2207 if (id->selected & SELECTION_SELECTED)
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2208 {
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2209 VFICON(vf)->selection = g_list_prepend(VFICON(vf)->selection, id);
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2210 }
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2211 continue;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2212 }
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2213
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2214 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
2215 if (match == 0) g_warning("multiple fd for the same path");
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2216 }
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2217 else if (work)
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2218 {
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2219 id = work->data;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2220 fd = id->fd;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2221 match = -1;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2222 }
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2223 else /* work_fd */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2224 {
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2225 new_fd = work_fd->data;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2226 match = 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2227 }
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2228
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2229 if (match < 0)
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2230 {
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2231 /* file no longer exists, delete from vf->list */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2232 GList *to_delete = work;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2233 work = work->next;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2234 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
2235 if (id == VFICON(vf)->click_id) VFICON(vf)->click_id = NULL;
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2236 file_data_unref(fd);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2237 g_free(id);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2238 vf->list = g_list_delete_link(vf->list, to_delete);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2239 }
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2240 else
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2241 {
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2242 /* new file, add to vf->list */
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2243 id = g_new0(IconData, 1);
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2244
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2245 id->selected = SELECTION_NONE;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2246 id->fd = file_data_ref(new_fd);
832
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2247 if (work)
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2248 vf->list = g_list_insert_before(vf->list, work, id);
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2249 else
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2250 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
2251
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2252 work_fd = work_fd->next;
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2253 }
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2254
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2255 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2256
832
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2257 if (new_iconlist)
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2258 {
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2259 vf->list = g_list_concat(vf->list, g_list_reverse(new_iconlist));
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2260 }
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2261
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2262 VFICON(vf)->selection = g_list_reverse(VFICON(vf)->selection);
832
a14d7da2736d iconlist_refresh optimization
nadvornik
parents: 831
diff changeset
2263
810
602cec932587 optimized vficon_refresh_real
nadvornik
parents: 805
diff changeset
2264 filelist_free(new_filelist);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2265
831
b02a24ebf441 fixed iconview update after deletion of selected image
nadvornik
parents: 817
diff changeset
2266 vficon_populate(vf, TRUE, keep_position);
b02a24ebf441 fixed iconview update after deletion of selected image
nadvornik
parents: 817
diff changeset
2267
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2268 if (first_selected && !VFICON(vf)->selection)
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
2269 {
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
2270 /* all selected files disappeared */
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2271 vficon_select_closest(vf, first_selected);
811
f1ce59985518 handle deletion of selected files
nadvornik
parents: 810
diff changeset
2272 }
996
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2273 file_data_unref(first_selected);
4794cf5ecd8e correctly maintain selection during iconlist refresh
nadvornik
parents: 995
diff changeset
2274
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2275 /* attempt to keep focus on same icon when refreshing */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2276 if (focus_id && g_list_find(vf->list, focus_id))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2277 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2278 vficon_set_focus(vf, focus_id);
9
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2281 return ret;
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
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2284 gboolean vficon_refresh(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2285 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2286 return vficon_refresh_real(vf, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2287 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2288
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 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2291 * draw, etc.
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 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2294
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2295 typedef struct _ColumnData ColumnData;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2296 struct _ColumnData
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2297 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2298 ViewFile *vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2299 gint number;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2300 };
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 static void vficon_cell_data_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2303 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2304 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2305 ColumnData *cd = data;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2306 ViewFile *vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2307 GtkStyle *style;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2308 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2309 GdkColor color_fg;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2310 GdkColor color_bg;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2311 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2312
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2313 vf = cd->vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2314
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2315 gtk_tree_model_get(tree_model, iter, FILE_COLUMN_POINTER, &list, -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2316
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2317 id = g_list_nth_data(list, cd->number);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2318
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2319 if (id) g_assert(id->fd->magick == 0x12345678);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2320
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2321 style = gtk_widget_get_style(vf->listview);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2322 if (id && id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2323 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2324 memcpy(&color_fg, &style->text[GTK_STATE_SELECTED], sizeof(color_fg));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2325 memcpy(&color_bg, &style->base[GTK_STATE_SELECTED], sizeof(color_bg));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2326 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2327 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2328 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2329 memcpy(&color_fg, &style->text[GTK_STATE_NORMAL], sizeof(color_fg));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2330 memcpy(&color_bg, &style->base[GTK_STATE_NORMAL], sizeof(color_bg));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2331 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2332
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2333 if (id && id->selected & SELECTION_PRELIGHT)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2334 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2335 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2336 shift_color(&color_fg, -1, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2337 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2338 shift_color(&color_bg, -1, 0);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2341 if (GQV_IS_CELL_RENDERER_ICON(cell))
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2342 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2343 if (id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2344 {
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2345 gchar *name_sidecars;
851
6e521e987105 show sidecars in icon view
nadvornik
parents: 845
diff changeset
2346 gchar *sidecars = NULL;
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2347 gchar *link = islink(id->fd->path) ? GQ_LINK_STR : "";
851
6e521e987105 show sidecars in icon view
nadvornik
parents: 845
diff changeset
2348
6e521e987105 show sidecars in icon view
nadvornik
parents: 845
diff changeset
2349 if (id->fd->sidecar_files)
6e521e987105 show sidecars in icon view
nadvornik
parents: 845
diff changeset
2350 {
6e521e987105 show sidecars in icon view
nadvornik
parents: 845
diff changeset
2351 sidecars = file_data_sc_list_to_string(id->fd);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2352 name_sidecars = g_strdup_printf("%s%s %s", link, id->fd->name, sidecars);
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2353 }
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2354 else
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2355 {
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2356 name_sidecars = g_strdup_printf("%s%s", link, id->fd->name);
851
6e521e987105 show sidecars in icon view
nadvornik
parents: 845
diff changeset
2357 }
6e521e987105 show sidecars in icon view
nadvornik
parents: 845
diff changeset
2358
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
2359 g_object_set(cell, "pixbuf", id->fd->thumb_pixbuf,
851
6e521e987105 show sidecars in icon view
nadvornik
parents: 845
diff changeset
2360 "text", name_sidecars,
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
2361 "marks", file_data_get_marks(id->fd),
852
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
2362 "show_marks", vf->marks_enabled,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2363 "cell-background-gdk", &color_bg,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2364 "cell-background-set", TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2365 "foreground-gdk", &color_fg,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2366 "foreground-set", TRUE,
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2367 "has-focus", (VFICON(vf)->focus_id == id), NULL);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2368 g_free(sidecars);
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
2369 g_free(name_sidecars);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2370 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2371 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2372 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2373 g_object_set(cell, "pixbuf", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2374 "text", NULL,
852
8308d3606991 show marks in iconview
nadvornik
parents: 851
diff changeset
2375 "show_marks", FALSE,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2376 "cell-background-set", FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2377 "foreground-set", FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2378 "has-focus", FALSE, NULL);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2379 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2380 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2381 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2382
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2383 static void vficon_append_column(ViewFile *vf, gint n)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2384 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2385 ColumnData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2386 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2387 GtkCellRenderer *renderer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2388
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2389 column = gtk_tree_view_column_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2390 gtk_tree_view_column_set_min_width(column, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2391
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2392 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2393 gtk_tree_view_column_set_alignment(column, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2394
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2395 renderer = gqv_cell_renderer_icon_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2396 gtk_tree_view_column_pack_start(column, renderer, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2397 g_object_set(G_OBJECT(renderer), "xpad", THUMB_BORDER_PADDING * 2,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2398 "ypad", THUMB_BORDER_PADDING,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2399 "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2400
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2401 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
2402 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
2403
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2404 cd = g_new0(ColumnData, 1);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2405 cd->vf = vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2406 cd->number = n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2407 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
2408
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2409 gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
966
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
2410
c24a297efbef marks in iconview made clickable
nadvornik
parents: 964
diff changeset
2411 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
2412 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2413
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2414 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2415 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2416 * base
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2417 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2418 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2419
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2420 gboolean vficon_set_fd(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2421 {
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2422 gboolean ret;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2423
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2424 if (!dir_fd) return FALSE;
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2425 if (vf->dir_fd == dir_fd) return TRUE;
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2426
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2427 file_data_unref(vf->dir_fd);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2428 vf->dir_fd = file_data_ref(dir_fd);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2429
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2430 g_list_free(VFICON(vf)->selection);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2431 VFICON(vf)->selection = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2432
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2433 iconlist_free(vf->list);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2434 vf->list = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2435
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2436 /* NOTE: populate will clear the store for us */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2437 ret = vficon_refresh_real(vf, FALSE);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2438
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2439 VFICON(vf)->focus_id = NULL;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2440 vficon_move_focus(vf, 0, 0, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2441
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2442 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2443 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2444
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 562
diff changeset
2445 void vficon_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2446 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2447 ViewFile *vf = data;
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2448
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 812
diff changeset
2449 vf_refresh_idle_cancel(vf);
787
a2209b1f769d use new notification in vficon
nadvornik
parents: 783
diff changeset
2450
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 812
diff changeset
2451 file_data_unregister_notify_func(vf_notify_cb, vf);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2452
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2453 tip_unschedule(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2454
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2455 vficon_thumb_cleanup(vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2456
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2457 iconlist_free(vf->list);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2458 g_list_free(VFICON(vf)->selection);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2459 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2460
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 763
diff changeset
2461 ViewFile *vficon_new(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2462 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2463 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2464 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2465 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2466
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2467 vf->info = g_new0(ViewFileInfoIcon, 1);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2468
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2469 VFICON(vf)->tip_delay_id = -1;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2470 VFICON(vf)->show_text = options->show_icon_names;
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2471
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2472 store = gtk_list_store_new(1, G_TYPE_POINTER);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2473 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
2474 g_object_unref(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2475
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2476 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2477 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_NONE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2478
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2479 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
2480 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
2481
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2482 for (i = 0; i < VFICON_MAX_COLUMNS; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2483 {
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2484 vficon_append_column(vf, i);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2485 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2486
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2487 /* 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
2488 vficon_append_column(vf, i);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2489 /* end column to fill white space */
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2490 vficon_append_column(vf, i);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2491
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2492 g_signal_connect(G_OBJECT(vf->listview), "size_allocate",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2493 G_CALLBACK(vficon_sized_cb), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2494
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2495 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
2496 GDK_BUTTON_PRESS_MASK | GDK_LEAVE_NOTIFY_MASK);
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2497
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2498 g_signal_connect(G_OBJECT(vf->listview),"motion_notify_event",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2499 G_CALLBACK(vficon_motion_cb), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2500 g_signal_connect(G_OBJECT(vf->listview), "leave_notify_event",
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2501 G_CALLBACK(vficon_leave_cb), vf);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2502
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 967
diff changeset
2503 /* 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
2504 vficon_populate_at_new_size(vf, 1, 1, FALSE);
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2505
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 812
diff changeset
2506 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
787
a2209b1f769d use new notification in vficon
nadvornik
parents: 783
diff changeset
2507
574
3da75054d4e1 Drop ViewFileIcon, use ViewFile and ViewFileInfoIcon instead.
zas_
parents: 573
diff changeset
2508 return vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2509 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2510
1055
1646720364cf Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents: 1005
diff changeset
2511 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */