[empathy: 8/19] Add an icon to edited messages



commit 04986511e537b4a5d90cc13f63580984e6fa1318
Author: Danielle Madeley <danielle madeley collabora co uk>
Date:   Fri May 20 13:02:45 2011 +1000

    Add an icon to edited messages
    
    Currently this is using "format-text-direction-ltr" which is a crappy choice.
    We should ask for a better icon. Also, this should really be implemented as
    a class, so that the icon can change with the theme. Or be made part of the
    Adium theme, or something. Basically this is kludgey.

 libempathy-gtk/empathy-images.h      |    2 ++
 libempathy-gtk/empathy-theme-adium.c |   28 ++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/libempathy-gtk/empathy-images.h b/libempathy-gtk/empathy-images.h
index 0761fd7..2962ad6 100644
--- a/libempathy-gtk/empathy-images.h
+++ b/libempathy-gtk/empathy-images.h
@@ -46,6 +46,8 @@ G_BEGIN_DECLS
 #define EMPATHY_IMAGE_LOG                 "document-open-recent"
 #define EMPATHY_IMAGE_DOCUMENT_SEND       "document-send"
 #define EMPATHY_IMAGE_AVATAR_DEFAULT      "avatar-default"
+/* FIXME: need a better icon! */
+#define EMPATHY_IMAGE_EDIT_MESSAGE        "format-text-direction-ltr"
 
 #define EMPATHY_IMAGE_CALL                "call-start"
 #define EMPATHY_IMAGE_CALL_MISSED         "call-stop"
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
index 14a3998..a4df12d 100644
--- a/libempathy-gtk/empathy-theme-adium.c
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -1036,6 +1036,7 @@ theme_adium_edit_message (EmpathyChatView *view,
 	WebKitDOMElement *span;
 	gchar *id, *parsed_body;
 	gchar *tooltip, *timestamp;
+	GtkIconInfo *icon_info;
 	GError *error = NULL;
 
 	if (priv->pages_loading != 0) {
@@ -1088,6 +1089,33 @@ theme_adium_edit_message (EmpathyChatView *view,
 	g_free (tooltip);
 	g_free (timestamp);
 
+	/* mark this message as edited */
+	icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (),
+		EMPATHY_IMAGE_EDIT_MESSAGE, 16, 0);
+
+	if (icon_info != NULL) {
+		/* set the icon as a background image using CSS
+		 * FIXME: the icon won't update in response to theme changes */
+		gchar *style = g_strdup_printf (
+			"background-image:url('%s');"
+			"background-repeat:no-repeat;"
+			"background-position:left center;"
+			"padding-left:19px;", /* 16px icon + 3px padding */
+			gtk_icon_info_get_filename (icon_info));
+
+		webkit_dom_element_set_attribute (span, "style", style, &error);
+
+		if (error != NULL) {
+			DEBUG ("Error setting element style: %s",
+				error->message);
+			g_clear_error (&error);
+			/* not fatal */
+		}
+
+		g_free (style);
+		gtk_icon_info_free (icon_info);
+	}
+
 	goto finally;
 
 except:



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