Mercurial > pidgin.yaz
changeset 10127:23e101b522f1
[gaim-migrate @ 11165]
This is from patch 1049732 by datallah to fix a crash when trying to join a chat
from the docklet when not signed in with any chat capable accounts.
committer: Tailor Script <tailor@pidgin.im>
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Tue, 19 Oct 2004 18:37:24 +0000 |
parents | 3c3795562256 |
children | 0f78e7e45afd |
files | plugins/docklet/docklet.c src/gtkblist.c |
diffstat | 2 files changed, 19 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/docklet/docklet.c Tue Oct 19 05:17:14 2004 +0000 +++ b/plugins/docklet/docklet.c Tue Oct 19 18:37:24 2004 +0000 @@ -58,6 +58,7 @@ GaimPlugin *handle = NULL; static struct docklet_ui_ops *ui_ops = NULL; static enum docklet_status status = offline; +gboolean online_account_supports_chat = FALSE; #if 0 /* XXX CUI */ #ifdef _WIN32 __declspec(dllimport) GSList *unread_message_queue; @@ -125,6 +126,7 @@ static void docklet_menu() { static GtkWidget *menu = NULL; GtkWidget *entry; + GtkWidget *menuitem; if (menu) { gtk_widget_destroy(menu); @@ -139,7 +141,8 @@ break; default: gaim_new_item_from_stock(menu, _("New Message..."), GAIM_STOCK_IM, G_CALLBACK(gaim_gtkdialogs_im), NULL, 0, 0, NULL); - gaim_new_item_from_stock(menu, _("Join A Chat..."), GAIM_STOCK_CHAT, G_CALLBACK(gaim_gtk_blist_joinchat_show), NULL, 0, 0, NULL); + menuitem = gaim_new_item_from_stock(menu, _("Join A Chat..."), GAIM_STOCK_CHAT, G_CALLBACK(gaim_gtk_blist_joinchat_show), NULL, 0, 0, NULL); + gtk_widget_set_sensitive(menuitem, online_account_supports_chat); break; } @@ -266,11 +269,12 @@ static gboolean docklet_update_status() { + GList *c; enum docklet_status oldstatus; oldstatus = status; - if (gaim_connections_get_all()) { + if ((c = gaim_connections_get_all())) { #if 0 /* XXX NEW STATUS */ if (unread_message_queue) { status = online_pending; @@ -288,6 +292,15 @@ } else { status = online; } + /* Check if any online accounts support chats */ + while (c != NULL) { + GaimConnection *gc = c->data; + if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL) { + online_account_supports_chat = TRUE; + break; + } + c = c->next; + } } else { if (gaim_connections_get_connecting()) { status = offline_connecting;
--- a/src/gtkblist.c Tue Oct 19 05:17:14 2004 +0000 +++ b/src/gtkblist.c Tue Oct 19 18:37:24 2004 +0000 @@ -660,6 +660,8 @@ struct proto_chat_entry *pce; gboolean focus = TRUE; + g_return_if_fail(data->account != NULL); + gc = gaim_account_get_connection(data->account); while (GTK_BOX(data->entries_box)->children) @@ -4146,6 +4148,8 @@ struct proto_chat_entry *pce; gboolean focus = TRUE; + g_return_if_fail(data->account != NULL); + gc = gaim_account_get_connection(data->account); while (GTK_BOX(data->entries_box)->children)