Mercurial > pidgin
changeset 14636:2c09131fffa5
[gaim-migrate @ 17382]
Update the statusbox when a plugin changes the global buddyicon.
Make sure the iconboxes show up correctly if a plugin toggles them on/off.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Wed, 27 Sep 2006 02:29:03 +0000 |
parents | ba12c5e9d7e7 |
children | c811cfc944d1 |
files | gtk/gtkstatusbox.c |
diffstat | 1 files changed, 24 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk/gtkstatusbox.c Wed Sep 27 02:07:06 2006 +0000 +++ b/gtk/gtkstatusbox.c Wed Sep 27 02:29:03 2006 +0000 @@ -298,6 +298,8 @@ if (status_box->icon_box != NULL) return; + status_box->icon = gtk_image_new(); + status_box->icon_box = gtk_event_box_new(); if (status_box->account && !gaim_account_get_ui_bool(status_box->account, GAIM_GTK_UI, "use-global-buddyicon", TRUE)) { @@ -309,8 +311,6 @@ { gtk_gaim_status_box_set_buddy_icon(status_box, gaim_prefs_get_string("/gaim/gtk/accounts/buddyicon")); } - status_box->icon = gtk_image_new(); - status_box->icon_box = gtk_event_box_new(); status_box->hand_cursor = gdk_cursor_new (GDK_HAND2); status_box->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR); @@ -352,6 +352,7 @@ g_free(statusbox->buddy_icon_path); + statusbox->icon = NULL; statusbox->icon_box = NULL; statusbox->buddy_icon_path = NULL; statusbox->buddy_icon = NULL; @@ -1087,7 +1088,7 @@ } static void -icon_choose_cb(const char *filename, gpointer data) +buddy_icon_set_cb(const char *filename, gpointer data) { GtkGaimStatusBox *box; @@ -1125,14 +1126,30 @@ } } gtk_gaim_status_box_set_buddy_icon(box, filename); - if (box->account == NULL) - gaim_prefs_set_string("/gaim/gtk/accounts/buddyicon", filename); } box->buddy_icon_sel = NULL; } static void +icon_choose_cb(const char *filename, gpointer data) +{ + GtkGaimStatusBox *box = data; + if (box->account == NULL) + /* The pref-connect callback does the actual work */ + gaim_prefs_set_string("/gaim/gtk/accounts/buddyicon", filename); + else + buddy_icon_set_cb(filename, data); +} + +static void +update_buddyicon_cb(const char *name, GaimPrefType type, + gconstpointer value, gpointer data) +{ + buddy_icon_set_cb(value, data); +} + +static void gtk_gaim_status_box_init (GtkGaimStatusBox *status_box) { GtkCellRenderer *text_rend; @@ -1234,6 +1251,8 @@ buddy_list_details_pref_changed_cb, status_box); gaim_prefs_connect_callback(status_box, "/gaim/gtk/conversations/spellcheck", spellcheck_prefs_cb, status_box); + gaim_prefs_connect_callback(status_box, "/gaim/gtk/accounts/buddyicon", + update_buddyicon_cb, status_box); } static void