@@ -93,14 +93,50 @@ struct _EomMetadataSidebarPrivate {
9393
9494G_DEFINE_TYPE_WITH_PRIVATE (EomMetadataSidebar , eom_metadata_sidebar , GTK_TYPE_SCROLLED_WINDOW )
9595
96+ static void
97+ parent_file_display_name_query_info_cb (GObject * source_object ,
98+ GAsyncResult * res ,
99+ gpointer user_data )
100+ {
101+ EomMetadataSidebar * sidebar = EOM_METADATA_SIDEBAR (user_data );
102+ GFile * parent_file = G_FILE (source_object );
103+ GFileInfo * file_info ;
104+ gchar * baseuri ;
105+ gchar * display_name ;
106+ gchar * str ;
107+
108+ file_info = g_file_query_info_finish (parent_file , res , NULL );
109+ if (file_info == NULL ) {
110+ display_name = g_file_get_basename (parent_file );
111+ } else {
112+ display_name = g_strdup (
113+ g_file_info_get_display_name (file_info ));
114+ g_object_unref (file_info );
115+ }
116+ baseuri = g_file_get_uri (parent_file );
117+ str = g_markup_printf_escaped ("<a href=\"%s\">%s</a>" ,
118+ baseuri ,
119+ display_name );
120+ gtk_label_set_markup (GTK_LABEL (sidebar -> priv -> folder_label ), str );
121+
122+ g_free (str );
123+ g_free (baseuri );
124+ g_free (display_name );
125+
126+ str = g_file_get_path (parent_file );
127+ gtk_widget_set_tooltip_text (GTK_WIDGET (sidebar -> priv -> folder_label ), str );
128+ g_free (str );
129+
130+ g_object_unref (sidebar );
131+ }
132+
96133static void
97134eom_metadata_sidebar_update_general_section (EomMetadataSidebar * sidebar )
98135{
99136 EomMetadataSidebarPrivate * priv = sidebar -> priv ;
100137 EomImage * img = priv -> image ;
101138 GFile * file , * parent_file ;
102139 GFileInfo * file_info ;
103- gchar * basename , * baseuri ;
104140 gchar * str ;
105141 goffset bytes ;
106142 gint width , height ;
@@ -146,19 +182,14 @@ eom_metadata_sidebar_update_general_section (EomMetadataSidebar *sidebar)
146182 /* file is root directory itself */
147183 parent_file = g_object_ref (file );
148184 }
149- basename = g_file_get_basename (parent_file );
150- baseuri = g_file_get_uri (parent_file );
151- str = g_markup_printf_escaped ("<a href=\"%s\">%s</a>" ,
152- baseuri ,
153- basename );
154- gtk_label_set_markup (GTK_LABEL (priv -> folder_label ), str );
155- g_free (str );
156- g_free (baseuri );
157- g_free (basename );
158-
159- str = g_file_get_path (parent_file );
160- gtk_widget_set_tooltip_text (GTK_WIDGET (priv -> folder_label ), str );
161- g_free (str );
185+ gtk_label_set_markup (GTK_LABEL (sidebar -> priv -> folder_label ), NULL );
186+ g_file_query_info_async (parent_file ,
187+ G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ,
188+ G_FILE_QUERY_INFO_NONE ,
189+ G_PRIORITY_DEFAULT ,
190+ NULL ,
191+ parent_file_display_name_query_info_cb ,
192+ g_object_ref (sidebar ));
162193
163194 g_object_unref (parent_file );
164195}
0 commit comments