Patch "1a" from #136185, by Morten Welinder.

2004-03-08  Federico Mena Quintero  <federico@ximian.com>

	Patch "1a" from #136185, by Morten Welinder.

	* gtk/gtkfilechooserdefault.c (get_file_info): Take in an argument
	that says whether the caller just wants the display name.
	(shortcuts_insert_path): We only want the name in the call to
	get_file_info().

	* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Don't request more
	info than needed from the file_folder.
This commit is contained in:
Federico Mena Quintero 2004-03-08 22:53:35 +00:00 committed by Federico Mena Quintero
parent 2247fc6659
commit 8383c8f7fe
7 changed files with 94 additions and 45 deletions

View File

@ -1,3 +1,15 @@
2004-03-08 Federico Mena Quintero <federico@ximian.com>
Patch "1a" from #136185, by Morten Welinder.
* gtk/gtkfilechooserdefault.c (get_file_info): Take in an argument
that says whether the caller just wants the display name.
(shortcuts_insert_path): We only want the name in the call to
get_file_info().
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Don't request more
info than needed from the file_folder.
2004-03-08 Federico Mena Quintero <federico@ximian.com> 2004-03-08 Federico Mena Quintero <federico@ximian.com>
Fixes #136105. Fixes #136105.

View File

@ -1,3 +1,15 @@
2004-03-08 Federico Mena Quintero <federico@ximian.com>
Patch "1a" from #136185, by Morten Welinder.
* gtk/gtkfilechooserdefault.c (get_file_info): Take in an argument
that says whether the caller just wants the display name.
(shortcuts_insert_path): We only want the name in the call to
get_file_info().
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Don't request more
info than needed from the file_folder.
2004-03-08 Federico Mena Quintero <federico@ximian.com> 2004-03-08 Federico Mena Quintero <federico@ximian.com>
Fixes #136105. Fixes #136105.

View File

@ -1,3 +1,15 @@
2004-03-08 Federico Mena Quintero <federico@ximian.com>
Patch "1a" from #136185, by Morten Welinder.
* gtk/gtkfilechooserdefault.c (get_file_info): Take in an argument
that says whether the caller just wants the display name.
(shortcuts_insert_path): We only want the name in the call to
get_file_info().
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Don't request more
info than needed from the file_folder.
2004-03-08 Federico Mena Quintero <federico@ximian.com> 2004-03-08 Federico Mena Quintero <federico@ximian.com>
Fixes #136105. Fixes #136105.

View File

@ -1,3 +1,15 @@
2004-03-08 Federico Mena Quintero <federico@ximian.com>
Patch "1a" from #136185, by Morten Welinder.
* gtk/gtkfilechooserdefault.c (get_file_info): Take in an argument
that says whether the caller just wants the display name.
(shortcuts_insert_path): We only want the name in the call to
get_file_info().
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Don't request more
info than needed from the file_folder.
2004-03-08 Federico Mena Quintero <federico@ximian.com> 2004-03-08 Federico Mena Quintero <federico@ximian.com>
Fixes #136105. Fixes #136105.

View File

@ -1,3 +1,15 @@
2004-03-08 Federico Mena Quintero <federico@ximian.com>
Patch "1a" from #136185, by Morten Welinder.
* gtk/gtkfilechooserdefault.c (get_file_info): Take in an argument
that says whether the caller just wants the display name.
(shortcuts_insert_path): We only want the name in the call to
get_file_info().
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Don't request more
info than needed from the file_folder.
2004-03-08 Federico Mena Quintero <federico@ximian.com> 2004-03-08 Federico Mena Quintero <federico@ximian.com>
Fixes #136105. Fixes #136105.

View File

