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.
