summaryrefslogtreecommitdiff
path: root/ChangeLog.gtk-async-file-chooser
blob: 9160422690d6ccb27701ec054c4ff2d49990093a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
2006-04-30  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystem.[ch] (gtk_file_info_render_icon): remove the
	caching code,
	(gtk_file_info_get_icon_name): new function,
	(gtk_file_system_volume_get_icon_name): new function,
	(gtk_file_system_volume_render_icon): refactor to use
	get_icon_name() and render the icon on the fly.

	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon),
	(gtk_file_system_unix_volume_get_icon_name): reflect updates in
	file system interface,
	(get_fallback_icon): remove, along with icon caching code.

	* gtk/gtk.symbols: updated.

2006-04-30  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystemmodel.c (got_root_folder_cb), (ref_path_cb),
	(get_children_get_folder_cb): don't leak the handle,
	(got_root_folder_cb), (get_children_get_folder_cb): emit
	row-inserted for the newly added nodes.

2006-04-30  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (file_list_drag_data_select_uris),
	(file_list_drag_data_received_get_info_cb),
	(file_list_drag_data_received_cb): refactor code for selecting
	multiple uris into file_list_drag_data_select_uris().

2006-04-23  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb): don't
	leak handle,
	(change_icon_theme_get_info_cb), (set_info_get_info_cb),
	(model_add_special_get_info_cb), (update_label_get_info_cb): ditto.

	* gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb):
	don't leak the handle,
	(get_file_info_finished), (edited_idle_create_folder_cb),
	(file_list_drag_data_received_get_info_cb),
	(show_and_select_paths_get_folder_cb),
	(update_current_folder_get_info_cb), (add_shortcut_get_info_cb),
	(confirmation_confirm_get_info_cb), (action_create_folder_cb),
	(save_entry_get_info_cb), (shortcuts_activate_volume_mount_cb),
	(shortcuts_activate_get_info_cb), (update_from_entry_get_info_cb):
	ditto.

	* gtk/gtkfilechooserentry.c (load_directory_get_folder_callback):
	don't leak the handle.

	* gtk/gtkpathbar.c (set_button_image_get_info_cb),
	(gtk_path_bar_get_info_callback): don't leak the handle.

2006-04-23  Kristian Rietveld  <kris@imendio.com>

	Review.

	* gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb):
	don't forget to unref data->impl at the end.

2006-04-23  Kristian Rietveld  <kris@imendio.com>

	Review, continued.

	* gtk/gtkfilechooserdialog.c (response_cb): set response_requested
	to FALSE after stopping emission of the response signal.

2006-03-16  Kristian Rietveld  <kris@imendio.com>

	More review work.

	* gtk/gtkfilechooserprivate.h: remove idle_finished_loading_source
	from GtkFileSystemModel.

	* gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): remove
	idle_finished_loading_source,
	(idle_finished_loading_cb), (queue_finished_loading): removed,
	(got_root_folder_cb): save a list walk, immediately emit
	finished-loading and don't queue it, since we are already in an
	idle here, always list_children() so the children the folder already
	has are returned, 
	(_gtk_file_system_model_new): handle the case where NULL is
	returned by _get_folder(),
	(_gtk_file_system_model_path_do): remove comment, and append the
	new handle to the list, don't try to remove,
	(get_children_get_folder_cb): save a list walk, remove the dummy
	child if the _get_folder() call fails or is cancelled.

2006-03-14  Kristian Rietveld  <kris@imendio.com>

	More suggestions from Federico.

	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder):
	remove check for filename_is_root(), since we never hit that code
	and else mkdir will fail anyway,
	(gtk_file_system_unix_create_folder): fixup parent folder refresh
	code.

2006-03-14  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystemunix.c (read_hidden_file), (fill_in_hidden),
	(get_is_hidden_for_file): factor out g_file_get_contents() code
	in read_hidden_file().  (Federico Mena Quintero).

2006-03-14  Kristian Rietveld  <kris@imendio.com>

	Icon name code suggestions by Federico Mena Quintero.

	* gtk/gtkfilesystemunix.c: add GTK_FILE_INFO_ICON to
	STAT_NEEDED_MASK,
	(get_fallback_icon_name), (get_fallback_icon),
	(get_icon_name_for_directory), (get_special_icon_name): get rid
	of strdups,
	(get_icon_type_from_path): add a statbuf argument and use the
	statbuf when folder_unix is NULL,
	(create_file_info): adapt to work with above changes.