@ -751,7 +751,7 @@ shortcuts_unselect_all (GtkFileChooserDefault *impl)
/* Convenience function to get the display name and icon info for a path */ /* Convenience function to get the display name and icon info for a path */
static GtkFileInfo * static GtkFileInfo *
get_file_info (GtkFileSystem *file_system, const GtkFilePath *path, GError **error) get_file_info (GtkFileSystem *file_system, const GtkFilePath *path, gboolean name_only, GError **error)
{ {
GtkFilePath *parent_path; GtkFilePath *parent_path;
GtkFileFolder *parent_folder; GtkFileFolder *parent_folder;
@ -765,7 +765,7 @@ get_file_info (GtkFileSystem *file_system, const GtkFilePath *path, GError **err
#if 0 #if 0
| GTK_FILE_INFO_ICON | GTK_FILE_INFO_ICON
#endif #endif
| GTK_FILE_INFO_IS_FOLDER, | (name_only ? 0 : GTK_FILE_INFO_IS_FOLDER),
error); error);
gtk_file_path_free (parent_path); gtk_file_path_free (parent_path);
@ -808,22 +808,19 @@ shortcuts_insert_path (GtkFileChooserDefault *impl,
} }
else else
{ {
GtkFileInfo *info;
info = get_file_info (impl->file_system, path, error);
if (!info)
return FALSE;
data = gtk_file_path_copy (path);
if (label) if (label)
label_copy = g_strdup (label); label_copy = g_strdup (label);
else else
label_copy = g_strdup (gtk_file_info_get_display_name (info)); {
GtkFileInfo *info = get_file_info (impl->file_system, path, TRUE, error);
if (!info)
return FALSE;
label_copy = g_strdup (gtk_file_info_get_display_name (info));
gtk_file_info_free (info);
}
data = gtk_file_path_copy (path);
pixbuf = gtk_file_system_render_icon (impl->file_system, path, GTK_WIDGET (impl), ICON_SIZE, NULL); pixbuf = gtk_file_system_render_icon (impl->file_system, path, GTK_WIDGET (impl), ICON_SIZE, NULL);
gtk_file_info_free (info);
} }
if (pos == -1) if (pos == -1)
@ -1426,7 +1423,7 @@ shortcuts_add_bookmark_from_path (GtkFileChooserDefault *impl,
return; return;
error = NULL; error = NULL;
info = get_file_info (impl->file_system, path, &error); info = get_file_info (impl->file_system, path, FALSE, &error);
if (!info) if (!info)
error_getting_info_dialog (impl, path, error); error_getting_info_dialog (impl, path, error);
@ -2879,14 +2876,16 @@ gtk_file_chooser_default_set_current_folder (GtkFileChooser *chooser,
GError **error) GError **error)
{ {
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser); GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
GError *err; GtkFileInfo *info;
err = NULL; /* Test validity of path here. */
if (!_gtk_path_bar_set_path (GTK_PATH_BAR (impl->browse_path_bar), path, &err)) info = get_file_info (impl->file_system, path, FALSE, error);
{ if (!info)
g_propagate_error (error, err); return FALSE;
return FALSE; gtk_file_info_free (info);
}
if (!_gtk_path_bar_set_path (GTK_PATH_BAR (impl->browse_path_bar), path, error))
return FALSE;
if (impl->current_folder != path) if (impl->current_folder != path)
{ {
@ -2896,7 +2895,7 @@ gtk_file_chooser_default_set_current_folder (GtkFileChooser *chooser,
impl->current_folder = gtk_file_path_copy (path); impl->current_folder = gtk_file_path_copy (path);
} }
/* Update the widgets that may trigger a folder chnage themselves */ /* Update the widgets that may trigger a folder change themselves. */
if (!impl->changing_folder) if (!impl->changing_folder)
{ {

View File

@ -784,7 +784,6 @@ gtk_path_bar_check_parent_path (GtkPathBar *path_bar,
current_path = list; current_path = list;
break; break;
} }
} }
if (current_path) if (current_path)
@ -815,9 +814,12 @@ _gtk_path_bar_set_path (GtkPathBar *path_bar,
result = TRUE; result = TRUE;
/* 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 (gtk_path_bar_check_parent_path (path_bar, file_path, path_bar->file_system))
return TRUE; return TRUE;
path = gtk_file_path_copy (file_path); path = gtk_file_path_copy (file_path);
gtk_widget_push_composite_child (); gtk_widget_push_composite_child ();
@ -827,43 +829,33 @@ _gtk_path_bar_set_path (GtkPathBar *path_bar,
GtkFilePath *parent_path = NULL; GtkFilePath *parent_path = NULL;
GtkWidget *button; GtkWidget *button;
const gchar *display_name; const gchar *display_name;
GError *err = NULL;
GtkFileFolder *file_folder; GtkFileFolder *file_folder;
GtkFileInfo *file_info; GtkFileInfo *file_info;
gboolean valid; gboolean valid;
GtkFileInfoType needed = GTK_FILE_INFO_DISPLAY_NAME;
ButtonType button_type; ButtonType button_type;
valid = gtk_file_system_get_parent (path_bar->file_system, valid = gtk_file_system_get_parent (path_bar->file_system,
path, path,
&parent_path, &parent_path,
&err); error);
if (!valid) if (!valid)
{ {
result = FALSE; result = FALSE;
g_propagate_error (error, err);
gtk_file_path_free (path); gtk_file_path_free (path);
break; break;
} }
if (first_directory) file_folder = gtk_file_system_get_folder (path_bar->file_system,
needed |= GTK_FILE_INFO_IS_FOLDER; parent_path ? parent_path : path,
GTK_FILE_INFO_DISPLAY_NAME,
NULL);
file_info = gtk_file_folder_get_info (file_folder, path, error);
g_object_unref (file_folder);
file_folder = gtk_file_system_get_folder if (!file_info)
(path_bar->file_system,
parent_path ? parent_path : path,
needed,
NULL);
file_info = gtk_file_folder_get_info (file_folder, path, &err);
if (!file_info || (first_directory && !gtk_file_info_get_is_folder (file_info)))
{ {
result = FALSE; result = FALSE;
g_propagate_error (error, err);
if (file_info)
gtk_file_info_free (file_info);
g_object_unref (file_folder);
gtk_file_path_free (parent_path); gtk_file_path_free (parent_path);
gtk_file_path_free (path); gtk_file_path_free (path);
break; break;
@ -874,15 +866,13 @@ _gtk_path_bar_set_path (GtkPathBar *path_bar,
button = make_directory_button (path_bar, display_name, path, first_directory); button = make_directory_button (path_bar, display_name, path, first_directory);
gtk_file_info_free (file_info); gtk_file_info_free (file_info);
gtk_file_path_free (path); gtk_file_path_free (path);
g_object_unref (file_folder);
new_buttons = g_list_prepend (new_buttons, button); new_buttons = g_list_prepend (new_buttons, button);
button_type = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "gtk-path-bar-button-type")); button_type = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "gtk-path-bar-button-type"));
if (button_type != NORMAL_BUTTON) if (button_type != NORMAL_BUTTON)
{ {
if (parent_path) gtk_file_path_free (parent_path);
gtk_file_path_free (parent_path);
break; break;
} }