diff options
author | Will Thompson <will@willthompson.co.uk> | 2012-01-18 23:54:48 +0800 |
---|---|---|
committer | Will Thompson <will@willthompson.co.uk> | 2012-01-19 01:47:25 +0800 |
commit | 3030fa4e082c695fa25b564e513307f3423feaae (patch) | |
tree | 3d2795a6a2662a708cfad2a83165000e78640b76 /libempathy-gtk | |
parent | aded85c91fb409bafb06492ddb85aa1224178d4c (diff) | |
download | gsoc2013-empathy-3030fa4e082c695fa25b564e513307f3423feaae.tar gsoc2013-empathy-3030fa4e082c695fa25b564e513307f3423feaae.tar.gz gsoc2013-empathy-3030fa4e082c695fa25b564e513307f3423feaae.tar.bz2 gsoc2013-empathy-3030fa4e082c695fa25b564e513307f3423feaae.tar.lz gsoc2013-empathy-3030fa4e082c695fa25b564e513307f3423feaae.tar.xz gsoc2013-empathy-3030fa4e082c695fa25b564e513307f3423feaae.tar.zst gsoc2013-empathy-3030fa4e082c695fa25b564e513307f3423feaae.zip |
chat_view_append_message: take a should_highlight argument
Rather than the EmpathyChatView implementations calling
empathy_message_should_highlight() themselves, this patch makes
EmpathyChat take responsibility for doing so.
The theme preview in Preferences, whether deliberately or otherwise,
highlights the line in which Juliet mentions Romeo. This behaviour is
preserved.
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-chat-text-view.c | 6 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat-text-view.h | 3 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat-view.c | 6 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat-view.h | 6 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat.c | 9 | ||||
-rw-r--r-- | libempathy-gtk/empathy-theme-adium.c | 19 | ||||
-rw-r--r-- | libempathy-gtk/empathy-theme-boxes.c | 3 | ||||
-rw-r--r-- | libempathy-gtk/empathy-theme-irc.c | 5 |
8 files changed, 37 insertions, 20 deletions
diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c index c251f1f42..60d642ccb 100644 --- a/libempathy-gtk/empathy-chat-text-view.c +++ b/libempathy-gtk/empathy-chat-text-view.c @@ -717,7 +717,8 @@ chat_text_view_scroll_down (EmpathyChatView *view) static void chat_text_view_append_message (EmpathyChatView *view, - EmpathyMessage *msg) + EmpathyMessage *msg, + gboolean should_highlight) { EmpathyChatTextView *text_view = EMPATHY_CHAT_TEXT_VIEW (view); EmpathyChatTextViewPriv *priv = GET_PRIV (text_view); @@ -739,7 +740,8 @@ chat_text_view_append_message (EmpathyChatView *view, chat_text_maybe_append_date_and_time (text_view, timestamp); if (EMPATHY_CHAT_TEXT_VIEW_GET_CLASS (view)->append_message) { EMPATHY_CHAT_TEXT_VIEW_GET_CLASS (view)->append_message (text_view, - msg); + msg, + should_highlight); } if (bottom) { diff --git a/libempathy-gtk/empathy-chat-text-view.h b/libempathy-gtk/empathy-chat-text-view.h index 12edbcc64..ce83fd2fa 100644 --- a/libempathy-gtk/empathy-chat-text-view.h +++ b/libempathy-gtk/empathy-chat-text-view.h @@ -56,7 +56,8 @@ struct _EmpathyChatTextViewClass { /* <vtable> */ void (*append_message) (EmpathyChatTextView *view, - EmpathyMessage *message); + EmpathyMessage *message, + gboolean should_highlight); }; #define EMPATHY_CHAT_TEXT_VIEW_TAG_CUT "cut" diff --git a/libempathy-gtk/empathy-chat-view.c b/libempathy-gtk/empathy-chat-view.c index 088b12084..f5d6ddf09 100644 --- a/libempathy-gtk/empathy-chat-view.c +++ b/libempathy-gtk/empathy-chat-view.c @@ -61,13 +61,15 @@ chat_view_base_init (gpointer klass) void empathy_chat_view_append_message (EmpathyChatView *view, - EmpathyMessage *msg) + EmpathyMessage *msg, + gboolean should_highlight) { g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view)); if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->append_message) { EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->append_message (view, - msg); + msg, + should_highlight); } } diff --git a/libempathy-gtk/empathy-chat-view.h b/libempathy-gtk/empathy-chat-view.h index bc9e91761..2c47e0429 100644 --- a/libempathy-gtk/empathy-chat-view.h +++ b/libempathy-gtk/empathy-chat-view.h @@ -43,7 +43,8 @@ struct _EmpathyChatViewIface { /* VTabled */ void (*append_message) (EmpathyChatView *view, - EmpathyMessage *msg); + EmpathyMessage *msg, + gboolean should_highlight); void (*append_event) (EmpathyChatView *view, const gchar *str); void (*append_event_markup) (EmpathyChatView *view, @@ -81,7 +82,8 @@ struct _EmpathyChatViewIface { GType empathy_chat_view_get_type (void) G_GNUC_CONST; void empathy_chat_view_append_message (EmpathyChatView *view, - EmpathyMessage *msg); + EmpathyMessage *msg, + gboolean should_highlight); void empathy_chat_view_append_event (EmpathyChatView *view, const gchar *str); void empathy_chat_view_append_event_markup (EmpathyChatView *view, diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index 1496f582d..c8ef24809 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -1400,12 +1400,13 @@ chat_message_received (EmpathyChat *chat, empathy_chat_view_edit_message (chat->view, message); } else { + gboolean should_highlight = empathy_message_should_highlight (message); DEBUG ("Appending new message '%s' from %s (%d)", empathy_message_get_token (message), empathy_contact_get_alias (sender), empathy_contact_get_handle (sender)); - empathy_chat_view_append_message (chat->view, message); + empathy_chat_view_append_message (chat->view, message, should_highlight); if (empathy_message_is_incoming (message)) { priv->unread_messages++; @@ -2491,13 +2492,15 @@ got_filtered_messages_cb (GObject *manager, "sender", empathy_message_get_sender (message), NULL); - empathy_chat_view_append_message (chat->view, syn_msg); + empathy_chat_view_append_message (chat->view, syn_msg, + empathy_message_should_highlight (syn_msg)); empathy_chat_view_edit_message (chat->view, message); g_object_unref (syn_msg); } else { /* append the latest message */ - empathy_chat_view_append_message (chat->view, message); + empathy_chat_view_append_message (chat->view, message, + empathy_message_should_highlight (message)); } g_object_unref (message); diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index 7b0cd2169..98df46b79 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -132,13 +132,15 @@ typedef struct { guint type; EmpathyMessage *msg; char *str; + gboolean should_highlight; } QueuedItem; static QueuedItem * queue_item (GQueue *queue, guint type, EmpathyMessage *msg, - const char *str) + const char *str, + gboolean should_highlight) { QueuedItem *item = g_slice_new0 (QueuedItem); @@ -146,6 +148,7 @@ queue_item (GQueue *queue, if (msg != NULL) item->msg = g_object_ref (msg); item->str = g_strdup (str); + item->should_highlight = should_highlight; g_queue_push_tail (queue, item); @@ -775,7 +778,8 @@ theme_adium_remove_all_focus_marks (EmpathyThemeAdium *theme) static void theme_adium_append_message (EmpathyChatView *view, - EmpathyMessage *msg) + EmpathyMessage *msg, + gboolean should_highlight) { EmpathyThemeAdium *theme = EMPATHY_THEME_ADIUM (view); EmpathyThemeAdiumPriv *priv = GET_PRIV (theme); @@ -797,7 +801,7 @@ theme_adium_append_message (EmpathyChatView *view, gboolean action; if (priv->pages_loading != 0) { - queue_item (&priv->message_queue, QUEUED_MESSAGE, msg, NULL); + queue_item (&priv->message_queue, QUEUED_MESSAGE, msg, NULL, should_highlight); return; } @@ -886,7 +890,7 @@ theme_adium_append_message (EmpathyChatView *view, } else { g_string_append (message_classes, " incoming"); } - if (empathy_message_should_highlight (msg)) { + if (should_highlight) { g_string_append (message_classes, " mention"); } if (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_AUTO_REPLY) { @@ -975,7 +979,7 @@ theme_adium_append_event (EmpathyChatView *view, gchar *str_escaped; if (priv->pages_loading != 0) { - queue_item (&priv->message_queue, QUEUED_EVENT, NULL, str); + queue_item (&priv->message_queue, QUEUED_EVENT, NULL, str, FALSE); return; } @@ -1005,7 +1009,7 @@ theme_adium_edit_message (EmpathyChatView *view, GError *error = NULL; if (priv->pages_loading != 0) { - queue_item (&priv->message_queue, QUEUED_EDIT, message, NULL); + queue_item (&priv->message_queue, QUEUED_EDIT, message, NULL, FALSE); return; } @@ -1345,7 +1349,8 @@ theme_adium_load_finished_cb (WebKitWebView *view, switch (item->type) { case QUEUED_MESSAGE: - theme_adium_append_message (chat_view, item->msg); + theme_adium_append_message (chat_view, item->msg, + item->should_highlight); break; case QUEUED_EDIT: diff --git a/libempathy-gtk/empathy-theme-boxes.c b/libempathy-gtk/empathy-theme-boxes.c index b9fd08d84..cf0c65268 100644 --- a/libempathy-gtk/empathy-theme-boxes.c +++ b/libempathy-gtk/empathy-theme-boxes.c @@ -337,7 +337,8 @@ theme_boxes_maybe_append_header (EmpathyThemeBoxes *theme, static void theme_boxes_append_message (EmpathyChatTextView *view, - EmpathyMessage *message) + EmpathyMessage *message, + gboolean should_highlight) { EmpathyContact *sender; diff --git a/libempathy-gtk/empathy-theme-irc.c b/libempathy-gtk/empathy-theme-irc.c index 2ee81a23e..ed8e3b380 100644 --- a/libempathy-gtk/empathy-theme-irc.c +++ b/libempathy-gtk/empathy-theme-irc.c @@ -50,7 +50,8 @@ theme_irc_create_tags (EmpathyThemeIrc *theme) static void theme_irc_append_message (EmpathyChatTextView *view, - EmpathyMessage *message) + EmpathyMessage *message, + gboolean should_highlight) { GtkTextBuffer *buffer; const gchar *name; @@ -77,7 +78,7 @@ theme_irc_append_message (EmpathyChatTextView *view, if (empathy_contact_is_user (contact)) { nick_tag = EMPATHY_THEME_IRC_TAG_NICK_SELF; } else { - if (empathy_message_should_highlight (message)) { + if (should_highlight) { nick_tag = EMPATHY_THEME_IRC_TAG_NICK_HIGHLIGHT; } else { nick_tag = EMPATHY_THEME_IRC_TAG_NICK_OTHER; |