Fix #157787, reported by Jonathan Blandford:

2005-07-07  Matthias Clasen  <mclasen@redhat.com>

	Fix #157787, reported by Jonathan Blandford:

	* gtk/gtkfilechooserdefault.c
	(gtk_file_chooser_default_set_current_folder): Don't leave a
	"trail" behind when set_current_folder is called explicitly.
	(gtk_file_chooser_default_update_current_folder): New function
	that is called to update the current folder in response to
	user actions.

	* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Add a boolean
	keep_trail argument, and don't leave a "trail" behind unless
	it is set.
This commit is contained in:
Matthias Clasen 2005-07-07 12:40:50 +00:00 committed by Matthias Clasen
parent d8c1ea044a
commit 8cc4fe41ff
6 changed files with 64 additions and 4 deletions

View File

@ -1,3 +1,18 @@
2005-07-07 Matthias Clasen <mclasen@redhat.com>
Fix #157787, reported by Jonathan Blandford:
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_set_current_folder): Don't leave a
"trail" behind when set_current_folder is called explicitly.
(gtk_file_chooser_default_update_current_folder): New function
that is called to update the current folder in response to
user actions.
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Add a boolean
keep_trail argument, and don't leave a "trail" behind unless
it is set.
2005-07-06 Manish Singh <yosh@gimp.org>
* demos/gtk-demo/menus.c: change_orientation() should return void,

View File

@ -1,3 +1,18 @@
2005-07-07 Matthias Clasen <mclasen@redhat.com>
Fix #157787, reported by Jonathan Blandford:
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_set_current_folder): Don't leave a
"trail" behind when set_current_folder is called explicitly.
(gtk_file_chooser_default_update_current_folder): New function
that is called to update the current folder in response to
user actions.
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Add a boolean
keep_trail argument, and don't leave a "trail" behind unless
it is set.
2005-07-06 Manish Singh <yosh@gimp.org>
* demos/gtk-demo/menus.c: change_orientation() should return void,

View File

@ -1,3 +1,18 @@
2005-07-07 Matthias Clasen <mclasen@redhat.com>
Fix #157787, reported by Jonathan Blandford:
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_set_current_folder): Don't leave a
"trail" behind when set_current_folder is called explicitly.
(gtk_file_chooser_default_update_current_folder): New function
that is called to update the current folder in response to
user actions.
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Add a boolean
keep_trail argument, and don't leave a "trail" behind unless
it is set.
2005-07-06 Manish Singh <yosh@gimp.org>
* demos/gtk-demo/menus.c: change_orientation() should return void,

View File

@ -313,6 +313,10 @@ static void gtk_file_chooser_default_screen_changed (GtkWidget *
static gboolean gtk_file_chooser_default_set_current_folder (GtkFileChooser *chooser,
const GtkFilePath *path,
GError **error);
static gboolean gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser,
const GtkFilePath *path,
gboolean keep_trail,
GError **error);
static GtkFilePath * gtk_file_chooser_default_get_current_folder (GtkFileChooser *chooser);
static void gtk_file_chooser_default_set_current_name (GtkFileChooser *chooser,
const gchar *name);
@ -1008,7 +1012,7 @@ change_folder_and_display_error (GtkFileChooserDefault *impl,
path_copy = gtk_file_path_copy (path);
error = NULL;
result = _gtk_file_chooser_set_current_folder_path (GTK_FILE_CHOOSER (impl), path_copy, &error);
result = gtk_file_chooser_default_update_current_folder (GTK_FILE_CHOOSER (impl), path_copy, TRUE, &error);
if (!result)
error_changing_folder_dialog (impl, path_copy, error);
@ -4944,6 +4948,15 @@ static gboolean
gtk_file_chooser_default_set_current_folder (GtkFileChooser *chooser,
const GtkFilePath *path,
GError **error)
{
return gtk_file_chooser_default_update_current_folder (chooser, path, FALSE, error);
}
static gboolean
gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser,
const GtkFilePath *path,
gboolean keep_trail,
GError **error)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
gboolean result;
@ -4965,7 +4978,7 @@ gtk_file_chooser_default_set_current_folder (GtkFileChooser *chooser,
if (!check_is_folder (impl->file_system, path, error))
return FALSE;
if (!_gtk_path_bar_set_path (GTK_PATH_BAR (impl->browse_path_bar), path, error))
if (!_gtk_path_bar_set_path (GTK_PATH_BAR (impl->browse_path_bar), path, keep_trail, error))
return FALSE;
if (impl->current_folder != path)

View File

@ -1278,6 +1278,7 @@ gtk_path_bar_check_parent_path (GtkPathBar *path_bar,
gboolean
_gtk_path_bar_set_path (GtkPathBar *path_bar,
const GtkFilePath *file_path,
const gboolean keep_trail,
GError **error)
{
GtkFilePath *path;
@ -1294,7 +1295,8 @@ _gtk_path_bar_set_path (GtkPathBar *path_bar,
/* Check whether the new path is already present in the pathbar as buttons.
* This could be a parent directory or a previous selected subdirectory.
*/
if (gtk_path_bar_check_parent_path (path_bar, file_path, path_bar->file_system))
if (keep_trail &&
gtk_path_bar_check_parent_path (path_bar, file_path, path_bar->file_system))
return TRUE;
path = gtk_file_path_copy (file_path);
@ -1395,7 +1397,6 @@ _gtk_path_bar_set_path (GtkPathBar *path_bar,
return result;
}
/* FIXME: This should be a construct-only property */
void
_gtk_path_bar_set_file_system (GtkPathBar *path_bar,

View File

@ -79,6 +79,7 @@ void _gtk_path_bar_set_file_system (GtkPathBar *path_bar,
GtkFileSystem *file_system);
gboolean _gtk_path_bar_set_path (GtkPathBar *path_bar,
const GtkFilePath *file_path,
gboolean keep_trail,
GError **error);
void _gtk_path_bar_up (GtkPathBar *path_bar);
void _gtk_path_bar_down (GtkPathBar *path_bar);