# HG changeset patch # User Sadrul Habib Chowdhury # Date 1159324143 0 # Node ID 2c09131fffa5c006be85a940dad4258b4b3f11f3 # Parent ba12c5e9d7e7b98252b3e3f140b48497252cb3c6 [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 diff -r ba12c5e9d7e7 -r 2c09131fffa5 gtk/gtkstatusbox.c --- 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