Updating branch refs/heads/eric/bugzilla-patches to 2fac2c92ccb2fec0d6b64aa97c1f2315836d3ab1 (commit) from d3211fcb34491200bf60d1e38ace87f0ca8ee4c0 (commit)
commit 2fac2c92ccb2fec0d6b64aa97c1f2315836d3ab1 Author: Eric Koegel <eric.koe...@gmail.com> Date: Fri Mar 2 15:00:36 2012 +0300 Comments in .desktop files are displayed in the tooltip (bug 8509) src/xfdesktop-regular-file-icon.c | 40 ++++++++++++++++++++++++++++++++++++- 1 files changed, 39 insertions(+), 1 deletions(-) diff --git a/src/xfdesktop-regular-file-icon.c b/src/xfdesktop-regular-file-icon.c index db6e66b..f42f6d6 100644 --- a/src/xfdesktop-regular-file-icon.c +++ b/src/xfdesktop-regular-file-icon.c @@ -516,13 +516,27 @@ xfdesktop_regular_file_icon_peek_tooltip(XfdesktopIcon *icon) if(!regular_file_icon->priv->tooltip) { GFileInfo *info = xfdesktop_file_icon_peek_file_info(XFDESKTOP_FILE_ICON(icon)); - const gchar *content_type; + const gchar *content_type, *comment = NULL; gchar *description, *size_string, *time_string; guint64 size, mtime; + gboolean is_desktop_file = FALSE; if(!info) return NULL; + if(g_content_type_equals(g_file_info_get_content_type(info), + "application/x-desktop")) + { + is_desktop_file = TRUE; + } + else + { + gchar *uri = g_file_get_uri(regular_file_icon->priv->file); + if(g_str_has_suffix(uri, ".desktop")) + is_desktop_file = TRUE; + g_free(uri); + } + content_type = g_file_info_get_content_type(info); description = g_content_type_get_description(content_type); @@ -534,10 +548,34 @@ xfdesktop_regular_file_icon_peek_tooltip(XfdesktopIcon *icon) G_FILE_ATTRIBUTE_TIME_MODIFIED); time_string = xfdesktop_file_utils_format_time_for_display(mtime); + /* Extract the Comment entry from the .desktop file */ + if(is_desktop_file) + { + gchar *path = g_file_get_path(regular_file_icon->priv->file); + XfceRc *rcfile = xfce_rc_simple_open(path, TRUE); + g_free(path); + + if(rcfile) { + xfce_rc_set_group(rcfile, "Desktop Entry"); + comment = xfce_rc_read_entry(rcfile, "Comment", NULL); + } + + xfce_rc_close(rcfile); + } + regular_file_icon->priv->tooltip = g_strdup_printf(_("Type: %s\nSize: %s\nLast modified: %s"), description, size_string, time_string); + /* Prepend the comment to the tooltip */ + if(is_desktop_file && comment != NULL) { + gchar *tooltip = regular_file_icon->priv->tooltip; + regular_file_icon->priv->tooltip = g_strdup_printf("%s\n%s", + comment, + tooltip); + g_free(tooltip); + } + g_free(time_string); g_free(size_string); g_free(description); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits