comparison pidgin/gtkblist.c @ 22436:df336908dd15

Make "Show when offline" work on group nodes too, which sets the flag for all group members. Fixes #5141.
author Stu Tomlinson <stu@nosnilmot.com>
date Sun, 09 Mar 2008 16:46:04 +0000
parents 42724bd41274
children 8802eddbfedc
comparison
equal deleted inserted replaced
22435:5c72a6c071db 22436:df336908dd15
703 703
704 purple_blist_node_set_bool(node, "show_offline", setting); 704 purple_blist_node_set_bool(node, "show_offline", setting);
705 for (bnode = node->child; bnode != NULL; bnode = bnode->next) { 705 for (bnode = node->child; bnode != NULL; bnode = bnode->next) {
706 purple_blist_node_set_bool(bnode, "show_offline", setting); 706 purple_blist_node_set_bool(bnode, "show_offline", setting);
707 } 707 }
708 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
709 PurpleBlistNode *cnode, *bnode;
710 gboolean setting = !purple_blist_node_get_bool(node, "show_offline");
711
712 purple_blist_node_set_bool(node, "show_offline", setting);
713 for (cnode = node->child; cnode != NULL; cnode = cnode->next) {
714 purple_blist_node_set_bool(cnode, "show_offline", setting);
715 for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
716 purple_blist_node_set_bool(bnode, "show_offline", setting);
717 }
718 }
708 } 719 }
709 pidgin_blist_update(purple_get_blist(), node); 720 pidgin_blist_update(purple_get_blist(), node);
710 } 721 }
711 722
712 static void gtk_blist_show_systemlog_cb(void) 723 static void gtk_blist_show_systemlog_cb(void)
1457 gtk_widget_set_sensitive(item, pidgin_blist_joinchat_is_showable()); 1468 gtk_widget_set_sensitive(item, pidgin_blist_joinchat_is_showable());
1458 pidgin_new_item_from_stock(menu, _("_Delete Group"), GTK_STOCK_REMOVE, 1469 pidgin_new_item_from_stock(menu, _("_Delete Group"), GTK_STOCK_REMOVE,
1459 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL); 1470 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
1460 pidgin_new_item_from_stock(menu, _("_Rename"), NULL, 1471 pidgin_new_item_from_stock(menu, _("_Rename"), NULL,
1461 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL); 1472 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
1473 if (!(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE)) {
1474 gboolean show_offline = purple_blist_node_get_bool(node, "show_offline");
1475 pidgin_new_item_from_stock(menu, show_offline ? _("Hide when offline") : _("Show when offline"),
1476 NULL, G_CALLBACK(gtk_blist_menu_showoffline_cb), node, 0, 0, NULL);
1477 }
1462 1478
1463 pidgin_append_blist_node_extended_menu(menu, node); 1479 pidgin_append_blist_node_extended_menu(menu, node);
1464 1480
1465 return menu; 1481 return menu;
1466 } 1482 }