aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-chat-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy-gtk/empathy-chat-view.c')
-rw-r--r--libempathy-gtk/empathy-chat-view.c54
1 files changed, 16 insertions, 38 deletions
diff --git a/libempathy-gtk/empathy-chat-view.c b/libempathy-gtk/empathy-chat-view.c
index 947281590..c7428e9df 100644
--- a/libempathy-gtk/empathy-chat-view.c
+++ b/libempathy-gtk/empathy-chat-view.c
@@ -68,7 +68,6 @@ struct _EmpathyChatViewPriv {
GtkTextBuffer *buffer;
EmpathyTheme *theme;
- gpointer theme_context;
time_t last_timestamp;
BlockType last_block_type;
@@ -130,7 +129,8 @@ static void chat_view_clear_view_cb (GtkMenuItem *
static gboolean chat_view_is_scrolled_down (EmpathyChatView *view);
static void chat_view_theme_changed_cb (EmpathyThemeManager *manager,
EmpathyChatView *view);
-static void chat_view_theme_updated_cb (EmpathyTheme *theme,
+static void chat_view_theme_notify_cb (EmpathyTheme *theme,
+ GParamSpec *param,
EmpathyChatView *view);
G_DEFINE_TYPE (EmpathyChatView, empathy_chat_view, GTK_TYPE_TEXT_VIEW);
@@ -233,12 +233,8 @@ chat_view_finalize (GObject *object)
if (priv->theme) {
g_signal_handlers_disconnect_by_func (priv->theme,
- chat_view_theme_updated_cb,
+ chat_view_theme_notify_cb,
view);
-
- empathy_theme_detach_from_view (priv->theme, priv->theme_context,
- view);
-
g_object_unref (priv->theme);
}
@@ -796,8 +792,7 @@ empathy_chat_view_append_message (EmpathyChatView *view,
chat_view_maybe_trim_buffer (view);
- empathy_theme_append_message (priv->theme, priv->theme_context,
- view, msg);
+ empathy_theme_append_message (priv->theme, view, msg);
if (bottom) {
empathy_chat_view_scroll_down (view);
@@ -820,9 +815,7 @@ empathy_chat_view_append_event (EmpathyChatView *view,
chat_view_maybe_trim_buffer (view);
- empathy_theme_append_event (priv->theme,
- priv->theme_context,
- view, str);
+ empathy_theme_append_event (priv->theme, view, str);
if (bottom) {
empathy_chat_view_scroll_down (view);
@@ -852,13 +845,10 @@ empathy_chat_view_append_button (EmpathyChatView *view,
bottom = chat_view_is_scrolled_down (view);
- empathy_theme_append_timestamp (priv->theme, priv->theme_context,
- view, NULL,
- TRUE, TRUE);
+ empathy_theme_append_timestamp (priv->theme, view, NULL, TRUE, TRUE);
if (message) {
- empathy_theme_append_text (priv->theme, priv->theme_context,
- view, message, tag, NULL);
+ empathy_theme_append_text (priv->theme, view, message, tag, NULL);
}
gtk_text_buffer_get_end_iter (priv->buffer, &iter);
@@ -1006,8 +996,6 @@ empathy_chat_view_clear (EmpathyChatView *view)
*/
priv = GET_PRIV (view);
- empathy_theme_view_cleared (priv->theme, priv->theme_context, view);
-
priv->last_block_type = BLOCK_TYPE_NONE;
priv->last_timestamp = 0;
}
@@ -1370,16 +1358,11 @@ empathy_chat_view_get_theme (EmpathyChatView *view)
}
static void
-chat_view_theme_updated_cb (EmpathyTheme *theme, EmpathyChatView *view)
+chat_view_theme_notify_cb (EmpathyTheme *theme,
+ GParamSpec *param,
+ EmpathyChatView *view)
{
- EmpathyChatViewPriv *priv;
-
- priv = GET_PRIV (view);
-
- empathy_theme_detach_from_view (priv->theme, priv->theme_context,
- view);
-
- priv->theme_context = empathy_theme_setup_with_view (theme, view);
+ empathy_theme_update_view (theme, view);
}
void
@@ -1394,24 +1377,19 @@ empathy_chat_view_set_theme (EmpathyChatView *view, EmpathyTheme *theme)
if (priv->theme) {
g_signal_handlers_disconnect_by_func (priv->theme,
- chat_view_theme_updated_cb,
+ chat_view_theme_notify_cb,
view);
- empathy_theme_detach_from_view (priv->theme, priv->theme_context,
- view);
-
g_object_unref (priv->theme);
}
priv->theme = g_object_ref (theme);
- g_signal_connect (priv->theme,
- "updated",
- G_CALLBACK (chat_view_theme_updated_cb),
+ empathy_theme_update_view (theme, view);
+ g_signal_connect (priv->theme, "notify",
+ G_CALLBACK (chat_view_theme_notify_cb),
view);
- priv->theme_context = empathy_theme_setup_with_view (theme, view);
-
- /* FIXME: Possibly redraw the function and make it a property */
+ /* FIXME: Redraw all messages using the new theme */
}
void