diff src/gtkblist.c @ 8937:fd1a4ff1f7ed

[gaim-migrate @ 9707] Tools->Room List will now be grayed out when you're not signed on with an account that supports listing rooms. This involved 2 big changes: -Change when the sign_on_off_cb function in gtkblist gets called... it used to get called when the signing-on and signing-off signal was emitted, but I changed it to signed-on and signed-off. This makes more sense to me, and it makes my code work :-) Let me know if you notice any side-effects -Add functions to the roomlist API for determining if any online accounts support chatting or not. This involved extracting a function from gtkroomlist.c and putting it in roomlist.c, and adding a little helper TRUE/FALSE function committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 15 May 2004 21:56:17 +0000
parents 35b68d76cb4c
children 88ec59dec95a
line wrap: on
line diff
--- a/src/gtkblist.c	Sat May 15 21:24:43 2004 +0000
+++ b/src/gtkblist.c	Sat May 15 21:56:17 2004 +0000
@@ -2882,12 +2882,16 @@
 }
 
 static void
-signed_on_off_cb(GaimConnection *gc, GaimBuddyList *blist)
+sign_on_off_cb(GaimConnection *gc, GaimBuddyList *blist)
 {
 	GaimGtkBuddyList *gtkblist = GAIM_GTK_BLIST(blist);
+	GtkWidget *widget;
 
 	gaim_gtk_blist_update_protocol_actions();
 	gaim_gtkpounce_menu_build(gtkblist->bpmenu);
+
+	widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Room List"));
+	gtk_widget_set_sensitive(widget, gaim_roomlist_is_showable());
 }
 
 /* this is called on all sorts of signals, and we have no reason to pass
@@ -3244,10 +3248,10 @@
 					gaim_gtk_blist_update_columns, NULL)));
 
 	/* Setup some gaim signal handlers. */
-	gaim_signal_connect(gaim_connections_get_handle(), "signing-on",
-						gtkblist, GAIM_CALLBACK(signed_on_off_cb), list);
-	gaim_signal_connect(gaim_connections_get_handle(), "signing-off",
-						gtkblist, GAIM_CALLBACK(signed_on_off_cb), list);
+	gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
+						gtkblist, GAIM_CALLBACK(sign_on_off_cb), list);
+	gaim_signal_connect(gaim_connections_get_handle(), "signed-off",
+						gtkblist, GAIM_CALLBACK(sign_on_off_cb), list);
 
 	/* emit our created signal */
 	gaim_signal_emit(gaim_gtk_blist_get_handle(), "gtkblist-created", list);
@@ -3737,10 +3741,10 @@
 	if (!gtkblist)
 		return;
 
-	gaim_signal_disconnect(gaim_connections_get_handle(), "signing-on",
-						   gtkblist, GAIM_CALLBACK(signed_on_off_cb));
-	gaim_signal_disconnect(gaim_connections_get_handle(), "signing-off",
-						   gtkblist, GAIM_CALLBACK(signed_on_off_cb));
+	gaim_signal_disconnect(gaim_connections_get_handle(), "signed-on",
+						   gtkblist, GAIM_CALLBACK(sign_on_off_cb));
+	gaim_signal_disconnect(gaim_connections_get_handle(), "signed-off",
+						   gtkblist, GAIM_CALLBACK(sign_on_off_cb));
 
 	gtk_widget_destroy(gtkblist->window);