# HG changeset patch # User Nathan Walp # Date 1051393440 0 # Node ID 757d680f923d586093e5917da1b8d4bd62a1d147 # Parent 0d4b8ca97c1788224b56fedd9c81a5e2017b1def [gaim-migrate @ 5607] I guess I shouldn't force the aliases on everyone...now they're optional. committer: Tailor Script diff -r 0d4b8ca97c17 -r 757d680f923d src/blist.c --- a/src/blist.c Sat Apr 26 20:42:30 2003 +0000 +++ b/src/blist.c Sat Apr 26 21:44:00 2003 +0000 @@ -203,11 +203,13 @@ { struct gaim_blist_ui_ops *ops = gaimbuddylist->ui_ops; - if(!alias || !strlen(alias)) - return; + g_free(chat->alias); - g_free(chat->alias); - chat->alias = g_strdup(alias); + if(alias && strlen(alias)) + chat->alias = g_strdup(alias); + else + chat->alias = NULL; + if(ops) ops->update(gaimbuddylist, (GaimBlistNode*)chat); } @@ -247,12 +249,13 @@ struct chat *chat; struct gaim_blist_ui_ops *ops; - if(!alias || !strlen(alias) || !components) + if(!components) return NULL; chat = g_new0(struct chat, 1); chat->account = account; - chat->alias = g_strdup(alias); + if(alias && strlen(alias)) + chat->alias = g_strdup(alias); chat->components = components; ((GaimBlistNode*)chat)->type = GAIM_BLIST_CHAT_NODE; @@ -1215,7 +1218,7 @@ } else if(!strcmp(element_name, "chat")) { struct gaim_account *account = gaim_account_find(blist_parser_account_name, blist_parser_account_protocol); - if(account && blist_parser_chat_alias) { + if(account) { struct chat *chat = gaim_chat_new(account, blist_parser_chat_alias, blist_parser_chat_components); struct group *g = gaim_find_group(blist_parser_group_name); gaim_blist_add_chat(chat,g,NULL); @@ -1560,13 +1563,17 @@ } else if(GAIM_BLIST_NODE_IS_CHAT(bnode)) { struct chat *chat = (struct chat *)bnode; if(!exp_acct || chat->account == exp_acct) { - char *chat_alias = g_markup_escape_text(chat->alias, -1); char *acct_name = g_markup_escape_text(chat->account->username, -1); fprintf(file, "\t\t\t\n", chat->account->protocol, acct_name); - fprintf(file, "\t\t\t\t%s\n", chat_alias); + if(chat->alias) { + char *chat_alias = g_markup_escape_text(chat->alias, -1); + fprintf(file, "\t\t\t\t%s\n", chat_alias); + g_free(chat_alias); + } g_hash_table_foreach(chat->components, blist_print_chat_components, file); fprintf(file, "\t\t\t\n"); + g_free(acct_name); } } } diff -r 0d4b8ca97c17 -r 757d680f923d src/dialogs.c --- a/src/dialogs.c Sat Apr 26 20:42:30 2003 +0000 +++ b/src/dialogs.c Sat Apr 26 21:44:00 2003 +0000 @@ -1229,8 +1229,10 @@ gaim_blist_add_group(group, NULL); } - gaim_blist_add_chat(chat, group, NULL); - gaim_blist_save(); + if(chat) { + gaim_blist_add_chat(chat, group, NULL); + gaim_blist_save(); + } gtk_widget_destroy(ac->window); g_list_free(ac->entries); @@ -1252,6 +1254,7 @@ static void rebuild_addchat_entries(struct addchat *ac) { GList *list, *tmp; struct proto_chat_entry *pce; + gboolean focus = TRUE; while(GTK_BOX(ac->entries_box)->children) gtk_container_remove(GTK_CONTAINER(ac->entries_box), @@ -1296,6 +1299,11 @@ if(pce->def) gtk_entry_set_text(GTK_ENTRY(entry), pce->def); + if(focus) { + gtk_widget_grab_focus(entry); + focus = FALSE; + } + gtk_box_pack_end(GTK_BOX(rowbox), entry, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(entry), "activate", @@ -1420,6 +1428,12 @@ create_online_account_menu_for_add_chat(ac); + ac->entries_box = gtk_vbox_new(FALSE, 5); + gtk_container_set_border_width(GTK_CONTAINER(ac->entries_box), 0); + gtk_box_pack_start(GTK_BOX(vbox), ac->entries_box, TRUE, TRUE, 0); + + rebuild_addchat_entries(ac); + rowbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); @@ -1431,12 +1445,6 @@ ac->alias_entry = gtk_entry_new(); gtk_box_pack_end(GTK_BOX(rowbox), ac->alias_entry, TRUE, TRUE, 0); - ac->entries_box = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(ac->entries_box), 0); - gtk_box_pack_start(GTK_BOX(vbox), ac->entries_box, TRUE, TRUE, 0); - - rebuild_addchat_entries(ac); - rowbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); @@ -1454,8 +1462,6 @@ g_signal_connect(G_OBJECT(ac->window), "response", G_CALLBACK(do_add_chat_resp), ac); - gtk_widget_grab_focus(ac->alias_entry); - gtk_widget_show_all(ac->window); } @@ -3569,10 +3575,8 @@ if(resp == GTK_RESPONSE_OK) { GtkWidget *entry = g_object_get_data(G_OBJECT(w), "alias_entry"); const char *text = gtk_entry_get_text(GTK_ENTRY(entry)); - if(text && strlen(text)) { - gaim_blist_alias_chat(chat, text); - gaim_blist_save(); - } + gaim_blist_alias_chat(chat, text); + gaim_blist_save(); } gtk_widget_destroy(w); } diff -r 0d4b8ca97c17 -r 757d680f923d src/gtkblist.c --- a/src/gtkblist.c Sat Apr 26 20:42:30 2003 +0000 +++ b/src/gtkblist.c Sat Apr 26 21:44:00 2003 +0000 @@ -763,15 +763,33 @@ static char *gaim_get_tooltip_text(GaimBlistNode *node) { + GaimPlugin *prpl; + GaimPluginProtocolInfo *prpl_info = NULL; char *text = NULL; if(GAIM_BLIST_NODE_IS_CHAT(node)) { struct chat *chat = (struct chat *)node; + char *name = NULL; + + if(chat->alias) { + name = g_markup_escape_text(chat->alias, -1); + } else { + struct proto_chat_entry *pce; + GList *parts; + prpl = gaim_find_prpl(chat->account->protocol); + prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); + + parts = prpl_info->chat_info(chat->account->gc); + pce = parts->data; + name = g_markup_escape_text(g_hash_table_lookup(chat->components, + pce->identifier), -1); + g_list_free(parts); + } + text = g_strdup_printf("%s", - chat->alias); + name); + g_free(name); } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) { - GaimPlugin *prpl; - GaimPluginProtocolInfo *prpl_info = NULL; struct buddy *b = (struct buddy *)node; char *statustext = NULL; char *aliastext = NULL, *nicktext = NULL; @@ -1686,20 +1704,33 @@ if (GAIM_BLIST_NODE_IS_CHAT(node) && ((struct chat*)node)->account->gc) { GdkPixbuf *status; - char *mark; + struct chat *chat = (struct chat *)node; + char *name; status = gaim_gtk_blist_get_status_icon(node, blist_options & OPT_BLIST_SHOW_ICONS ? GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL); - mark = g_markup_escape_text(((struct chat*)node)->alias, -1); + if(chat->alias) { + name = g_markup_escape_text(chat->alias, -1); + } else { + struct proto_chat_entry *pce; + GList *parts; + + parts = GAIM_PLUGIN_PROTOCOL_INFO(chat->account->gc->prpl)->chat_info(chat->account->gc); + pce = parts->data; + name = g_markup_escape_text(g_hash_table_lookup(chat->components, + pce->identifier), -1); + g_list_free(parts); + } + gtk_tree_store_set(gtkblist->treemodel, &iter, STATUS_ICON_COLUMN, status, STATUS_ICON_VISIBLE_COLUMN, TRUE, - NAME_COLUMN, mark, + NAME_COLUMN, name, NODE_COLUMN, node, -1); - g_free(mark); + g_free(name); if (status != NULL) g_object_unref(status); } else if(GAIM_BLIST_NODE_IS_CHAT(node) && !((struct chat *)node)->account->gc) {