diff options
author | Debarshi Ray <debarshir@gnome.org> | 2015-09-08 18:18:00 +0200 |
---|---|---|
committer | Felix Riemann <friemann@gnome.org> | 2015-09-11 19:46:00 +0200 |
commit | fff55c6afdd1c159c1ec554316fa6170f561cbe1 (patch) | |
tree | 0bc1b795885e56f01c3c84ba8888d223388fd386 | |
parent | 3175cec316804c86db3f1c27f788140771ba7a73 (diff) | |
download | eog-fff55c6afdd1c159c1ec554316fa6170f561cbe1.tar.gz |
EogMetadataSidebar: Use standard::display-name when showing the parent
https://bugzilla.gnome.org/show_bug.cgi?id=754731
-rw-r--r-- | src/eog-metadata-sidebar.c | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/src/eog-metadata-sidebar.c b/src/eog-metadata-sidebar.c index 54023807..714d6a6e 100644 --- a/src/eog-metadata-sidebar.c +++ b/src/eog-metadata-sidebar.c @@ -90,13 +90,44 @@ struct _EogMetadataSidebarPrivate { G_DEFINE_TYPE_WITH_PRIVATE(EogMetadataSidebar, eog_metadata_sidebar, GTK_TYPE_SCROLLED_WINDOW) static void +parent_file_display_name_query_info_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + EogMetadataSidebar *sidebar = EOG_METADATA_SIDEBAR (user_data); + GFile *parent_file = G_FILE (source_object); + GFileInfo *file_info; + gchar *baseuri; + gchar *display_name; + gchar *str; + + file_info = g_file_query_info_finish (parent_file, res, NULL); + if (file_info == NULL) { + display_name = g_file_get_basename (parent_file); + } else { + display_name = g_strdup ( + g_file_info_get_display_name (file_info)); + g_object_unref (file_info); + } + baseuri = g_file_get_uri (parent_file); + str = g_markup_printf_escaped ("<a href=\"%s\">%s</a>", + baseuri, + display_name); + gtk_label_set_markup (GTK_LABEL (sidebar->priv->folder_label), str); + + g_free (str); + g_free (baseuri); + g_free (display_name); + g_object_unref (sidebar); +} + +static void eog_metadata_sidebar_update_general_section (EogMetadataSidebar *sidebar) { EogMetadataSidebarPrivate *priv = sidebar->priv; EogImage *img = priv->image; GFile *file, *parent_file; GFileInfo *file_info; - gchar *basename, *baseuri; gchar *str; goffset bytes; gint width, height; @@ -142,15 +173,14 @@ eog_metadata_sidebar_update_general_section (EogMetadataSidebar *sidebar) /* file is root directory itself */ parent_file = g_object_ref (file); } - basename = g_file_get_basename (parent_file); - baseuri = g_file_get_uri (parent_file); - str = g_markup_printf_escaped ("<a href=\"%s\">%s</a>", - baseuri, - basename); - gtk_label_set_markup (GTK_LABEL (priv->folder_label), str); - g_free (str); - g_free (baseuri); - g_free (basename); + gtk_label_set_markup (GTK_LABEL (sidebar->priv->folder_label), NULL); + g_file_query_info_async (parent_file, + G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, + G_FILE_QUERY_INFO_NONE, + G_PRIORITY_DEFAULT, + NULL, + parent_file_display_name_query_info_cb, + g_object_ref (sidebar)); g_object_unref (parent_file); } |