[eog] EogMetadataSidebar: Use standard::display-name when showing the parent



commit fff55c6afdd1c159c1ec554316fa6170f561cbe1
Author: Debarshi Ray <debarshir gnome org>
Date:   Tue Sep 8 18:18:00 2015 +0200

    EogMetadataSidebar: Use standard::display-name when showing the parent
    
    https://bugzilla.gnome.org/show_bug.cgi?id=754731

 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 5402380..714d6a6 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);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]