comparison pidgin/gtkblist.c @ 18041:678d78b7fa34

propagate from branch 'im.pidgin.pidgin' (head a58972b72c7aa0fa0899c5a6b96e51cd6c427ab4) to branch 'im.pidgin.pidgin.2.1.0' (head 03df10bd904eed59317242a557aed2b8430d9630)
author Richard Laager <rlaager@wiktel.com>
date Mon, 04 Jun 2007 05:55:13 +0000
parents fbebe15c91a7 fa5c24086481
children 58e28ccf08e6
comparison
equal deleted inserted replaced
18040:541a6b0112c6 18041:678d78b7fa34
1122 pidgin_append_blist_node_extended_menu(menu, (PurpleBlistNode *)buddy); 1122 pidgin_append_blist_node_extended_menu(menu, (PurpleBlistNode *)buddy);
1123 1123
1124 if (((PurpleBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) { 1124 if (((PurpleBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) {
1125 pidgin_separator(menu); 1125 pidgin_separator(menu);
1126 pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy); 1126 pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy);
1127 pidgin_new_item_from_stock(menu, _("Alias..."), PIDGIN_STOCK_ALIAS, 1127 pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
1128 G_CALLBACK(gtk_blist_menu_alias_cb), 1128 G_CALLBACK(gtk_blist_menu_alias_cb),
1129 contact, 0, 0, NULL); 1129 contact, 0, 0, NULL);
1130 pidgin_new_item_from_stock(menu, _("Remove"), GTK_STOCK_REMOVE, 1130 pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
1131 G_CALLBACK(pidgin_blist_remove_cb), 1131 G_CALLBACK(pidgin_blist_remove_cb),
1132 contact, 0, 0, NULL); 1132 contact, 0, 0, NULL);
1133 } else if (!sub || contact_expanded) { 1133 } else if (!sub || contact_expanded) {
1134 pidgin_separator(menu); 1134 pidgin_separator(menu);
1135 pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy); 1135 pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy);
4733 if(gtk_tree_selection_get_selected(selection, NULL, &iter)){ 4733 if(gtk_tree_selection_get_selected(selection, NULL, &iter)){
4734 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, 4734 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
4735 NODE_COLUMN, &new_selection, -1); 4735 NODE_COLUMN, &new_selection, -1);
4736 } 4736 }
4737 4737
4738 /* we set this up as a timeout, otherwise the blist flickers */ 4738 /* we set this up as a timeout, otherwise the blist flickers ...
4739 g_timeout_add(0, (GSourceFunc)do_selection_changed, new_selection); 4739 * but we don't do it for groups, because it causes total bizarness -
4740 * the previously selected buddy node might rendered at half height.
4741 */
4742 if ((new_selection != NULL) && PURPLE_BLIST_NODE_IS_GROUP(new_selection)) {
4743 do_selection_changed(new_selection);
4744 } else {
4745 g_timeout_add(0, (GSourceFunc)do_selection_changed, new_selection);
4746 }
4740 } 4747 }
4741 4748
4742 static gboolean insert_node(PurpleBuddyList *list, PurpleBlistNode *node, GtkTreeIter *iter) 4749 static gboolean insert_node(PurpleBuddyList *list, PurpleBlistNode *node, GtkTreeIter *iter)
4743 { 4750 {
4744 GtkTreeIter parent_iter, cur, *curptr = NULL; 4751 GtkTreeIter parent_iter, cur, *curptr = NULL;
5395 gtk_table_set_row_spacings(GTK_TABLE(table), 5); 5402 gtk_table_set_row_spacings(GTK_TABLE(table), 5);
5396 gtk_table_set_col_spacings(GTK_TABLE(table), 5); 5403 gtk_table_set_col_spacings(GTK_TABLE(table), 5);
5397 gtk_container_set_border_width(GTK_CONTAINER(table), 0); 5404 gtk_container_set_border_width(GTK_CONTAINER(table), 0);
5398 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); 5405 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
5399 5406
5400 label = gtk_label_new(_("Screen name:")); 5407 /* Set up stuff for the account box */
5408 label = gtk_label_new_with_mnemonic(_("_Account:"));
5401 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); 5409 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5402 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); 5410 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
5403 5411
5412 data->account_box = pidgin_account_option_menu_new(account, FALSE,
5413 G_CALLBACK(add_buddy_select_account_cb), NULL, data);
5414
5415 gtk_table_attach_defaults(GTK_TABLE(table), data->account_box, 1, 2, 0, 1);
5416 gtk_label_set_mnemonic_widget(GTK_LABEL(label), data->account_box);
5417 pidgin_set_accessible_label (data->account_box, label);
5418 /* End of account box */
5419
5420 label = gtk_label_new_with_mnemonic(_("_Screen name:"));
5421 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5422 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
5423
5404 data->entry = gtk_entry_new(); 5424 data->entry = gtk_entry_new();
5405 gtk_table_attach_defaults(GTK_TABLE(table), data->entry, 1, 2, 0, 1); 5425 gtk_table_attach_defaults(GTK_TABLE(table), data->entry, 1, 2, 1, 2);
5406 gtk_widget_grab_focus(data->entry); 5426 gtk_widget_grab_focus(data->entry);
5407 5427
5408 if (username != NULL) 5428 if (username != NULL)
5409 gtk_entry_set_text(GTK_ENTRY(data->entry), username); 5429 gtk_entry_set_text(GTK_ENTRY(data->entry), username);
5410 else 5430 else
5411 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), 5431 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window),
5412 GTK_RESPONSE_OK, FALSE); 5432 GTK_RESPONSE_OK, FALSE);
5413 5433
5414 gtk_entry_set_activates_default (GTK_ENTRY(data->entry), TRUE); 5434 gtk_entry_set_activates_default (GTK_ENTRY(data->entry), TRUE);
5435 gtk_label_set_mnemonic_widget(GTK_LABEL(label), data->entry);
5415 pidgin_set_accessible_label (data->entry, label); 5436 pidgin_set_accessible_label (data->entry, label);
5416 5437
5417 g_signal_connect(G_OBJECT(data->entry), "changed", 5438 g_signal_connect(G_OBJECT(data->entry), "changed",
5418 G_CALLBACK(pidgin_set_sensitive_if_input), 5439 G_CALLBACK(pidgin_set_sensitive_if_input),
5419 data->window); 5440 data->window);
5420 5441
5421 label = gtk_label_new(_("Alias:")); 5442 label = gtk_label_new_with_mnemonic(_("A_lias:"));
5422 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); 5443 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5423 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); 5444 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3);
5424 5445
5425 data->entry_for_alias = gtk_entry_new(); 5446 data->entry_for_alias = gtk_entry_new();
5426 gtk_table_attach_defaults(GTK_TABLE(table), 5447 gtk_table_attach_defaults(GTK_TABLE(table),
5427 data->entry_for_alias, 1, 2, 1, 2); 5448 data->entry_for_alias, 1, 2, 2, 3);
5428 5449
5429 if (alias != NULL) 5450 if (alias != NULL)
5430 gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias); 5451 gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias);
5431 5452
5432 if (username != NULL) 5453 if (username != NULL)
5433 gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias)); 5454 gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias));
5434 5455
5435 gtk_entry_set_activates_default (GTK_ENTRY(data->entry_for_alias), TRUE); 5456 gtk_entry_set_activates_default (GTK_ENTRY(data->entry_for_alias), TRUE);
5457 gtk_label_set_mnemonic_widget(GTK_LABEL(label), data->entry_for_alias);
5436 pidgin_set_accessible_label (data->entry_for_alias, label); 5458 pidgin_set_accessible_label (data->entry_for_alias, label);
5437 5459
5438 label = gtk_label_new(_("Group:")); 5460 label = gtk_label_new_with_mnemonic(_("_Group:"));
5439 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); 5461 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5440 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3); 5462 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);
5441 5463
5442 data->combo = gtk_combo_new(); 5464 data->combo = gtk_combo_new();
5443 gtk_combo_set_popdown_strings(GTK_COMBO(data->combo), groups_tree()); 5465 gtk_combo_set_popdown_strings(GTK_COMBO(data->combo), groups_tree());
5444 gtk_table_attach_defaults(GTK_TABLE(table), data->combo, 1, 2, 2, 3); 5466 gtk_table_attach_defaults(GTK_TABLE(table), data->combo, 1, 2, 3, 4);
5467 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_COMBO(data->combo)->entry);
5445 pidgin_set_accessible_label (data->combo, label); 5468 pidgin_set_accessible_label (data->combo, label);
5446
5447 /* Set up stuff for the account box */
5448 label = gtk_label_new(_("Account:"));
5449 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5450 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);
5451
5452 data->account_box = pidgin_account_option_menu_new(account, FALSE,
5453 G_CALLBACK(add_buddy_select_account_cb), NULL, data);
5454
5455 gtk_table_attach_defaults(GTK_TABLE(table), data->account_box, 1, 2, 3, 4);
5456 pidgin_set_accessible_label (data->account_box, label);
5457 /* End of account box */
5458 5469
5459 g_signal_connect(G_OBJECT(data->window), "response", 5470 g_signal_connect(G_OBJECT(data->window), "response",
5460 G_CALLBACK(add_buddy_cb), data); 5471 G_CALLBACK(add_buddy_cb), data);
5461 5472
5462 gtk_widget_show_all(data->window); 5473 gtk_widget_show_all(data->window);
5759 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); 5770 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
5760 5771
5761 rowbox = gtk_hbox_new(FALSE, 5); 5772 rowbox = gtk_hbox_new(FALSE, 5);
5762 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); 5773 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
5763 5774
5764 label = gtk_label_new(_("Account:")); 5775 label = gtk_label_new_with_mnemonic(_("_Account:"));
5765 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); 5776 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5766 gtk_size_group_add_widget(data->sg, label); 5777 gtk_size_group_add_widget(data->sg, label);
5767 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); 5778 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
5768 5779
5769 data->account_menu = pidgin_account_option_menu_new(account, FALSE, 5780 data->account_menu = pidgin_account_option_menu_new(account, FALSE,
5770 G_CALLBACK(addchat_select_account_cb), 5781 G_CALLBACK(addchat_select_account_cb),
5771 chat_account_filter_func, data); 5782 chat_account_filter_func, data);
5772 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0); 5783 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0);
5784 gtk_label_set_mnemonic_widget(GTK_LABEL(label), data->account_menu);
5773 pidgin_set_accessible_label (data->account_menu, label); 5785 pidgin_set_accessible_label (data->account_menu, label);
5774 5786
5775 data->entries_box = gtk_vbox_new(FALSE, 5); 5787 data->entries_box = gtk_vbox_new(FALSE, 5);
5776 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0); 5788 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
5777 gtk_box_pack_start(GTK_BOX(vbox), data->entries_box, TRUE, TRUE, 0); 5789 gtk_box_pack_start(GTK_BOX(vbox), data->entries_box, TRUE, TRUE, 0);
5779 rebuild_addchat_entries(data); 5791 rebuild_addchat_entries(data);
5780 5792
5781 rowbox = gtk_hbox_new(FALSE, 5); 5793 rowbox = gtk_hbox_new(FALSE, 5);
5782 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); 5794 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
5783 5795
5784 label = gtk_label_new(_("Alias:")); 5796 label = gtk_label_new_with_mnemonic(_("A_lias:"));
5785 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); 5797 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5786 gtk_size_group_add_widget(data->sg, label); 5798 gtk_size_group_add_widget(data->sg, label);
5787 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); 5799 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
5788 5800
5789 data->alias_entry = gtk_entry_new(); 5801 data->alias_entry = gtk_entry_new();
5790 if (alias != NULL) 5802 if (alias != NULL)
5791 gtk_entry_set_text(GTK_ENTRY(data->alias_entry), alias); 5803 gtk_entry_set_text(GTK_ENTRY(data->alias_entry), alias);
5792 gtk_box_pack_end(GTK_BOX(rowbox), data->alias_entry, TRUE, TRUE, 0); 5804 gtk_box_pack_end(GTK_BOX(rowbox), data->alias_entry, TRUE, TRUE, 0);
5793 gtk_entry_set_activates_default(GTK_ENTRY(data->alias_entry), TRUE); 5805 gtk_entry_set_activates_default(GTK_ENTRY(data->alias_entry), TRUE);
5806 gtk_label_set_mnemonic_widget(GTK_LABEL(label), data->alias_entry);
5794 pidgin_set_accessible_label (data->alias_entry, label); 5807 pidgin_set_accessible_label (data->alias_entry, label);
5795 if (name != NULL) 5808 if (name != NULL)
5796 gtk_widget_grab_focus(data->alias_entry); 5809 gtk_widget_grab_focus(data->alias_entry);
5797 5810
5798 rowbox = gtk_hbox_new(FALSE, 5); 5811 rowbox = gtk_hbox_new(FALSE, 5);
5799 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); 5812 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
5800 5813
5801 label = gtk_label_new(_("Group:")); 5814 label = gtk_label_new_with_mnemonic(_("_Group:"));
5802 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); 5815 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5803 gtk_size_group_add_widget(data->sg, label); 5816 gtk_size_group_add_widget(data->sg, label);
5804 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); 5817 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
5805 5818
5806 data->group_combo = gtk_combo_new(); 5819 data->group_combo = gtk_combo_new();
5810 if (group) 5823 if (group)
5811 { 5824 {
5812 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry), 5825 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry),
5813 group->name); 5826 group->name);
5814 } 5827 }
5828 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_COMBO(data->group_combo)->entry);
5815 pidgin_set_accessible_label (data->group_combo, label); 5829 pidgin_set_accessible_label (data->group_combo, label);
5816 5830
5817 g_signal_connect(G_OBJECT(data->window), "response", 5831 g_signal_connect(G_OBJECT(data->window), "response",
5818 G_CALLBACK(add_chat_resp_cb), data); 5832 G_CALLBACK(add_chat_resp_cb), data);
5819 5833