Mercurial > pidgin
changeset 25699:a2388ce30772
propagate from branch 'im.pidgin.pidgin' (head b79100551ea19cf35ee8952a34a44b97204e75f3)
to branch 'im.pidgin.cpw.malu.xmpp.idle' (head be7b4f6258447b092a218a3872f6bb068190404c)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Thu, 12 Feb 2009 21:49:56 +0000 |
parents | fa5987472e00 (diff) 1ad482221d70 (current diff) |
children | 754d7d478066 |
files | libpurple/protocols/jabber/buddy.c libpurple/protocols/jabber/data.c libpurple/protocols/jabber/data.h libpurple/protocols/jabber/google.c libpurple/protocols/jabber/google.h libpurple/protocols/jabber/iq.c libpurple/protocols/jabber/jabber.c libpurple/protocols/jabber/ping.c libpurple/protocols/jabber/ping.h libpurple/protocols/jabber/si.c libpurple/protocols/jabber/si.h |
diffstat | 28 files changed, 133 insertions(+), 97 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Sat Feb 07 11:57:28 2009 +0000 +++ b/COPYRIGHT Thu Feb 12 21:49:56 2009 +0000 @@ -212,6 +212,7 @@ John Kelm Jochen Kemnade Yann Kerherve +Gordian Klein Akuke Kok Kir Kolyshkin Konstantin Korikov
--- a/libpurple/account.h Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/account.h Thu Feb 12 21:49:56 2009 +0000 @@ -132,6 +132,14 @@ /* to NULL when the account inherits */ /* proxy settings from global prefs. */ + /* + * TODO: Supplementing the next two linked lists with hash tables + * should help performance a lot when these lists are long. This + * matters quite a bit for protocols like MSN, where all your + * buddies are added to your permit list. Currently we have to + * iterate through the entire list if we want to check if someone + * is permitted or denied. We should do this for 3.0.0. + */ GSList *permit; /**< Permit list. */ GSList *deny; /**< Deny list. */ int perm_deny; /**< The permit/deny setting. */
--- a/libpurple/privacy.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/privacy.c Thu Feb 12 21:49:56 2009 +0000 @@ -42,12 +42,14 @@ name = g_strdup(purple_normalize(account, who)); for (l = account->permit; l != NULL; l = l->next) { - if (!purple_utf8_strcasecmp(name, (char *)l->data)) + if (g_str_equal(name, l->data)) + /* This buddy already exists */ break; } if (l != NULL) { + /* This buddy already exists, so bail out */ g_free(name); return FALSE; } @@ -86,11 +88,13 @@ name = purple_normalize(account, who); for (l = account->permit; l != NULL; l = l->next) { - if (!purple_utf8_strcasecmp(name, (char *)l->data)) + if (g_str_equal(name, l->data)) + /* We found the buddy we were looking for */ break; } if (l == NULL) + /* We didn't find the buddy we were looking for, so bail out */ return FALSE; /* We should not free l->data just yet. There can be occasions where @@ -130,12 +134,14 @@ name = g_strdup(purple_normalize(account, who)); for (l = account->deny; l != NULL; l = l->next) { - if (!purple_utf8_strcasecmp(name, purple_normalize(account, (char *)l->data))) + if (g_str_equal(name, l->data)) + /* This buddy already exists */ break; } if (l != NULL) { + /* This buddy already exists, so bail out */ g_free(name); return FALSE; } @@ -173,14 +179,16 @@ normalized = purple_normalize(account, who); for (l = account->deny; l != NULL; l = l->next) { - if (!purple_utf8_strcasecmp(normalized, (char *)l->data)) + if (g_str_equal(normalized, l->data)) + /* We found the buddy we were looking for */ break; } - buddy = purple_find_buddy(account, normalized); + if (l == NULL) + /* We didn't find the buddy we were looking for, so bail out */ + return FALSE; - if (l == NULL) - return FALSE; + buddy = purple_find_buddy(account, normalized); name = l->data; account->deny = g_slist_delete_link(account->deny, l); @@ -349,7 +357,7 @@ case PURPLE_PRIVACY_ALLOW_USERS: who = purple_normalize(account, who); for (list=account->permit; list!=NULL; list=list->next) { - if (!purple_utf8_strcasecmp(who, (char *)list->data)) + if (g_str_equal(who, list->data)) return TRUE; } return FALSE; @@ -357,7 +365,7 @@ case PURPLE_PRIVACY_DENY_USERS: who = purple_normalize(account, who); for (list=account->deny; list!=NULL; list=list->next) { - if (!purple_utf8_strcasecmp(who, (char *)list->data )) + if (g_str_equal(who, list->data)) return FALSE; } return TRUE;
--- a/libpurple/protocols/jabber/adhoccommands.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/adhoccommands.c Thu Feb 12 21:49:56 2009 +0000 @@ -229,7 +229,7 @@ JabberAdHocCommands *cmd = js->commands->data; g_free(cmd->jid); g_free(cmd->node); - g_free(cmd->node); + g_free(cmd->name); g_free(cmd); js->commands = g_list_delete_link(js->commands, js->commands); }
--- a/libpurple/protocols/jabber/buddy.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/buddy.c Thu Feb 12 21:49:56 2009 +0000 @@ -1828,7 +1828,7 @@ if (!jid) return; - if (jabber_chat_find(js, jid->node, jid->domain)) { + if (jid->node && jabber_chat_find(js, jid->node, jid->domain)) { /* For a conversation, include the resource (indicates the user). */ jabber_buddy_get_info_for_jid(js, who); } else {
--- a/libpurple/protocols/jabber/data.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/data.c Thu Feb 12 21:49:56 2009 +0000 @@ -200,9 +200,11 @@ } void -jabber_data_parse(JabberStream *js, xmlnode *data_node, const char *who, const char *id) +jabber_data_parse(JabberStream *js, xmlnode *packet) { JabberIq *result = NULL; + const char *who = xmlnode_get_attrib(packet, "from"); + xmlnode *data_node = xmlnode_get_child(packet, "data"); const JabberData *data = jabber_data_find_local_by_cid(xmlnode_get_attrib(data_node, "cid")); @@ -211,12 +213,12 @@ result = jabber_iq_new(js, JABBER_IQ_ERROR); xmlnode_set_attrib(result->node, "to", who); - xmlnode_set_attrib(result->node, "id", id); + xmlnode_set_attrib(result->node, "id", xmlnode_get_attrib(packet, "id")); xmlnode_insert_child(result->node, item_not_found); } else { result = jabber_iq_new(js, JABBER_IQ_RESULT); xmlnode_set_attrib(result->node, "to", who); - xmlnode_set_attrib(result->node, "id", id); + xmlnode_set_attrib(result->node, "id", xmlnode_get_attrib(packet, "id")); xmlnode_insert_child(result->node, jabber_data_get_xml_definition(data)); }
--- a/libpurple/protocols/jabber/data.h Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/data.h Thu Feb 12 21:49:56 2009 +0000 @@ -65,8 +65,7 @@ void jabber_data_associate_remote(JabberData *data); /* handles iq requests */ -void jabber_data_parse(JabberStream *js, xmlnode *data_node, - const char *who, const char *id); +void jabber_data_parse(JabberStream *js, xmlnode *packet); void jabber_data_init(void); void jabber_data_uninit(void);
--- a/libpurple/protocols/jabber/google.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Thu Feb 12 21:49:56 2009 +0000 @@ -144,8 +144,9 @@ } void -jabber_gmail_poke(JabberStream *js, const char *type) +jabber_gmail_poke(JabberStream *js, xmlnode *packet) { + const char *type; xmlnode *query; JabberIq *iq; @@ -153,8 +154,11 @@ if (!purple_account_get_check_mail(js->gc->account)) return; + type = xmlnode_get_attrib(packet, "type"); + + /* Is this an initial incoming mail notification? If so, send a request for more info */ - if (strcmp(type, "set")) + if (strcmp(type, "set") || !xmlnode_get_child(packet, "new-mail")) return; purple_debug(PURPLE_DEBUG_MISC, "jabber",
--- a/libpurple/protocols/jabber/google.h Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/google.h Thu Feb 12 21:49:56 2009 +0000 @@ -27,7 +27,7 @@ #include "jabber.h" void jabber_gmail_init(JabberStream *js); -void jabber_gmail_poke(JabberStream *js, const char *type); +void jabber_gmail_poke(JabberStream *js, xmlnode *node); void jabber_google_roster_init(JabberStream *js); void jabber_google_roster_outgoing(JabberStream *js, xmlnode *query, xmlnode *item);
--- a/libpurple/protocols/jabber/iq.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/iq.c Thu Feb 12 21:49:56 2009 +0000 @@ -309,7 +309,7 @@ void jabber_iq_parse(JabberStream *js, xmlnode *packet) { JabberCallbackData *jcd; - xmlnode *child, *query, *error, *x; + xmlnode *query, *error, *x; const char *xmlns; const char *type, *id, *from; JabberIqHandler *jih; @@ -371,25 +371,25 @@ } } - if ((child = xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si"))) { - jabber_si_parse(js, child, from, id); + if(xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si")) { + jabber_si_parse(js, packet); return; } - if (xmlnode_get_child_with_namespace(packet, "new-mail", "google:mail:notify")) { - jabber_gmail_poke(js, type); + if(xmlnode_get_child_with_namespace(packet, "new-mail", "google:mail:notify")) { + jabber_gmail_poke(js, packet); return; } purple_debug_info("jabber", "jabber_iq_parse\n"); - if (xmlnode_get_child_with_namespace(packet, "ping", "urn:xmpp:ping")) { - jabber_ping_parse(js, from, id); + if(xmlnode_get_child_with_namespace(packet, "ping", "urn:xmpp:ping")) { + jabber_ping_parse(js, packet); return; } - if ((child = xmlnode_get_child_with_namespace(packet, "data", XEP_0231_NAMESPACE))) { - jabber_data_parse(js, child, from, id); + if (xmlnode_get_child_with_namespace(packet, "data", XEP_0231_NAMESPACE)) { + jabber_data_parse(js, packet); return; }
--- a/libpurple/protocols/jabber/jabber.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.c Thu Feb 12 21:49:56 2009 +0000 @@ -1030,11 +1030,11 @@ } } - if((x = xmlnode_get_child_with_namespace(packet, "x", "jabber:x:data"))) { + if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) { jabber_x_data_request(js, x, jabber_register_x_data_cb, g_strdup(from)); return; - } else if((x = xmlnode_get_child_with_namespace(packet, "x", "jabber:x:oob"))) { + } else if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:oob"))) { xmlnode *url; if((url = xmlnode_get_child(x, "url"))) {
--- a/libpurple/protocols/jabber/ping.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/ping.c Thu Feb 12 21:49:56 2009 +0000 @@ -30,7 +30,7 @@ #include "iq.h" void -jabber_ping_parse(JabberStream *js, const char *from, const char *id) +jabber_ping_parse(JabberStream *js, xmlnode *packet) { JabberIq *iq; @@ -38,9 +38,9 @@ iq = jabber_iq_new(js, JABBER_IQ_RESULT); - xmlnode_set_attrib(iq->node, "to", from); + xmlnode_set_attrib(iq->node, "to", xmlnode_get_attrib(packet, "from") ); - jabber_iq_set_id(iq, id); + jabber_iq_set_id(iq, xmlnode_get_attrib(packet, "id")); jabber_iq_send(iq); }
--- a/libpurple/protocols/jabber/ping.h Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/ping.h Thu Feb 12 21:49:56 2009 +0000 @@ -26,8 +26,7 @@ #include "conversation.h" void jabber_ping_parse(JabberStream *js, - const char *from, - const char *id); + xmlnode *packet); gboolean jabber_ping_jid(PurpleConversation *conv, const char *jid);
--- a/libpurple/protocols/jabber/si.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/si.c Thu Feb 12 21:49:56 2009 +0000 @@ -1182,14 +1182,17 @@ purple_xfer_request(xfer); } -void jabber_si_parse(JabberStream *js, xmlnode *si, const char *from, const char *id) +void jabber_si_parse(JabberStream *js, xmlnode *packet) { JabberSIXfer *jsx; PurpleXfer *xfer; - xmlnode *file, *feature, *x, *field, *option, *value; - const char *stream_id, *filename, *filesize_c, *profile; + xmlnode *si, *file, *feature, *x, *field, *option, *value; + const char *stream_id, *filename, *filesize_c, *profile, *from; size_t filesize = 0; + if(!(si = xmlnode_get_child(packet, "si"))) + return; + if(!(profile = xmlnode_get_attrib(si, "profile")) || strcmp(profile, "http://jabber.org/protocol/si/profile/file-transfer")) return; @@ -1212,7 +1215,7 @@ if(!(x = xmlnode_get_child_with_namespace(feature, "x", "jabber:x:data"))) return; - if(!from) + if(!(from = xmlnode_get_attrib(packet, "from"))) return; /* if they've already sent us this file transfer with the same damn id @@ -1253,7 +1256,7 @@ jsx->js = js; jsx->stream_id = g_strdup(stream_id); - jsx->iq_id = g_strdup(id); + jsx->iq_id = g_strdup(xmlnode_get_attrib(packet, "id")); xfer = purple_xfer_new(js->gc->account, PURPLE_XFER_RECEIVE, from); if (xfer)
--- a/libpurple/protocols/jabber/si.h Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/jabber/si.h Thu Feb 12 21:49:56 2009 +0000 @@ -27,7 +27,7 @@ #include "jabber.h" void jabber_bytestreams_parse(JabberStream *js, xmlnode *packet); -void jabber_si_parse(JabberStream *js, xmlnode *si, const char *from, const char *id); +void jabber_si_parse(JabberStream *js, xmlnode *packet); PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who); void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file);
--- a/libpurple/protocols/msn/slpcall.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/msn/slpcall.c Thu Feb 12 21:49:56 2009 +0000 @@ -47,6 +47,7 @@ if (!slpcall->pending && !slpcall->progress) { msn_slpcall_destroy(slpcall); + slpcall->timer = 0; return FALSE; } @@ -222,8 +223,10 @@ if (slpcall != NULL) { - if (slpcall->timer) + if (slpcall->timer) { purple_timeout_remove(slpcall->timer); + slpcall->timer = 0; + } slpcall->cb(slpcall, body, body_len);
--- a/libpurple/protocols/msn/transaction.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/msn/transaction.c Thu Feb 12 21:49:56 2009 +0000 @@ -199,6 +199,7 @@ if (trans->timeout_cb != NULL) trans->timeout_cb(trans->cmdproc, trans); + trans->timer = 0; return FALSE; }
--- a/libpurple/protocols/qq/ChangeLog Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/qq/ChangeLog Thu Feb 12 21:49:56 2009 +0000 @@ -1,3 +1,6 @@ +2009.02.08 - flos <lonicerae(at)gmail.com> + * Fixed showing message of chat room when message comes in + 2008.12.28 - flos <lonicerae(at)gmail.com> * Fixes #7908
--- a/libpurple/protocols/qq/buddy_info.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/qq/buddy_info.c Thu Feb 12 21:49:56 2009 +0000 @@ -108,41 +108,41 @@ } QQ_FIELD_INFO; static const QQ_FIELD_INFO field_infos[] = { - { QQ_FIELD_BASE, QQ_FIELD_STRING, "uid", N_("QQ Number"), NULL, 0 }, - { QQ_FIELD_BASE, QQ_FIELD_STRING, "nick", N_("Nickname"), NULL, 0 }, - { QQ_FIELD_ADDR, QQ_FIELD_STRING, "country", N_("Country/Region"), NULL, 0 }, - { QQ_FIELD_ADDR, QQ_FIELD_STRING, "province", N_("Province/State"), NULL, 0 }, - { QQ_FIELD_ADDR, QQ_FIELD_STRING, "zipcode", N_("Zipcode"), NULL, 0 }, - { QQ_FIELD_ADDR, QQ_FIELD_STRING, "address", N_("Address"), NULL, 0 }, - { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "tel", N_("Phone Number"), NULL, 0 }, - { QQ_FIELD_BASE, QQ_FIELD_STRING, "age", N_("Age"), NULL, 0 }, - { QQ_FIELD_BASE, QQ_FIELD_CHOICE, "gender", N_("Gender"), genders, QQ_GENDER_SIZE }, - { QQ_FIELD_BASE, QQ_FIELD_STRING, "name", N_("Name"), NULL, 0 }, - { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "email", N_("Email"), NULL, 0 }, - { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sn", "Pager Serial Num", NULL, 0 }, + { QQ_FIELD_BASE, QQ_FIELD_STRING, "uid", N_("QQ Number"), NULL, 0 }, + { QQ_FIELD_BASE, QQ_FIELD_STRING, "nick", N_("Nickname"), NULL, 0 }, + { QQ_FIELD_ADDR, QQ_FIELD_STRING, "country", N_("Country/Region"), NULL, 0 }, + { QQ_FIELD_ADDR, QQ_FIELD_STRING, "province", N_("Province/State"), NULL, 0 }, + { QQ_FIELD_ADDR, QQ_FIELD_STRING, "zipcode", N_("Zipcode"), NULL, 0 }, + { QQ_FIELD_ADDR, QQ_FIELD_STRING, "address", N_("Address"), NULL, 0 }, + { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "tel", N_("Phone Number"), NULL, 0 }, + { QQ_FIELD_BASE, QQ_FIELD_STRING, "age", N_("Age"), NULL, 0 }, + { QQ_FIELD_BASE, QQ_FIELD_CHOICE, "gender", N_("Gender"), genders, QQ_GENDER_SIZE }, + { QQ_FIELD_BASE, QQ_FIELD_STRING, "name", N_("Name"), NULL, 0 }, + { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "email", N_("Email"), NULL, 0 }, + { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sn", "Pager Serial Num", NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_num", "Pager Num", NULL, 0 }, - { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sp", "Pager Serivce Provider", NULL, 0 }, - { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sta", "Pager Station Num", NULL, 0 }, + { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sp", "Pager Serivce Provider", NULL, 0 }, + { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sta", "Pager Station Num", NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_type", "Pager Type", NULL, 0 }, - { QQ_FIELD_BASE, QQ_FIELD_STRING, "occupation", N_("Occupation"), NULL, 0 }, - { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "homepage", N_("Homepage"), NULL, 0 }, - { QQ_FIELD_BASE, QQ_FIELD_BOOL, "auth", N_("Authorize adding"), NULL, 0 }, + { QQ_FIELD_BASE, QQ_FIELD_STRING, "occupation", N_("Occupation"), NULL, 0 }, + { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "homepage", N_("Homepage"), NULL, 0 }, + { QQ_FIELD_BASE, QQ_FIELD_BOOL, "auth", N_("Authorize adding"), NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow1", "Unknow1", NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow2", "Unknow2", NULL, 0 }, - { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "face", "Face", NULL, 0 }, - { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "mobile", N_("Cellphone Number"), NULL, 0 }, - { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "mobile_type","Cellphone Type", NULL, 0 }, - { QQ_FIELD_BASE, QQ_FIELD_MULTI, "intro", N_("Personal Introduction"), NULL, 0 }, - { QQ_FIELD_ADDR, QQ_FIELD_STRING, "city", N_("City/Area"), NULL, 0 }, + { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "face", "Face", NULL, 0 }, + { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "mobile", N_("Cellphone Number"), NULL, 0 }, + { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "mobile_type", "Cellphone Type", NULL, 0 }, + { QQ_FIELD_BASE, QQ_FIELD_MULTI, "intro", N_("Personal Introduction"), NULL, 0 }, + { QQ_FIELD_ADDR, QQ_FIELD_STRING, "city", N_("City/Area"), NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow3", "Unknow3", NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow4", "Unknow4", NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow5", "Unknow5", NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_CHOICE, "pub_mobile", N_("Publish Mobile"), publish_types, QQ_PUBLISH_SIZE }, - { QQ_FIELD_CONTACT, QQ_FIELD_CHOICE, "pub_contact", N_("Publish Contact"), publish_types, QQ_PUBLISH_SIZE }, - { QQ_FIELD_EXT, QQ_FIELD_STRING, "college", N_("College"), NULL, 0 }, - { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "horoscope", N_("Horoscope"), horoscope_names, QQ_HOROSCOPE_SIZE }, - { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "zodiac", N_("Zodiac"), zodiac_names, QQ_ZODIAC_SIZE }, - { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "blood", N_("Blood"), blood_types, QQ_BLOOD_SIZE }, + { QQ_FIELD_CONTACT, QQ_FIELD_CHOICE, "pub_contact", N_("Publish Contact"), publish_types, QQ_PUBLISH_SIZE }, + { QQ_FIELD_EXT, QQ_FIELD_STRING, "college", N_("College"), NULL, 0 }, + { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "horoscope", N_("Horoscope"), horoscope_names, QQ_HOROSCOPE_SIZE }, + { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "zodiac", N_("Zodiac"), zodiac_names, QQ_ZODIAC_SIZE }, + { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "blood", N_("Blood"), blood_types, QQ_BLOOD_SIZE }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "qq_show", "QQ Show", NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow6", "Unknow6", NULL, 0 }, { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "LAST_2005", "LAST_2005", NULL, 0 } @@ -196,7 +196,9 @@ break; case QQ_FIELD_CHOICE: choice_num = strtol(segments[index], NULL, 10); - if (choice_num < 0 || choice_num >= field_infos[index].choice_size) choice_num = 0; + if (choice_num < 0 || choice_num >= field_infos[index].choice_size) { + choice_num = 0; + } purple_notify_user_info_add_pair(user_info, field_infos[index].text, field_infos[index].choice[choice_num]); break;
--- a/libpurple/protocols/qq/buddy_info.h Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/qq/buddy_info.h Thu Feb 12 21:49:56 2009 +0000 @@ -31,7 +31,7 @@ #include "buddy_opt.h" #include "qq.h" -/* use is openq2005 +/* use in qq2005 * ext_flag: (0-7) * bit1 => qq space * comm_flag: (0-7)
--- a/libpurple/protocols/qq/group_im.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/qq/group_im.c Thu Feb 12 21:49:56 2009 +0000 @@ -165,6 +165,7 @@ guint32 room_id, guint32 uid_from, const gchar *msg, time_t in_time) { PurpleConversation *conv; + qq_data *qd; qq_buddy_data *bd; qq_room_data *rmd; gchar *from; @@ -172,15 +173,17 @@ g_return_if_fail(gc != NULL && room_id != 0); g_return_if_fail(msg != NULL); + qd = (qq_data *)gc->proto_data; conv = purple_find_chat(gc, room_id); rmd = qq_room_data_find(gc, room_id); g_return_if_fail(rmd != NULL); - if (conv == NULL && purple_prefs_get_bool("/plugins/prpl/qq/auto_popup_conversation")) { + purple_debug_info("QQ", "is_show_chat:%d\n", qd->is_show_chat); + if (NULL == conv && qd->is_show_chat) { conv = qq_room_conv_open(gc, rmd); } - if (conv == NULL) { + if (NULL == conv) { purple_debug_info("QQ", "Conversion of %u is not open, missing from %d:/n%s/v", room_id, uid_from, msg); return;
--- a/libpurple/protocols/qq/qq.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/qq/qq.c Thu Feb 12 21:49:56 2009 +0000 @@ -173,6 +173,7 @@ qd->is_show_notice = purple_account_get_bool(account, "show_notice", TRUE); qd->is_show_news = purple_account_get_bool(account, "show_news", TRUE); + qd->is_show_chat = purple_account_get_bool(account, "show_chat", TRUE); qd->resend_times = purple_prefs_get_int("/plugins/prpl/qq/resend_times"); if (qd->resend_times <= 1) qd->itv_config.resend = 4; @@ -1095,6 +1096,9 @@ option = purple_account_option_bool_new(_("Show server news"), "show_news", TRUE); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); + option = purple_account_option_bool_new(_("Show chat room when msg comes"), "show_chat", TRUE); + prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); + option = purple_account_option_int_new(_("Keep alive interval (seconds)"), "keep_alive_interval", 60); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); @@ -1104,7 +1108,6 @@ purple_prefs_add_none("/plugins/prpl/qq"); purple_prefs_add_bool("/plugins/prpl/qq/show_status_by_icon", TRUE); purple_prefs_add_bool("/plugins/prpl/qq/show_fake_video", FALSE); - purple_prefs_add_bool("/plugins/prpl/qq/auto_popup_conversation", TRUE); purple_prefs_add_bool("/plugins/prpl/qq/auto_get_authorize_info", TRUE); purple_prefs_add_int("/plugins/prpl/qq/resend_interval", 3); purple_prefs_add_int("/plugins/prpl/qq/resend_times", 10);
--- a/libpurple/protocols/qq/qq.h Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/qq/qq.h Thu Feb 12 21:49:56 2009 +0000 @@ -182,6 +182,7 @@ gboolean is_show_notice; gboolean is_show_news; + gboolean is_show_chat; guint16 send_im_id; /* send IM sequence number */ };
--- a/libpurple/protocols/qq/qq_network.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/protocols/qq/qq_network.c Thu Feb 12 21:49:56 2009 +0000 @@ -214,7 +214,7 @@ qd->connect_retry = QQ_CONNECT_MAX; } - segments = g_strsplit(qd->curr_server, ":", 0); + segments = g_strsplit_set(qd->curr_server, ":", 0); tmp_server = g_strdup(segments[0]); if (NULL != segments[1]) { port = atoi(segments[1]);
--- a/libpurple/upnp.c Sat Feb 07 11:57:28 2009 +0000 +++ b/libpurple/upnp.c Thu Feb 12 21:49:56 2009 +0000 @@ -567,7 +567,7 @@ purple_upnp_discover_send_broadcast(UPnPDiscoveryData *dd) { gchar *sendMessage = NULL; - gsize totalSize; + size_t totalSize; gboolean sentSuccess; /* because we are sending over UDP, if there is a failure @@ -693,6 +693,7 @@ /* XXX: This should probably be async */ if(cb) cb(NULL, cb_data, NULL, 0, NULL); + return NULL; } if(port == 0 || port == -1) { port = DEFAULT_HTTP_PORT; @@ -711,11 +712,11 @@ g_free(soapMessage); gfud = purple_util_fetch_url_request_len(control_info.control_url, FALSE, NULL, TRUE, - totalSendMessage, TRUE, MAX_UPNP_DOWNLOAD, cb, cb_data); + totalSendMessage, TRUE, MAX_UPNP_DOWNLOAD, cb, cb_data); g_free(totalSendMessage); g_free(addressOfControl); - + return gfud; }
--- a/pidgin/gtkblist.c Sat Feb 07 11:57:28 2009 +0000 +++ b/pidgin/gtkblist.c Thu Feb 12 21:49:56 2009 +0000 @@ -7676,13 +7676,11 @@ if (!disabled_accounts) { menuitem = gtk_menu_item_new_with_label(_("Enable Account")); gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); - gtk_widget_show(menuitem); submenu = gtk_menu_new(); gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); gtk_menu_set_accel_path(GTK_MENU(submenu), N_("<PurpleMain>/Accounts/Enable Account")); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); - gtk_widget_show(submenu); disabled_accounts = TRUE; } @@ -7704,7 +7702,6 @@ g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(enable_account_cb), account); gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); - gtk_widget_show(menuitem); } else { enabled_accounts = TRUE; } @@ -7746,21 +7743,18 @@ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); } gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); - gtk_widget_show(menuitem); submenu = gtk_menu_new(); gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf); g_free(accel_path_buf); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); - gtk_widget_show(submenu); menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account")); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(modify_account_cb), account); gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); - gtk_widget_show(menuitem); pidgin_separator(submenu); @@ -7772,7 +7766,6 @@ menuitem = gtk_menu_item_new_with_label(_("No actions available")); gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); gtk_widget_set_sensitive(menuitem, FALSE); - gtk_widget_show(menuitem); } pidgin_separator(submenu); @@ -7781,8 +7774,8 @@ g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(disable_account_cb), account); gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); - gtk_widget_show(menuitem); - } + } + gtk_widget_show_all(accountmenu); } static GList *plugin_submenus = NULL; @@ -7821,13 +7814,11 @@ menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name)); gtk_menu_shell_append(GTK_MENU_SHELL(pluginmenu), menuitem); - gtk_widget_show(menuitem); plugin_submenus = g_list_append(plugin_submenus, menuitem); submenu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); - gtk_widget_show(submenu); gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); path = g_strdup_printf("%s/Tools/%s", gtkblist->ift->path, plugin->info->name); @@ -7836,6 +7827,7 @@ build_plugin_actions(submenu, plugin, NULL); } + gtk_widget_show_all(pluginmenu); } static void
--- a/pidgin/gtkdocklet.c Sat Feb 07 11:57:28 2009 +0000 +++ b/pidgin/gtkdocklet.c Thu Feb 12 21:49:56 2009 +0000 @@ -88,13 +88,16 @@ static GList * get_pending_list(guint max) { - GList *l_im = NULL; - GList *l_chat = NULL; + GList *l_im, *l_chat; l_im = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, FALSE, max); + /* Short circuit if we have our information already */ + if (max == 1 && l_im != NULL) + return l_im; + l_chat = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT, PIDGIN_UNSEEN_NICK, FALSE, max); @@ -344,7 +347,9 @@ docklet_menu_leave_enter(GtkWidget *menu, GdkEventCrossing *event, void *data) { static guint hide_docklet_timer = 0; - if (event->type == GDK_LEAVE_NOTIFY && event->detail == GDK_NOTIFY_ANCESTOR) { + + if (event->type == GDK_LEAVE_NOTIFY && (event->detail == GDK_NOTIFY_ANCESTOR || + event->detail == GDK_NOTIFY_UNKNOWN)) { purple_debug(PURPLE_DEBUG_INFO, "docklet", "menu leave-notify-event\n"); /* Add some slop so that the menu doesn't annoyingly disappear when mousing around */ if (hide_docklet_timer == 0) { @@ -652,11 +657,9 @@ menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name)); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); - gtk_widget_show(menuitem); submenu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); - gtk_widget_show(submenu); build_plugin_actions(submenu, plugin, NULL);
--- a/po/de.po Sat Feb 07 11:57:28 2009 +0000 +++ b/po/de.po Thu Feb 12 21:49:56 2009 +0000 @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-01-09 00:39+0100\n" -"PO-Revision-Date: 2009-01-09 00:38+0100\n" +"POT-Creation-Date: 2009-02-06 15:18+0100\n" +"PO-Revision-Date: 2009-02-06 15:15+0100\n" "Last-Translator: Bjoern Voigt <bjoern@cs.tu-berlin.de>\n" "Language-Team: Deutsch <de@li.org>\n" "MIME-Version: 1.0\n" @@ -11908,7 +11908,7 @@ msgstr "Dieses Thema verfügt über keine Smileys." msgid "_Font" -msgstr "_Schrift" +msgstr "S_chrift" msgid "Group Items" msgstr "Elemente gruppieren"