mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-29 02:27:53 +00:00
file chooser entry: Special-case ., .. and ~
Make sure entering the three special strings ".", ".." or "~" in the location entry works as expected. They already worked correctly if you append a '/' to force them to be recognized as the 'folder' part, but that should not be necessary. https://bugzilla.gnome.org/show_bug.cgi?id=752707
This commit is contained in:
parent
f30637bbae
commit
91c05f6f6b
@ -333,6 +333,14 @@ gtk_file_chooser_get_file_for_text (GtkFileChooserEntry *chooser_entry,
|
||||
return file;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_directory_shortcut (const char *text)
|
||||
{
|
||||
return strcmp (text, ".") == 0 ||
|
||||
strcmp (text, "..") == 0 ||
|
||||
strcmp (text, "~" ) == 0;
|
||||
}
|
||||
|
||||
static GFile *
|
||||
gtk_file_chooser_get_directory_for_text (GtkFileChooserEntry *chooser_entry,
|
||||
const char * text)
|
||||
@ -344,7 +352,9 @@ gtk_file_chooser_get_directory_for_text (GtkFileChooserEntry *chooser_entry,
|
||||
if (file == NULL)
|
||||
return NULL;
|
||||
|
||||
if (text[0] == 0 || text[strlen (text) - 1] == G_DIR_SEPARATOR)
|
||||
g_print ("text '%s', folder '%s'\n", text, g_file_get_path (file));
|
||||
if (text[0] == 0 || text[strlen (text) - 1] == G_DIR_SEPARATOR ||
|
||||
is_directory_shortcut (text))
|
||||
return file;
|
||||
|
||||
parent = g_file_get_parent (file);
|
||||
@ -833,6 +843,8 @@ _gtk_file_chooser_entry_get_file_part (GtkFileChooserEntry *chooser_entry)
|
||||
last_slash = strrchr (text, G_DIR_SEPARATOR);
|
||||
if (last_slash)
|
||||
return last_slash + 1;
|
||||
else if (is_directory_shortcut (text))
|
||||
return "";
|
||||
else
|
||||
return text;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user