Commit 0f9b87cf authored by Matthias Clasen's avatar Matthias Clasen

file chooser: Make location column work better

The location column did not work for search results in recent://.
Fix that by looking at the target uri in this case. Show the location
column in recent mode. And make it more similar to nautilus by
showing the full path if it is not below $HOME.
parent f968199b
......@@ -361,7 +361,7 @@ static guint signals[LAST_SIGNAL] = { 0 };
#define MODEL_ATTRIBUTES "standard::name,standard::type,standard::display-name," \
"standard::is-hidden,standard::is-backup,standard::size," \
"standard::content-type,time::modified"
"standard::content-type,time::modified,standard::target-uri"
enum {
/* the first 3 must be these due to settings caching sort column */
MODEL_COL_NAME,
......@@ -2612,7 +2612,7 @@ operation_mode_set_recent (GtkFileChooserWidget *impl)
gtk_places_sidebar_set_location (GTK_PLACES_SIDEBAR (priv->places_sidebar), file);
g_object_unref (file);
gtk_widget_set_sensitive (priv->filter_combo, TRUE);
gtk_tree_view_column_set_visible (priv->list_location_column, FALSE);
gtk_tree_view_column_set_visible (priv->list_location_column, TRUE);
}
static void
......@@ -4192,9 +4192,23 @@ file_system_model_set (GtkFileSystemModel *model,
else
dir_location = NULL;
if (dir_location && g_file_equal (home_location, dir_location))
if (dir_location && file_is_recent_uri (dir_location))
{
const char *target_uri;
GFile *target;
target_uri = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
target = g_file_new_for_uri (target_uri);
g_object_unref (dir_location);
dir_location = g_file_get_parent (target);
g_object_unref (target);
}
if (!dir_location)
location = g_strdup ("");
else if (g_file_equal (home_location, dir_location))
location = g_strdup (_("Home"));
else if (dir_location && g_file_has_prefix (dir_location, home_location))
else if (g_file_has_prefix (dir_location, home_location))
{
gchar *relative_path;
......@@ -4204,7 +4218,7 @@ file_system_model_set (GtkFileSystemModel *model,
g_free (relative_path);
}
else
location = g_strdup ("");
location = g_file_get_path (dir_location);
g_value_take_string (value, location);
......
......@@ -218,6 +218,7 @@ visit_directory (GFile *dir, SearchThreadData *data)
G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP ","
G_FILE_ATTRIBUTE_STANDARD_SIZE ","
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_TARGET_URI ","
G_FILE_ATTRIBUTE_TIME_MODIFIED,
G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
data->cancellable, NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment