12006-04-30  Kristian Rietveld  <kris@imendio.com>
2
3	* gtk/gtkfilesystem.[ch] (gtk_file_info_render_icon): remove the
4	caching code,
5	(gtk_file_info_get_icon_name): new function,
6	(gtk_file_system_volume_get_icon_name): new function,
7	(gtk_file_system_volume_render_icon): refactor to use
8	get_icon_name() and render the icon on the fly.
9
10	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon),
11	(gtk_file_system_unix_volume_get_icon_name): reflect updates in
12	file system interface,
13	(get_fallback_icon): remove, along with icon caching code.
14
15	* gtk/gtk.symbols: updated.
16
172006-04-30  Kristian Rietveld  <kris@imendio.com>
18
19	* gtk/gtkfilesystemmodel.c (got_root_folder_cb), (ref_path_cb),
20	(get_children_get_folder_cb): don't leak the handle,
21	(got_root_folder_cb), (get_children_get_folder_cb): emit
22	row-inserted for the newly added nodes.
23
242006-04-30  Kristian Rietveld  <kris@imendio.com>
25
26	* gtk/gtkfilechooserdefault.c (file_list_drag_data_select_uris),
27	(file_list_drag_data_received_get_info_cb),
28	(file_list_drag_data_received_cb): refactor code for selecting
29	multiple uris into file_list_drag_data_select_uris().
30
312006-04-23  Kristian Rietveld  <kris@imendio.com>
32
33	* gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb): don't
34	leak handle,
35	(change_icon_theme_get_info_cb), (set_info_get_info_cb),
36	(model_add_special_get_info_cb), (update_label_get_info_cb): ditto.
37
38	* gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb):
39	don't leak the handle,
40	(get_file_info_finished), (edited_idle_create_folder_cb),
41	(file_list_drag_data_received_get_info_cb),
42	(show_and_select_paths_get_folder_cb),
43	(update_current_folder_get_info_cb), (add_shortcut_get_info_cb),
44	(confirmation_confirm_get_info_cb), (action_create_folder_cb),
45	(save_entry_get_info_cb), (shortcuts_activate_volume_mount_cb),
46	(shortcuts_activate_get_info_cb), (update_from_entry_get_info_cb):
47	ditto.
48
49	* gtk/gtkfilechooserentry.c (load_directory_get_folder_callback):
50	don't leak the handle.
51
52	* gtk/gtkpathbar.c (set_button_image_get_info_cb),
53	(gtk_path_bar_get_info_callback): don't leak the handle.
54
552006-04-23  Kristian Rietveld  <kris@imendio.com>
56
57	Review.
58
59	* gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb):
60	don't forget to unref data->impl at the end.
61
622006-04-23  Kristian Rietveld  <kris@imendio.com>
63
64	Review, continued.
65
66	* gtk/gtkfilechooserdialog.c (response_cb): set response_requested
67	to FALSE after stopping emission of the response signal.
68
692006-03-16  Kristian Rietveld  <kris@imendio.com>
70
71	More review work.
72
73	* gtk/gtkfilechooserprivate.h: remove idle_finished_loading_source
74	from GtkFileSystemModel.
75
76	* gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): remove
77	idle_finished_loading_source,
78	(idle_finished_loading_cb), (queue_finished_loading): removed,
79	(got_root_folder_cb): save a list walk, immediately emit
80	finished-loading and don't queue it, since we are already in an
81	idle here, always list_children() so the children the folder already
82	has are returned,
83	(_gtk_file_system_model_new): handle the case where NULL is
84	returned by _get_folder(),
85	(_gtk_file_system_model_path_do): remove comment, and append the
86	new handle to the list, don't try to remove,
87	(get_children_get_folder_cb): save a list walk, remove the dummy
88	child if the _get_folder() call fails or is cancelled.
89
902006-03-14  Kristian Rietveld  <kris@imendio.com>
91
92	More suggestions from Federico.
93
94	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder):
95	remove check for filename_is_root(), since we never hit that code
96	and else mkdir will fail anyway,
97	(gtk_file_system_unix_create_folder): fixup parent folder refresh
98	code.
99
1002006-03-14  Kristian Rietveld  <kris@imendio.com>
101
102	* gtk/gtkfilesystemunix.c (read_hidden_file), (fill_in_hidden),
103	(get_is_hidden_for_file): factor out g_file_get_contents() code
104	in read_hidden_file().  (Federico Mena Quintero).
105
1062006-03-14  Kristian Rietveld  <kris@imendio.com>
107
108	Icon name code suggestions by Federico Mena Quintero.
109
110	* gtk/gtkfilesystemunix.c: add GTK_FILE_INFO_ICON to
111	STAT_NEEDED_MASK,
112	(get_fallback_icon_name), (get_fallback_icon),
113	(get_icon_name_for_directory), (get_special_icon_name): get rid
114	of strdups,
115	(get_icon_type_from_path): add a statbuf argument and use the
116	statbuf when folder_unix is NULL,
117	(create_file_info): adapt to work with above changes.
118
1192006-03-14  Kristian Rietveld  <kris@imendio.com>
120
121	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): path
122	is NULL is an error here (gtk_file_system_get_info() already guards
123	path = NULL),
124	(gtk_file_system_unix_get_info): move basename creation to just
125	before create_file_info().  (Federico Mena Quintero).
126
1272006-03-14  Kristian Rietveld  <kris@imendio.com>
128
129	* gtk/gtkfilesystemunix.c (struct _GtkFileFolderUnix): add
130	load_folder_id field,
131	(load_folder): add thread enter/leave construct, set load_folder_id
132	to zero since we have the idle removed when we return,
133	(gtk_file_system_unix_get_folder): initialize load_folder_id to 0
134	and store the source id of the load_folder idle,
135	(gtk_file_folder_unix_finalize): remove the load_folder idle
136	if necessary.  (Federico Mena Quintero).
137
1382006-03-14  Kristian Rietveld  <kris@imendio.com>
139
140	* gtk/gtkfilechooser.c (gtk_file_chooser_get_current_folder): return
141	NULL if there is no current folder path.
142
143	* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_map): we
144	reload the current folder if there is one, else we continue the
145	still pending load.
146
1472006-03-14  Kristian Rietveld  <kris@imendio.com>
148
149	Couple of fixes from Markku Vire.
150
151	* gtk/gtkfilesystem.c (gtk_file_info_copy): also strdup icon_name
152	and display_key.
153
154	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder):
155	initialize error to NULL,
156	(gtk_file_folder_unix_list_children): return an empty list for now if
157	we couldn't read the directory.
158
1592005-12-23  Kristian Rietveld  <kris@imendio.com>
160
161	* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb),
162	(gtk_file_chooser_default_update_current_folder): set and unset
163	busy cursor while checking whether the given path is a folder.
164
1652005-12-23  Kristian Rietveld  <kris@imendio.com>
166
167	* gtk/gtkfilesystem.h: change the GtkFileInfo argument of the
168	GetInfoCallback to be const.
169
170	* gtk/gtkfilechooserbutton.c, gtk/gtkfilechooserdefault.c,
171	gtk/gtkpathbar.c: changes functions to reflect the above change.
172
1732005-12-23  Kristian Rietveld  <kris@imendio.com>
174
175	* gtk/gtkfilechooserdefault.c, gtk/gtkfilechooserprivate.h: keep track
176	of handles, cancel all pending operations on dispose.
177
1782005-12-23  Kristian Rietveld  <kris@imendio.com>
179
180	* gtk/gtkfilechooserprivate.h (struct _GtkFileSystemModel): add
181	pending_handles field,
182	(struct _FileModelNode): add load_pending flag.
183
184	* gtk/gtkfilesystemmodel.c (gtk_file_system_model_dispose): introduce,
185	cancel all pending operations here,
186	(got_root_folder_cb), (_gtk_file_system_model_new), (ref_path_cb),
187	(_gtk_file_system_model_path_do): keep track of all pending
188	operations, handle cancelled operations.
189
1902005-12-23  Kristian Rietveld  <kris@imendio.com>
191
192	* gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize),
193	(gtk_file_chooser_button_destroy): move all handle cancellations
194	and object unrefs to destroy.
195
196	* gtk/gtkpathbar.c (gtk_path_bar_finalize), (gtk_path_bar_dispose):
197	likewise.
198
199	* gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_class_init):
200	add dispose,
201	(gtk_file_chooser_entry_dispose): cancel handles and unrefs
202	objects here instead of finalize.
203
2042005-12-23  Kristian Rietveld  <kris@imendio.com>
205
206	* gtk/gtkfilesystem.c (get_cached_icon): check if "name" is an
207	absolute path, if so load the icon from that file.
208
209	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): fix
210	the build.
211
2122005-12-21  Kristian Rietveld  <kris@imendio.com>
213
214	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): remove
215	the FIXME since it doesn't make sense, when we return a cached
216	folder we won't emit finished-loading either,
217	(gtk_file_system_unix_create_folder): remove unused variable,
218	(gtk_file_folder_unix_list_children): remove unused code,
219	(get_is_hidden_for_file): new function,
220	(create_file_info): also handle getting is_hidden when called
221	without a folder unix (from _system_get_info() for example).
222
2232005-12-20  Kristian Rietveld  <kris@imendio.com>
224
225	* gtk/gtkfilechooserdefault.c (check_is_folder): fully removed!
226	woo!,
227	(check_save_entry): add is_folder argument,
228	(gtk_file_chooser_default_get_paths): update check_save_entry() call,
229	(get_display_name_for_folder): removed,
230	(confirmation_confirm_get_info_cb): new function which will
231	handle the confirmation dialog now we have all information for it,
232	(should_respond_after_confirm_overwrite): replace the call to
233	get_display_name_for_folder() with an asynchronous solution,
234	(action_create_folder_cb): request dialog response on successfull
235	folder creation,
236	(gtk_file_chooser_default_should_respond): update call to
237	check_save_entry(); replace the check is folder call for "path"
238	by just using the is_folder return value from check_save_entry();
239	replaced the check is folder call for "parent_path" with an
240	asynchronous setup, remainder of that work is now done in
241	save_entry_get_info_cb(),
242	(save_entry_get_info_cb): new function.
243
244	* gtk/gtkfilechoosermebed.[ch]: add response-requested signal.
245
246	* gtk/gtkfilechooserdialog.c, gtk/gtkfilechooserprivate.h: handle
247	response_requested signal.
248
249	* gtk/gtkfilechooserentry.[ch]
250	(_gtk_file_chooser_entry_get_is_folder): new function.
251
2522005-12-20  Kristian Rietveld  <kris@imendio.com>
253
254	* gtk/gtkfilechooserdefault.c (ref_path_cb): when called with
255	!folder, check if node is the node we are looking for (can be
256	triggered when we call ref_path_cb ourselves after a find_child_node),
257	(_gtk_file_system_model_path_do): introduce parent_node field;
258	after finding a child node in a loaded parent node, don't forget
259	to call ref_path_cb,
260	(get_children_get_folder_cb): don't forget to set data->node->folder
261	to the newly acquired folder.
262
2632005-12-20  Kristian Rietveld  <kris@imendio.com>
264
265	* gtk/gtkfilechooserdefault.c (show_and_select_paths_get_folder_cb):
266	handle case where the folder we get already finished loading.
267
268	* gtk/gtkfilesystemmodel.c (ref_path_cb),
269	(_gtk_file_system_model_path_do): make this work.
270
2712005-12-19  Kristian Rietveld  <kris@imendio.com>
272
273	* gtk/gtkfilechooserdefault.c (shortcuts_update_count): modify
274	in such a way that it can also negatively update the count on
275	failures,
276	(get_file_info_finished): handle failures, update save folder
277	combo box on success,
278	(shortcuts_insert_path): change the boolean return value into a
279	void one, also refilter the model and update the save folder combo
280	box for the non-asynchronous case,
281	(shortcuts_append_home), (shortcuts_append_desktop),
282	(shortcuts_add_volumes), (shortcuts_add_current_folder),
283	(add_shortcuts_get_info_cb): adapt to shortcuts_insert_path() updates.
284
2852005-12-19  Kristian Rietveld  <kris@imendio.com>
286
287	* gtk/gtkpathbar.[ch]: add handle fields to ButtonData and
288	GtkPathBar; do correct handle bookkeeping.
289
290	* gtk/gtkfilesystemunix.c (load_folder),
291	(gtk_file_system_unix_get_folder),
292	(gtk_file_folder_unix_is_finished_loading): add is_finished_loading
293	field to GtkFileFolderUnix, which is set to true once we are
294	really finished with loading (previous assumption that we are
295	always finshed loading is not true anymore).
296
297	* gtk/gtkfilesystemmodel.c (got_root_folder_cb): if the folder is
298	finished loading, list the children and update the root level.
299
300	* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb):
301	handle cancellation.
302
3032005-12-16  Kristian Rietveld  <kris@imendio.com>
304
305	* gtk/gtkfilesystemunix.c: always call the callback, even when
306	cancelled; ref handles passed to the callback queue functions;
307	don't set cancelled to TRUE in _cancel_operation(), since operations
308	in this backend are always completed,
309	(get_special_icon_name): don't strdup the value of
310	get_icon_name_for_directory() again.
311
312	* gtk/gtkfilechooserbutton.c: adapt to new cancellation policy;
313	reference all objects which are passed as callback arguments; in the
314	callback check if the handles match.
315
316	* gtk/gtkfilechooserentry.c: likewise.
317
318	* gtk/gtkfilechooserdefault.c: likewise.  Also changed the shortcut
319	loading code to be more like the code in GtkFileChooserButton, where
320	we store all handles in the model and have model_row_free_data
321	cancel any pending operations,
322	(shortcuts_model_create): copy the error.
323
324	* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault): remove
325	loading_volumes and loading_bookmarks fields.
326
327	* gtk/gtkfilesystem.c (gtk_file_info_free): free icon_name here...
328
3292005-12-13  Kristian Rietveld  <kris@imendio.com>
330
331	* gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): fix
332	thinko.
333
334	* gtk/gtkfilesystemunix.c (dispatch_create_folder_callback),
335	(queue_create_folder_callback): need to copy/free the path,
336	(gtk_file_system_unix_create_folder): put the "reget folder" hack
337	back in, though it's working different now.
338
3392005-12-13  Kristian Rietveld  <kris@imendio.com>
340
341	* gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize),
342	(dnd_select_folder_get_info_cb), (gtk_file_chooser_drag_data_received),
343	(change_icon_theme_get_info_cb), (change_icon_theme),
344	(model_add_special_get_info_cb), (model_add_special),
345	(update_label_get_info_cb), (update_label_and_image): cancel existing
346	operations, if any; added apprioriate fields to
347	GtkFileChooserButtonPrivate.
348
3492005-12-13  Kristian Rietveld  <kris@imendio.com>
350
351	* gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_finalize): if
352	there's a folder loading, cancel the operation,
353	(load_directory_get_folder_callback): set the loading folder handle
354	to NULL,
355	(load_directory_callback): cancel any currently loading folders
356	before starting a new get folder operation.
357
3582005-12-13  Kristian Rietveld  <kris@imendio.com>
359
360	* gtk/gtkfilechooserdefault.c (shortcuts_insert_path): don't overwrite
361	data if it's already set (for example by the "is volume" case).
362
3632005-12-13  Kristian Rietveld  <kris@imendio.com>
364
365	* gtk/gtkfilechooserbutton.c (set_info_get_info_cb),
366	(set_info_for_path_at_iter): store a row reference in the temporary
367	data structure and not an iter,
368	(model_add_special), (model_update_current_folder),
369	(gtk_file_chooser_button_add_shorcut_folder): remove unused pixbuf
370	variable.
371
3722005-12-13  Kristian Rietveld  <kris@imendio.com>
373
374	* gtk/gtkfilechooserdefault.c (get_file_info_finished),
375	(shortcuts_insert_path): replace gtk_file_system_render_icon() call
376	with gtk_file_system_get_file_info(),
377	(gtk_file_chooser_default_add_shortcut_folder),
378	(gtk_file_chooser_default_remove_shortcut_folder): handle shortcuts
379	which are still loading.
380
381	* gtk/gtkfilechooserprivate.h: add shortcuts_loading field to
382	struct _GtkFileChooserDefault.
383
384	* gtk/gtkfilechooserbutton.c (set_info_get_info_cb),
385	(set_info_for_path_at_iter), (model_free_row_data): keep handle
386	and path together; now supports adding/removing shortcuts
387	which are still loading.
388
3892005-12-13  Kristian Rietveld  <kris@imendio.com>
390
391	* gtk/gtkfilesystem.c: make the cancelled field an GObject property.
392
3932005-12-13  Kristian Rietveld  <kris@imendio.com>
394
395	* gtk/gtkfilesystem.h: make the GError argument in the callbacks
396	const.
397
398	* gtk/gtkfilechooserbutton.c: update callbacks,
399	* gtk/gtkfilechooserentry.c: likewise,
400	* gtk/gtkfilechooserdefault.c: likewise,
401	* gtk/gtkfilesystemmodel.c: likewise,
402	* gtk/gtkpathbar.c: likewise.
403
404	* gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): copy
405	the error which will be passed to error_creating_folder_dialog(),
406	(action_create_folder_cb): likewise,
407	(file_list_drag_data_received_get_info_cb): add forgotten GError
408	declaration.
409
4102005-12-13  Kristian Rietveld  <kris@imendio.com>
411
412	* gtk/gtkpathbar.c (get_button_image), (set_button_image),
413	(set_button_image_get_info_cb),
414	(gtk_path_bar_update_button_appearance): update to new icon
415	rendering call.
416
4172005-12-09  Kristian Rietveld  <kris@imendio.com>
418
419	* gtk/gtkfilechooserdefault.c (file_list_drag_data_received),
420	(gtk_file_chooser_default_add_shortcut_folder),
421	(shortcuts_activate_get_info_cb): replace synchronous check_is_folder
422	calls with an async gtk_file_system_get_info() solution.
423
4242005-12-09  Kristian Rietveld  <kris@imendio.com>
425
426	* gtk/gtkfilesystem.c (icon_cache_element_free), (icon_theme_changed),
427	(get_cached_icon), (gtk_file_info_render_icon): implement pixbuf
428	caching as found in the file system backends.
429
4302005-12-09  Kristian Rietveld  <kris@imendio.com>
431
432	* gtk/gtk.symbols: updated.
433
434	* gtk/gtkfilesystem.[ch] (struct GtkFileInfo): added icon_name field,
435	(enum GtkFileInfoType): added GTK_FILE_INFO_ICON,
436	(gtk_file_info_set_icon_name): new function,
437	(gtk_file_info_render_icon): new function,
438	(gtk_file_system_render_icon): removed.
439
440	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_render_icon): removed,
441	(create_file_info): fill icon_name field if required,
442	(get_*_icon): modified to suit create_file_info() better.
443
444	* gtk/gtkfilechooserbutton.c: modified to use
445	gtk_file_info_render_icon() instead of gtk_file_system_render_icon().
446
447	* gtk/gtkfilechooserdefault.c: likewise.
448
4492005-12-06  Kristian Rietveld  <kris@imendio.com>
450
451	* gtk/gtkfilechooserdefault.c (get_file_info_finished),
452	(update_current_folder_get_info_cb): fix mem leaks.
453
454	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): ditto.
455
456	* gtk/gtkpathbar.c (gtk_path_bar_set_path_finish): ditto.
457
4582005-12-06  Kristian Rietveld  <kris@imendio.com>
459
460	* gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb),
461	(gtk_file_chooser_button_drag_data_received): make asynchronous,
462	(update_label_and_image): remove unused variable.
463
464	* gtk/gtkfilechooserdefault.c
465	(gtk_file_chooser_default_update_current_folder): split in two
466	functions, so we can have the is_folder check back.
467	* gtk/gtkfilechooserprivate.h: add update_current_folder_handle
468	field.
469
4702005-12-06  Kristian Rietveld  <kris@imendio.com>
471
472	* gtk/gtkfilechooserdefault.c (show_and_select_paths): fixed a typo.
473
4742005-12-05  Federico Mena Quintero  <federico@ximian.com>
475
476	(merge from HEAD)
477
478	* gtk/gtkfilechooserdefault.c (trap_activate_cb): "event->state &
479	modifiers", not "event->state && modifiers".  Patch by Sadrul
480	Habib Chowdhury <imadil@gmail.com>.  Fixes bug #323073.
481
4822005-12-06  Kristian Rietveld  <kris@imendio.com>
483
484	Beginnings of an asynchronous file chooser.
485
486	* gtk/gtkfilechooserbutton.c: display name and the is folder property
487	are now asynchronously set using set_info_for_at_path_iter(), the
488	is folder property is now also stored in the tree model.
489
490	* gtk/gtkfilechooserdefault.c: lots of changes to the shortcuts
491	model code to make it operate asynchronously, check_is_folder() has
492	been "disabled" for now, all other synchronous calls were
493	replaced with asychronous ones.
494
495	* gtk/gtkfilechooserentry.c: update call to
496	gtk_file_system_get_folder().
497
498	* gtk/gtkfilechooserprivate.h: added two fields.
499
500	* gtk/gtkfilesystem.[ch]: for about 85% changed to the changes
501	outlined in the proposal discussed on gtk-devel-list.
502
503	* gtk/gtkfilesystemmodel.[ch]: updated all asynchronous calls,
504	_gtk_file_system_model_path_do() basically had to be rewritten
505	(and I still need to finish that).
506
507	* gtk/gtkfilesystemunix.c: changed to be compatible with the new
508	GtkFileSystem interface.
509
510	* gtk/gtkpathbar.c (button_clicked_cb): block/unblock the
511	button_clicked_cb callback around the call to
512	gtk_toggle_button_set_active(), avoids button_clicked_cb getting
513	called twice.
514	(_gtk_path_bar_set_path): refactored to be asynchronous.
515