filechooserentry: Make appending / to directories simpler
This commit is contained in:
parent
2b9ecd9706
commit
5ebc69066a
@ -146,10 +146,6 @@ static gboolean completion_match_func (GtkEntryCompletion *comp,
|
|||||||
const char *key,
|
const char *key,
|
||||||
GtkTreeIter *iter,
|
GtkTreeIter *iter,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static char *maybe_append_separator_to_file (GtkFileChooserEntry *chooser_entry,
|
|
||||||
GFile *file,
|
|
||||||
gchar *display_name,
|
|
||||||
gboolean *appended);
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
REFRESH_UP_TO_CURSOR_POSITION,
|
REFRESH_UP_TO_CURSOR_POSITION,
|
||||||
@ -440,47 +436,6 @@ beep (GtkFileChooserEntry *chooser_entry)
|
|||||||
gtk_widget_error_bell (GTK_WIDGET (chooser_entry));
|
gtk_widget_error_bell (GTK_WIDGET (chooser_entry));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function will append a directory separator to paths to
|
|
||||||
* display_name iff the path associated with it is a directory.
|
|
||||||
* maybe_append_separator_to_file will g_free the display_name and
|
|
||||||
* return a new one if needed. Otherwise, it will return the old one.
|
|
||||||
* You should be safe calling
|
|
||||||
*
|
|
||||||
* display_name = maybe_append_separator_to_file (entry, file, display_name, &appended);
|
|
||||||
* ...
|
|
||||||
* g_free (display_name);
|
|
||||||
*/
|
|
||||||
static char *
|
|
||||||
maybe_append_separator_to_file (GtkFileChooserEntry *chooser_entry,
|
|
||||||
GFile *file,
|
|
||||||
gchar *display_name,
|
|
||||||
gboolean *appended)
|
|
||||||
{
|
|
||||||
*appended = FALSE;
|
|
||||||
|
|
||||||
if (!g_str_has_suffix (display_name, G_DIR_SEPARATOR_S) && file)
|
|
||||||
{
|
|
||||||
GFileInfo *info;
|
|
||||||
|
|
||||||
info = _gtk_folder_get_info (chooser_entry->current_folder, file);
|
|
||||||
|
|
||||||
if (info)
|
|
||||||
{
|
|
||||||
if (_gtk_file_info_consider_as_directory (info))
|
|
||||||
{
|
|
||||||
gchar *tmp = display_name;
|
|
||||||
display_name = g_strconcat (tmp, G_DIR_SEPARATOR_S, NULL);
|
|
||||||
*appended = TRUE;
|
|
||||||
g_free (tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_unref (info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return display_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Determines if the completion model has entries with a common prefix relative
|
/* Determines if the completion model has entries with a common prefix relative
|
||||||
* to the current contents of the entry. Also, if there's one and only one such
|
* to the current contents of the entry. Also, if there's one and only one such
|
||||||
* path, stores it in unique_path_ret.
|
* path, stores it in unique_path_ret.
|
||||||
@ -1285,9 +1240,11 @@ populate_completion_store (GtkFileChooserEntry *chooser_entry)
|
|||||||
{
|
{
|
||||||
gchar *display_name = g_strdup (g_file_info_get_display_name (info));
|
gchar *display_name = g_strdup (g_file_info_get_display_name (info));
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
gboolean dummy;
|
|
||||||
|
|
||||||
display_name = maybe_append_separator_to_file (chooser_entry, file, display_name, &dummy);
|
if (_gtk_file_info_consider_as_directory (info))
|
||||||
|
display_name = g_strconcat (g_file_info_get_display_name (info), G_DIR_SEPARATOR_S, NULL);
|
||||||
|
else
|
||||||
|
display_name = g_strdup (g_file_info_get_display_name (info));
|
||||||
|
|
||||||
gtk_list_store_append (chooser_entry->completion_store, &iter);
|
gtk_list_store_append (chooser_entry->completion_store, &iter);
|
||||||
gtk_list_store_set (chooser_entry->completion_store, &iter,
|
gtk_list_store_set (chooser_entry->completion_store, &iter,
|
||||||
|
Loading…
Reference in New Issue
Block a user