2006-03-14  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): path
	is NULL is an error here (gtk_file_system_get_info() already guards
	path = NULL),
	(gtk_file_system_unix_get_info): move basename creation to just
	before create_file_info().  (Federico Mena Quintero).

2006-03-14  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystemunix.c (struct _GtkFileFolderUnix): add
	load_folder_id field,
	(load_folder): add thread enter/leave construct, set load_folder_id
	to zero since we have the idle removed when we return,
	(gtk_file_system_unix_get_folder): initialize load_folder_id to 0
	and store the source id of the load_folder idle,
	(gtk_file_folder_unix_finalize): remove the load_folder idle
	if necessary.  (Federico Mena Quintero).

2006-03-14  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooser.c (gtk_file_chooser_get_current_folder): return
	NULL if there is no current folder path.

	* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_map): we
	reload the current folder if there is one, else we continue the
	still pending load.

2006-03-14  Kristian Rietveld  <kris@imendio.com>

	Couple of fixes from Markku Vire.

	* gtk/gtkfilesystem.c (gtk_file_info_copy): also strdup icon_name
	and display_key.

	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder):
	initialize error to NULL,
	(gtk_file_folder_unix_list_children): return an empty list for now if
	we couldn't read the directory.

2005-12-23  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb),
	(gtk_file_chooser_default_update_current_folder): set and unset
	busy cursor while checking whether the given path is a folder.

2005-12-23  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystem.h: change the GtkFileInfo argument of the
	GetInfoCallback to be const.

	* gtk/gtkfilechooserbutton.c, gtk/gtkfilechooserdefault.c,
	gtk/gtkpathbar.c: changes functions to reflect the above change.

2005-12-23  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c, gtk/gtkfilechooserprivate.h: keep track
	of handles, cancel all pending operations on dispose.

2005-12-23  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserprivate.h (struct _GtkFileSystemModel): add
	pending_handles field,
	(struct _FileModelNode): add load_pending flag.

	* gtk/gtkfilesystemmodel.c (gtk_file_system_model_dispose): introduce, 
	cancel all pending operations here,
	(got_root_folder_cb), (_gtk_file_system_model_new), (ref_path_cb),
	(_gtk_file_system_model_path_do): keep track of all pending
	operations, handle cancelled operations.

2005-12-23  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize),
	(gtk_file_chooser_button_destroy): move all handle cancellations
	and object unrefs to destroy.

	* gtk/gtkpathbar.c (gtk_path_bar_finalize), (gtk_path_bar_dispose):
	likewise.

	* gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_class_init): 
	add dispose,
	(gtk_file_chooser_entry_dispose): cancel handles and unrefs
	objects here instead of finalize.

2005-12-23  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystem.c (get_cached_icon): check if "name" is an
	absolute path, if so load the icon from that file.

	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): fix
	the build.

2005-12-21  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): remove
	the FIXME since it doesn't make sense, when we return a cached
	folder we won't emit finished-loading either,
	(gtk_file_system_unix_create_folder): remove unused variable,
	(gtk_file_folder_unix_list_children): remove unused code,
	(get_is_hidden_for_file): new function,
	(create_file_info): also handle getting is_hidden when called
	without a folder unix (from _system_get_info() for example).

2005-12-20  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (check_is_folder): fully removed!
	woo!,
	(check_save_entry): add is_folder argument,
	(gtk_file_chooser_default_get_paths): update check_save_entry() call,
	(get_display_name_for_folder): removed,
	(confirmation_confirm_get_info_cb): new function which will
	handle the confirmation dialog now we have all information for it,
	(should_respond_after_confirm_overwrite): replace the call to
	get_display_name_for_folder() with an asynchronous solution,
	(action_create_folder_cb): request dialog response on successfull
	folder creation,
	(gtk_file_chooser_default_should_respond): update call to
	check_save_entry(); replace the check is folder call for "path"
	by just using the is_folder return value from check_save_entry();
	replaced the check is folder call for "parent_path" with an
	asynchronous setup, remainder of that work is now done in
	save_entry_get_info_cb(),
	(save_entry_get_info_cb): new function.

	* gtk/gtkfilechoosermebed.[ch]: add response-requested signal.

	* gtk/gtkfilechooserdialog.c, gtk/gtkfilechooserprivate.h: handle
	response_requested signal.

	* gtk/gtkfilechooserentry.[ch]
	(_gtk_file_chooser_entry_get_is_folder): new function.

