From: Daniel A. <dat...@us...> - 2005-05-02 15:57:55
|
Update of /cvsroot/gaim/gaim/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30226/src Modified Files: Tag: oldstatus away.c Log Message: Patch #1193569 From Caleb Gilmour fixes the UI issue where the "Remove Away Message" submenu is still drawn when there are no items in it. I also noticed that this is happening for the "Custom" submenu and fixed that too. Index: away.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/Attic/away.c,v retrieving revision 1.132.2.2 retrieving revision 1.132.2.3 diff -u -d -p -r1.132.2.2 -r1.132.2.3 --- away.c 5 Oct 2004 12:19:17 -0000 1.132.2.2 +++ away.c 2 May 2005 15:57:47 -0000 1.132.2.3 @@ -439,25 +439,31 @@ void do_away_menu() g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(create_away_mess), NULL); - awy = away_messages; - while (awy) { - a = (struct away_message *)awy->data; + menuitem = gtk_menu_item_new_with_label(_("Remove Away Message")); + gtk_menu_shell_append(GTK_MENU_SHELL(awaymenu), menuitem); + gtk_widget_show(menuitem); - remitem = gtk_menu_item_new_with_label(a->name); - gtk_menu_shell_append(GTK_MENU_SHELL(remmenu), remitem); - gtk_widget_show(remitem); - g_signal_connect(G_OBJECT(remitem), "activate", - G_CALLBACK(rem_away_mess), a); + if (away_messages == NULL) { + gtk_widget_set_sensitive(menuitem, FALSE); + } else { + awy = away_messages; + while (awy) { + a = (struct away_message *)awy->data; - awy = g_slist_next(awy); + remitem = gtk_menu_item_new_with_label(a->name); + gtk_menu_shell_append(GTK_MENU_SHELL(remmenu), remitem); + gtk_widget_show(remitem); + g_signal_connect(G_OBJECT(remitem), "activate", + G_CALLBACK(rem_away_mess), a); - } + awy = g_slist_next(awy); - menuitem = gtk_menu_item_new_with_label(_("Remove Away Message")); - gtk_menu_shell_append(GTK_MENU_SHELL(awaymenu), menuitem); - gtk_widget_show(menuitem); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), remmenu); - gtk_widget_show(remmenu); + } + + + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), remmenu); + gtk_widget_show(remmenu); + } gaim_separator(awaymenu); @@ -500,7 +506,7 @@ void do_away_menu() awy = g_slist_next(awy); } - } else + } else { while (msgs) { awy = away_messages; @@ -513,30 +519,35 @@ void do_away_menu() g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(set_gc_state), gc); } else { - submenu = gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), - submenu); - gtk_widget_show(submenu); + if (awy == NULL) { + gtk_widget_set_sensitive(menuitem, FALSE); + } else { + submenu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), + submenu); + gtk_widget_show(submenu); - while (awy) { - a = (struct away_message *)awy->data; + while (awy) { + a = (struct away_message *)awy->data; - menuitem = gtk_menu_item_new_with_label(a->name); - g_object_set_data(G_OBJECT(menuitem), "away_message", - a); - gtk_menu_shell_append(GTK_MENU_SHELL(submenu), + menuitem = gtk_menu_item_new_with_label(a->name); + g_object_set_data(G_OBJECT(menuitem), "away_message", + a); + gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); - gtk_widget_show(menuitem); - g_signal_connect(G_OBJECT(menuitem), + gtk_widget_show(menuitem); + g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK (do_away_message), a); - awy = g_slist_next(awy); + awy = g_slist_next(awy); + } } } msgs = g_list_next(msgs); } + } g_list_free(tmp); } |