# HG changeset patch # User Nathan Walp # Date 1074367299 0 # Node ID ea3eb461efc059ef65ce17e5770195534737132a # Parent 7616ff76fe07823ada9142d4e3363339ee290f36 [gaim-migrate @ 8839] this makes the nifty account dropdowns reflect changes when an account is added or removed committer: Tailor Script diff -r 7616ff76fe07 -r ea3eb461efc0 src/account.c --- a/src/account.c Sat Jan 17 17:43:32 2004 +0000 +++ b/src/account.c Sat Jan 17 19:21:39 2004 +0000 @@ -1418,6 +1418,8 @@ accounts = g_list_append(accounts, account); schedule_accounts_save(); + + gaim_signal_emit(gaim_accounts_get_handle(), "account-added", account); } void @@ -1428,6 +1430,8 @@ accounts = g_list_remove(accounts, account); schedule_accounts_save(); + + gaim_signal_emit(gaim_accounts_get_handle(), "account-removed", account); } void @@ -1637,6 +1641,14 @@ GAIM_SUBTYPE_ACCOUNT), gaim_value_new(GAIM_TYPE_STRING), gaim_value_new(GAIM_TYPE_UINT)); + + gaim_signal_register(handle, "account-added", + gaim_marshal_VOID__POINTER, NULL, 1, + gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_ACCOUNT)); + + gaim_signal_register(handle, "account-removed", + gaim_marshal_VOID__POINTER, NULL, 1, + gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_ACCOUNT)); } void diff -r 7616ff76fe07 -r ea3eb461efc0 src/gtkutils.c --- a/src/gtkutils.c Sat Jan 17 17:43:32 2004 +0000 +++ b/src/gtkutils.c Sat Jan 17 19:21:39 2004 +0000 @@ -873,7 +873,7 @@ } static void -account_menu_sign_on_off_cb(GaimConnection *gc, GtkWidget *optmenu) +regenerate_account_menu(GtkWidget *optmenu) { GtkWidget *menu; GtkWidget *item; @@ -896,6 +896,18 @@ create_account_menu(optmenu, account, check_account_func, show_all); } +static void +account_menu_sign_on_off_cb(GaimConnection *gc, GtkWidget *optmenu) +{ + regenerate_account_menu(optmenu); +} + +static void +account_menu_added_removed_cb(GaimAccount *account, GtkWidget *optmenu) +{ + regenerate_account_menu(optmenu); +} + static gboolean account_menu_destroyed_cb(GtkWidget *optmenu, GdkEvent *event, void *user_data) @@ -927,6 +939,12 @@ gaim_signal_connect(gaim_connections_get_handle(), "signed-off", optmenu, GAIM_CALLBACK(account_menu_sign_on_off_cb), optmenu); + gaim_signal_connect(gaim_accounts_get_handle(), "account-added", + optmenu, GAIM_CALLBACK(account_menu_added_removed_cb), + optmenu); + gaim_signal_connect(gaim_accounts_get_handle(), "account-removed", + optmenu, GAIM_CALLBACK(account_menu_added_removed_cb), + optmenu); /* Set some data. */ g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);