2005-12-20  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (ref_path_cb): when called with
	!folder, check if node is the node we are looking for (can be
	triggered when we call ref_path_cb ourselves after a find_child_node),
	(_gtk_file_system_model_path_do): introduce parent_node field;
	after finding a child node in a loaded parent node, don't forget
	to call ref_path_cb,
	(get_children_get_folder_cb): don't forget to set data->node->folder
	to the newly acquired folder.

2005-12-20  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (show_and_select_paths_get_folder_cb):
	handle case where the folder we get already finished loading.

	* gtk/gtkfilesystemmodel.c (ref_path_cb),
	(_gtk_file_system_model_path_do): make this work.

2005-12-19  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (shortcuts_update_count): modify
	in such a way that it can also negatively update the count on
	failures,
	(get_file_info_finished): handle failures, update save folder
	combo box on success,
	(shortcuts_insert_path): change the boolean return value into a
	void one, also refilter the model and update the save folder combo
	box for the non-asynchronous case,
	(shortcuts_append_home), (shortcuts_append_desktop),
	(shortcuts_add_volumes), (shortcuts_add_current_folder),
	(add_shortcuts_get_info_cb): adapt to shortcuts_insert_path() updates.

2005-12-19  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkpathbar.[ch]: add handle fields to ButtonData and
	GtkPathBar; do correct handle bookkeeping.

	* gtk/gtkfilesystemunix.c (load_folder),
	(gtk_file_system_unix_get_folder),
	(gtk_file_folder_unix_is_finished_loading): add is_finished_loading
	field to GtkFileFolderUnix, which is set to true once we are
	really finished with loading (previous assumption that we are
	always finshed loading is not true anymore).

	* gtk/gtkfilesystemmodel.c (got_root_folder_cb): if the folder is
	finished loading, list the children and update the root level.

	* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb):
	handle cancellation.

2005-12-16  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystemunix.c: always call the callback, even when
	cancelled; ref handles passed to the callback queue functions;
	don't set cancelled to TRUE in _cancel_operation(), since operations
	in this backend are always completed,
	(get_special_icon_name): don't strdup the value of
	get_icon_name_for_directory() again.

	* gtk/gtkfilechooserbutton.c: adapt to new cancellation policy;
	reference all objects which are passed as callback arguments; in the
	callback check if the handles match.

	* gtk/gtkfilechooserentry.c: likewise.

	* gtk/gtkfilechooserdefault.c: likewise.  Also changed the shortcut
	loading code to be more like the code in GtkFileChooserButton, where
	we store all handles in the model and have model_row_free_data
	cancel any pending operations,
	(shortcuts_model_create): copy the error.

	* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault): remove
	loading_volumes and loading_bookmarks fields.

	* gtk/gtkfilesystem.c (gtk_file_info_free): free icon_name here...

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): fix
	thinko.

	* gtk/gtkfilesystemunix.c (dispatch_create_folder_callback),
	(queue_create_folder_callback): need to copy/free the path,
	(gtk_file_system_unix_create_folder): put the "reget folder" hack
	back in, though it's working different now.

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize),
	(dnd_select_folder_get_info_cb), (gtk_file_chooser_drag_data_received),
	(change_icon_theme_get_info_cb), (change_icon_theme),
	(model_add_special_get_info_cb), (model_add_special),
	(update_label_get_info_cb), (update_label_and_image): cancel existing
	operations, if any; added apprioriate fields to
	GtkFileChooserButtonPrivate.

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_finalize): if
	there's a folder loading, cancel the operation,
	(load_directory_get_folder_callback): set the loading folder handle
	to NULL,
	(load_directory_callback): cancel any currently loading folders
	before starting a new get folder operation.

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (shortcuts_insert_path): don't overwrite
	data if it's already set (for example by the "is volume" case).

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserbutton.c (set_info_get_info_cb),
	(set_info_for_path_at_iter): store a row reference in the temporary
	data structure and not an iter,
	(model_add_special), (model_update_current_folder),
	(gtk_file_chooser_button_add_shorcut_folder): remove unused pixbuf
	variable.

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (get_file_info_finished),
	(shortcuts_insert_path): replace gtk_file_system_render_icon() call
	with gtk_file_system_get_file_info(),
	(gtk_file_chooser_default_add_shortcut_folder),
	(gtk_file_chooser_default_remove_shortcut_folder): handle shortcuts
	which are still loading.

	* gtk/gtkfilechooserprivate.h: add shortcuts_loading field to
	struct _GtkFileChooserDefault.

	* gtk/gtkfilechooserbutton.c (set_info_get_info_cb),
	(set_info_for_path_at_iter), (model_free_row_data): keep handle
	and path together; now supports adding/removing shortcuts
	which are still loading.

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystem.c: make the cancelled field an GObject property.

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystem.h: make the GError argument in the callbacks
	const.

	* gtk/gtkfilechooserbutton.c: update callbacks,
	* gtk/gtkfilechooserentry.c: likewise,
	* gtk/gtkfilechooserdefault.c: likewise,
	* gtk/gtkfilesystemmodel.c: likewise,
	* gtk/gtkpathbar.c: likewise.

	* gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): copy
	the error which will be passed to error_creating_folder_dialog(),
	(action_create_folder_cb): likewise,
	(file_list_drag_data_received_get_info_cb): add forgotten GError
	declaration.

2005-12-13  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkpathbar.c (get_button_image), (set_button_image),
	(set_button_image_get_info_cb),
	(gtk_path_bar_update_button_appearance): update to new icon
	rendering call.

2005-12-09  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (file_list_drag_data_received),
	(gtk_file_chooser_default_add_shortcut_folder),
	(shortcuts_activate_get_info_cb): replace synchronous check_is_folder
	calls with an async gtk_file_system_get_info() solution.

2005-12-09  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilesystem.c (icon_cache_element_free), (icon_theme_changed),
	(get_cached_icon), (gtk_file_info_render_icon): implement pixbuf
	caching as found in the file system backends.

2005-12-09  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtk.symbols: updated.

	* gtk/gtkfilesystem.[ch] (struct GtkFileInfo): added icon_name field,
	(enum GtkFileInfoType): added GTK_FILE_INFO_ICON,
	(gtk_file_info_set_icon_name): new function,
	(gtk_file_info_render_icon): new function,
	(gtk_file_system_render_icon): removed.

	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_render_icon): removed,
	(create_file_info): fill icon_name field if required,
	(get_*_icon): modified to suit create_file_info() better.

	* gtk/gtkfilechooserbutton.c: modified to use
	gtk_file_info_render_icon() instead of gtk_file_system_render_icon().

	* gtk/gtkfilechooserdefault.c: likewise.

2005-12-06  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (get_file_info_finished),
	(update_current_folder_get_info_cb): fix mem leaks.

	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): ditto.

	* gtk/gtkpathbar.c (gtk_path_bar_set_path_finish): ditto.

2005-12-06  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb),
	(gtk_file_chooser_button_drag_data_received): make asynchronous,
	(update_label_and_image): remove unused variable.

	* gtk/gtkfilechooserdefault.c
	(gtk_file_chooser_default_update_current_folder): split in two
	functions, so we can have the is_folder check back.
	* gtk/gtkfilechooserprivate.h: add update_current_folder_handle
	field.

2005-12-06  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtkfilechooserdefault.c (show_and_select_paths): fixed a typo.

2005-12-05  Federico Mena Quintero  <federico@ximian.com>

	(merge from HEAD)

	* gtk/gtkfilechooserdefault.c (trap_activate_cb): "event->state &
	modifiers", not "event->state && modifiers".  Patch by Sadrul
	Habib Chowdhury <imadil@gmail.com>.  Fixes bug #323073.

2005-12-06  Kristian Rietveld  <kris@imendio.com>

	Beginnings of an asynchronous file chooser.

	* gtk/gtkfilechooserbutton.c: display name and the is folder property
	are now asynchronously set using set_info_for_at_path_iter(), the
	is folder property is now also stored in the tree model.

	* gtk/gtkfilechooserdefault.c: lots of changes to the shortcuts
	model code to make it operate asynchronously, check_is_folder() has
	been "disabled" for now, all other synchronous calls were
	replaced with asychronous ones.

	* gtk/gtkfilechooserentry.c: update call to 
	gtk_file_system_get_folder().

	* gtk/gtkfilechooserprivate.h: added two fields.

	* gtk/gtkfilesystem.[ch]: for about 85% changed to the changes
	outlined in the proposal discussed on gtk-devel-list.

	* gtk/gtkfilesystemmodel.[ch]: updated all asynchronous calls,
	_gtk_file_system_model_path_do() basically had to be rewritten
	(and I still need to finish that).

	* gtk/gtkfilesystemunix.c: changed to be compatible with the new
	GtkFileSystem interface.

	* gtk/gtkpathbar.c (button_clicked_cb): block/unblock the
	button_clicked_cb callback around the call to
	gtk_toggle_button_set_active(), avoids button_clicked_cb getting
	called twice.
	(_gtk_path_bar_set_path): refactored to be asynchronous.