Mercurial > pidgin
changeset 18615:0ad0bdb0063b
merge of '36ee98cd262baf7d57502c08fc185518ed93532a'
and '4155ac2acf86fd3365a2f8ea18bd1cb4d1db4f0e'
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Sun, 22 Jul 2007 18:17:26 +0000 |
parents | 823946ddd527 (current diff) 784f98a1bc7f (diff) |
children | c3c610e73fc0 0cb46c94c47d 2a2cc0b57d8f |
files | |
diffstat | 16 files changed, 722 insertions(+), 65 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Sat Jul 21 06:22:15 2007 +0000 +++ b/COPYRIGHT Sun Jul 22 18:17:26 2007 +0000 @@ -372,6 +372,7 @@ Todd Troxell Brad Turcotte Junichi Uekawa +Igor Vlasenko István Váradi Martijn van Beers Arjan van de Ven
--- a/configure.ac Sat Jul 21 06:22:15 2007 +0000 +++ b/configure.ac Sun Jul 22 18:17:26 2007 +0000 @@ -2069,6 +2069,8 @@ pidgin/pixmaps/icons/Makefile pidgin/pixmaps/icons/16/Makefile pidgin/pixmaps/icons/16/scalable/Makefile + pidgin/pixmaps/icons/22/Makefile + pidgin/pixmaps/icons/22/scalable/Makefile pidgin/pixmaps/icons/24/Makefile pidgin/pixmaps/icons/24/scalable/Makefile pidgin/pixmaps/icons/32/Makefile
--- a/libpurple/Makefile.am Sat Jul 21 06:22:15 2007 +0000 +++ b/libpurple/Makefile.am Sun Jul 22 18:17:26 2007 +0000 @@ -225,11 +225,11 @@ libpurple_la_DEPENDENCIES = $(STATIC_LINK_LIBS) libpurple_la_LDFLAGS = -export-dynamic -version-info $(PURPLE_LT_VERSION_INFO) -no-undefined libpurple_la_LIBADD = \ + $(STATIC_LINK_LIBS) \ $(DBUS_LIBS) \ $(GLIB_LIBS) \ $(LIBXML_LIBS) \ $(LIBNM_LIBS) \ - $(STATIC_LINK_LIBS) \ $(INTLLIBS) \ -lm
--- a/libpurple/protocols/oscar/flap_connection.c Sat Jul 21 06:22:15 2007 +0000 +++ b/libpurple/protocols/oscar/flap_connection.c Sun Jul 22 18:17:26 2007 +0000 @@ -356,16 +356,21 @@ FlapConnection *conn; OscarData *od; PurpleAccount *account; + aim_rxcallback_t userfunc; conn = data; od = conn->od; account = (PURPLE_CONNECTION_IS_VALID(od->gc) ? purple_connection_get_account(od->gc) : NULL); purple_debug_info("oscar", "Destroying oscar connection of " - "type 0x%04hx\n", conn->type); + "type 0x%04hx. Disconnect reason is %d\n", + conn->type, conn->disconnect_reason); od->oscar_connections = g_slist_remove(od->oscar_connections, conn); + if ((userfunc = aim_callhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR))) + userfunc(od, conn, NULL, conn->disconnect_code, conn->error_message); + /* * TODO: If we don't have a SNAC_FAMILY_LOCATE connection then * we should try to request one instead of disconnecting. @@ -375,7 +380,10 @@ { /* No more FLAP connections! Sign off this PurpleConnection! */ gchar *tmp; - if (conn->disconnect_reason == OSCAR_DISCONNECT_REMOTE_CLOSED) + if (conn->disconnect_code == 0x0001) { + tmp = g_strdup(_("You have signed on from another location.")); + od->gc->wants_to_die = TRUE; + } else if (conn->disconnect_reason == OSCAR_DISCONNECT_REMOTE_CLOSED) tmp = g_strdup(_("Server closed the connection.")); else if (conn->disconnect_reason == OSCAR_DISCONNECT_LOST_CONNECTION) tmp = g_strdup_printf(_("Lost connection with server:\n%s"), @@ -695,8 +703,6 @@ { GSList *tlvlist; char *msg = NULL; - guint16 code = 0; - aim_rxcallback_t userfunc; if (byte_stream_empty(&frame->data) == 0) { /* XXX should do something with this */ @@ -713,13 +719,17 @@ tlvlist = aim_tlvlist_read(&frame->data); if (aim_tlv_gettlv(tlvlist, 0x0009, 1)) - code = aim_tlv_get16(tlvlist, 0x0009, 1); + conn->disconnect_code = aim_tlv_get16(tlvlist, 0x0009, 1); if (aim_tlv_gettlv(tlvlist, 0x000b, 1)) msg = aim_tlv_getstr(tlvlist, 0x000b, 1); - if ((userfunc = aim_callhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR))) - userfunc(od, conn, frame, code, msg); + /* + * The server ended this FLAP connnection, so let's be nice and + * close the physical TCP connection + */ + flap_connection_schedule_destroy(conn, + OSCAR_DISCONNECT_REMOTE_CLOSED, msg); aim_tlvlist_free(tlvlist);
--- a/libpurple/protocols/oscar/oscar.c Sat Jul 21 06:22:15 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.c Sun Jul 22 18:17:26 2007 +0000 @@ -1383,7 +1383,6 @@ } purple_debug_info("oscar", "Login Error Code 0x%04hx\n", info->errorcode); purple_debug_info("oscar", "Error URL: %s\n", info->errorurl); - od->killme = TRUE; return 1; } @@ -1410,7 +1409,6 @@ if (newconn->connect_data == NULL) { purple_connection_error(gc, _("Could Not Connect")); - od->killme = TRUE; return 0; } @@ -1433,12 +1431,10 @@ purple_parse_auth_securid_request_no_cb(gpointer user_data, const char *value) { PurpleConnection *gc = user_data; - OscarData *od = gc->proto_data; /* Disconnect */ gc->wants_to_die = TRUE; purple_connection_error(gc, _("The SecurID key entered is invalid.")); - od->killme = TRUE; } static int @@ -3472,33 +3468,32 @@ purple_debug_info("oscar", "Disconnected. Code is 0x%04x and msg is %s\n", code, (msg != NULL ? msg : "")); - g_return_val_if_fail(fr != NULL, 1); g_return_val_if_fail(conn != NULL, 1); - if (conn->type == SNAC_FAMILY_LOCATE) { - if (code == 0x0001) { - gc->wants_to_die = TRUE; - purple_connection_error(gc, _("You have signed on from another location.")); - } else { - purple_connection_error(gc, _("You have been signed off for an unknown reason.")); - } - od->killme = TRUE; - } else if (conn->type == SNAC_FAMILY_CHAT) { + if (conn->type == SNAC_FAMILY_CHAT) { struct chat_connection *cc; - PurpleConversation *conv; + PurpleConversation *conv = NULL; cc = find_oscar_chat_by_conn(gc, conn); - conv = purple_find_chat(gc, cc->id); - - if (conv != NULL) + if (cc != NULL) { - gchar *buf; - buf = g_strdup_printf(_("You have been disconnected from chat " - "room %s."), cc->name); - purple_conversation_write(conv, NULL, buf, PURPLE_MESSAGE_ERROR, time(NULL)); - g_free(buf); + conv = purple_find_chat(gc, cc->id); + + if (conv != NULL) + { + /* + * TOOD: Have flap_connection_destroy_cb() send us the + * error message stored in 'tmp', which should be + * human-friendly, and print that to the chat room. + */ + gchar *buf; + buf = g_strdup_printf(_("You have been disconnected from chat " + "room %s."), cc->name); + purple_conversation_write(conv, NULL, buf, PURPLE_MESSAGE_ERROR, time(NULL)); + g_free(buf); + } + oscar_chat_kill(gc, cc); } - oscar_chat_kill(gc, cc); } return 1; @@ -4328,10 +4323,15 @@ tmp2 = purple_markup_strip_html(tmp1); g_free(tmp1); - - tmp1 = purple_strdup_withhtml(tmp2); + + /* re-escape the entities */ + tmp1 = g_markup_escape_text(tmp2, -1); g_free(tmp2); + tmp2 = purple_strdup_withhtml(tmp1); + g_free(tmp1); + tmp1 = tmp2; + purple_plugin_oscar_convert_to_best_encoding(gc, name, tmp1, (char **)&args.msg, &args.msglen, &args.charset, &args.charsubset); purple_debug_info("oscar", "Sending %s as %s because the original was too long.",
--- a/libpurple/protocols/oscar/oscar.h Sat Jul 21 06:22:15 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.h Sun Jul 22 18:17:26 2007 +0000 @@ -378,6 +378,7 @@ guint destroy_timeout; OscarDisconnectReason disconnect_reason; gchar *error_message; + guint16 disconnect_code; /* A few variables that are only used when connecting */ PurpleProxyConnectData *connect_data; @@ -442,7 +443,6 @@ GHashTable *buddyinfo; GSList *requesticon; - gboolean killme; gboolean icq; guint icontimer; guint getblisttimer;
--- a/libpurple/protocols/oscar/tlv.c Sat Jul 21 06:22:15 2007 +0000 +++ b/libpurple/protocols/oscar/tlv.c Sun Jul 22 18:17:26 2007 +0000 @@ -718,12 +718,10 @@ for (cur = list, i = 0; cur != NULL; cur = cur->next) { tlv = cur->data; - if (tlv != NULL) { /* TODO: This NULL check shouldn't be needed */ - if (tlv->type == type) - i++; - if (i >= nth) - return tlv; - } + if (tlv->type == type) + i++; + if (i >= nth) + return tlv; } return NULL;
--- a/libpurple/protocols/sametime/sametime.c Sat Jul 21 06:22:15 2007 +0000 +++ b/libpurple/protocols/sametime/sametime.c Sun Jul 22 18:17:26 2007 +0000 @@ -3189,7 +3189,8 @@ pd = gc->proto_data; ret = mwServiceAware_getText(pd->srvc_aware, &t); - return ret? g_markup_escape_text(ret, -1): NULL; + + return (ret && g_utf8_validate(ret, -1, NULL)) ? g_markup_escape_text(ret, -1): NULL; } @@ -3254,7 +3255,7 @@ message = mwServiceAware_getText(pd->srvc_aware, &idb); status = status_text(b); - if(message != NULL && purple_utf8_strcasecmp(status, message)) { + if(message != NULL && g_utf8_validate(message, -1, NULL) && purple_utf8_strcasecmp(status, message)) { tmp = g_markup_escape_text(message, -1); purple_notify_user_info_add_pair(user_info, status, tmp); g_free(tmp); @@ -4151,7 +4152,7 @@ /* XXX Is this adding a status message in its own section rather than with the "Status" label? */ tmp2 = mwServiceAware_getText(pd->srvc_aware, &idb); - if(tmp2) { + if(tmp2 && g_utf8_validate(tmp2, -1, NULL)) { tmp = g_markup_escape_text(tmp2, -1); purple_notify_user_info_add_section_break(user_info); purple_notify_user_info_add_pair(user_info, NULL, tmp);
--- a/libpurple/util.c Sat Jul 21 06:22:15 2007 +0000 +++ b/libpurple/util.c Sun Jul 22 18:17:26 2007 +0000 @@ -3994,6 +3994,10 @@ if (*c <= ' ' || *c >= 127) return FALSE; if (strchr(rfc822_specials, *c)) return FALSE; } + + /* It's obviously not an email address if we didn't find an '@' above */ + if (*c == '\0') return FALSE; + /* strictly we should return false if (*(c - 1) == '.') too, but I think * we should permit user.@domain type addresses - they do work :) */ if (c == address) return FALSE;
--- a/pidgin/gtkconv.c Sat Jul 21 06:22:15 2007 +0000 +++ b/pidgin/gtkconv.c Sun Jul 22 18:17:26 2007 +0000 @@ -83,9 +83,10 @@ }PidginConvFields; enum { - ICON_COLUMN, - TEXT_COLUMN, - NUM_COLUMNS + CONV_ICON_COLUMN, + CONV_TEXT_COLUMN, + CONV_EMBLEM_COLUMN, + CONV_NUM_COLUMNS } PidginInfopaneColumns; #define PIDGIN_CONV_ALL ((1 << 7) - 1) @@ -2335,8 +2336,10 @@ { PidginConversation *gtkconv; PidginWindow *win; + PurpleBuddy *b; GList *l; GdkPixbuf *status = NULL; + GdkPixbuf *emblem = NULL; g_return_if_fail(conv != NULL); @@ -2345,7 +2348,11 @@ if (conv != gtkconv->active_conv) return; + status = pidgin_conv_get_tab_icon(conv, TRUE); + b = purple_find_buddy(conv->account, conv->name); + if (b) + emblem = pidgin_blist_get_emblem((PurpleBlistNode*)b); g_return_if_fail(status != NULL); @@ -2354,7 +2361,12 @@ gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), &(gtkconv->infopane_iter), - ICON_COLUMN, status, -1); + CONV_ICON_COLUMN, status, -1); + + gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), + &(gtkconv->infopane_iter), + CONV_EMBLEM_COLUMN, emblem, -1); + if (status != NULL) g_object_unref(status); @@ -4412,7 +4424,7 @@ gtkconv->infopane = gtk_cell_view_new(); - gtkconv->infopane_model = gtk_list_store_new(NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING); + gtkconv->infopane_model = gtk_list_store_new(CONV_NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, GDK_TYPE_PIXBUF); gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane), GTK_TREE_MODEL(gtkconv->infopane_model)); gtk_list_store_append(gtkconv->infopane_model, &(gtkconv->infopane_iter)); @@ -4425,18 +4437,23 @@ rend = gtk_cell_renderer_pixbuf_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkconv->infopane), rend, FALSE); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "pixbuf", ICON_COLUMN, NULL); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "pixbuf", CONV_ICON_COLUMN, NULL); g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL); rend = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkconv->infopane), rend, TRUE); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "markup", TEXT_COLUMN, NULL); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "markup", CONV_TEXT_COLUMN, NULL); g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL); #if GTK_CHECK_VERSION(2, 6, 0) g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); #endif + rend = gtk_cell_renderer_pixbuf_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkconv->infopane), rend, FALSE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "pixbuf", CONV_EMBLEM_COLUMN, NULL); + g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL); + /* Setup the gtkimhtml widget */ frame = pidgin_create_imhtml(FALSE, >kconv->imhtml, NULL, &imhtml_sw); if (chat) { @@ -4787,6 +4804,11 @@ else gtk_widget_hide(gtkconv->toolbar); + if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons")) + gtk_widget_show(gtkconv->infopane_hbox); + else + gtk_widget_hide(gtkconv->infopane_hbox); + gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_timestamps")); gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->imhtml), @@ -6199,7 +6221,7 @@ topic ? topic : ""); } gtk_list_store_set(gtkconv->infopane_model, &(gtkconv->infopane_iter), - TEXT_COLUMN, markup, -1); + CONV_TEXT_COLUMN, markup, -1); if (title != markup) g_free(markup); @@ -6766,9 +6788,14 @@ for (l = purple_get_conversations(); l != NULL; l = l->next) { PurpleConversation *conv = l->data; - - if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) + if (GPOINTER_TO_INT(value)) + gtk_widget_show(PIDGIN_CONVERSATION(conv)->infopane_hbox); + else + gtk_widget_hide(PIDGIN_CONVERSATION(conv)->infopane_hbox); + + if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { pidgin_conv_update_buddy_icon(conv); + } } } @@ -8421,6 +8448,10 @@ win->gtkconvs = g_list_append(win->gtkconvs, gtkconv); gtkconv->win = win; + if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL) + pidgin_conv_tab_pack(win, ((PidginConversation*)win->gtkconvs->data)); + + /* Close button. */ gtkconv->close = gtk_button_new(); gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &close_button_width, &close_button_height); @@ -8490,9 +8521,11 @@ /* Er, bug in notebooks? Switch to the page manually. */ gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), 0); - gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), FALSE); - } else + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), + purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs")); + } else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), TRUE); + } focus_gtkconv = g_list_nth_data(pidgin_conv_window_get_gtkconvs(win), gtk_notebook_get_current_page(GTK_NOTEBOOK(win->notebook))); @@ -8518,11 +8551,14 @@ angle = 270; #if GTK_CHECK_VERSION(2,6,0) - if (!angle) + if (!angle && pidgin_conv_window_get_gtkconv_count(win) > 1) { g_object_set(G_OBJECT(gtkconv->tab_label), "ellipsize", PANGO_ELLIPSIZE_END, NULL); - else + gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), 6); + } else { g_object_set(G_OBJECT(gtkconv->tab_label), "ellipsize", PANGO_ELLIPSIZE_NONE, NULL); - gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), 6); + gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), -1); + } + if (tabs_side) { gtk_label_set_width_chars( GTK_LABEL(gtkconv->tab_label), @@ -8581,7 +8617,9 @@ gtk_notebook_set_tab_label(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, ebox); } - gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, !tabs_side && !angle, TRUE, GTK_PACK_START); + gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, + !tabs_side && !angle && pidgin_conv_window_get_gtkconv_count(win) > 1, + TRUE, GTK_PACK_START); /* show the widgets */ /* XXX gtk_widget_show(gtkconv->icon); */ @@ -8608,13 +8646,14 @@ /* go back to tabless */ if (pidgin_conv_window_get_gtkconv_count(win) <= 2) { - gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), FALSE); + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), + purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs")); } win->gtkconvs = g_list_remove(win->gtkconvs, gtkconv); - if (!win->gtkconvs || !win->gtkconvs->next) - gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), FALSE); + if (win->gtkconvs && win->gtkconvs->next == NULL) + pidgin_conv_tab_pack(win, win->gtkconvs->data); if (!win->gtkconvs && win != hidden_convwin) pidgin_conv_window_destroy(win);
--- a/pidgin/gtkprefs.c Sat Jul 21 06:22:15 2007 +0000 +++ b/pidgin/gtkprefs.c Sun Jul 22 18:17:26 2007 +0000 @@ -994,7 +994,7 @@ pidgin_prefs_checkbox(_("Show _formatting on incoming messages"), PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting", vbox); - iconpref1 = pidgin_prefs_checkbox(_("Show buddy _icons"), + iconpref1 = pidgin_prefs_checkbox(_("Show Buddy _Details"), PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons", vbox); iconpref2 = pidgin_prefs_checkbox(_("Enable buddy ic_on animation"), PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons", vbox);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/icons/22/Makefile.am Sun Jul 22 18:17:26 2007 +0000 @@ -0,0 +1,8 @@ +SUBDIRS = scalable + +EXTRA_DIST = pidgin.png + +pidginiconspixdir = $(datadir)/icons/hicolor/24x24/apps + +pidginiconspix_DATA = $(EXTRA_DIST) +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/icons/22/scalable/Makefile.am Sun Jul 22 18:17:26 2007 +0000 @@ -0,0 +1,1 @@ +EXTRA_DIST = pidgin.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/icons/22/scalable/pidgin.svg Sun Jul 22 18:17:26 2007 +0000 @@ -0,0 +1,591 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="22" + height="22" + id="svg4345" + sodipodi:version="0.32" + inkscape:version="0.44.1" + sodipodi:docbase="/home/hbons/Desktop/Pidgin/2.1.0/icons/24/scalable" + sodipodi:docname="pidgin.svg" + inkscape:export-filename="/home/hbons/Desktop/pidgin24.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + version="1.0"> + <defs + id="defs4347"> + <linearGradient + inkscape:collect="always" + id="linearGradient3124"> + <stop + style="stop-color:#3b1941;stop-opacity:1;" + offset="0" + id="stop3126" /> + <stop + style="stop-color:#3b1941;stop-opacity:0;" + offset="1" + id="stop3128" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient3116"> + <stop + style="stop-color:#82508e;stop-opacity:1;" + offset="0" + id="stop3118" /> + <stop + style="stop-color:#82508e;stop-opacity:0;" + offset="1" + id="stop3120" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient3108"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3110" /> + <stop + style="stop-color:#eeeeec;stop-opacity:0;" + offset="1" + id="stop3112" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient5438"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop5440" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop5442" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6817"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop6819" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop6821" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6537"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop6539" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop6541" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6506"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop6508" /> + <stop + style="stop-color:#eeeeec;stop-opacity:0;" + offset="1" + id="stop6510" /> + </linearGradient> + <linearGradient + id="linearGradient2804"> + <stop + style="stop-color:black;stop-opacity:0;" + offset="0" + id="stop2806" /> + <stop + id="stop2812" + offset="0.5" + style="stop-color:black;stop-opacity:1;" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop2808" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient25546" + id="radialGradient25572" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.994693,0,4.16407e-2)" + cx="7.8836637" + cy="1.5104795" + fx="7.8836637" + fy="1.5104795" + r="8.4883642" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient25546" + id="radialGradient25568" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.994693,0,4.16407e-2)" + cx="7.8836741" + cy="0.14505707" + fx="7.8836741" + fy="0.14505707" + r="8.4883642" /> + <linearGradient + inkscape:collect="always" + id="linearGradient25546"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop25548" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop25550" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient25546" + id="radialGradient25554" + cx="7.8836637" + cy="2.6242435" + fx="7.8836637" + fy="2.6242435" + r="8.4883642" + gradientTransform="matrix(1.131317,0,0,1.125313,-1.035262,-0.301139)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3800"> + <stop + style="stop-color:#f4d9b1;stop-opacity:1.0000000;" + offset="0.0000000" + id="stop3802" /> + <stop + style="stop-color:#df9725;stop-opacity:1.0000000;" + offset="1.0000000" + id="stop3804" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6506" + id="linearGradient6512" + x1="15.645709" + y1="39.029884" + x2="15.645709" + y2="43.206608" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6817" + id="linearGradient6823" + x1="0.23931108" + y1="38.950283" + x2="5.7089725" + y2="42.982571" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5438" + id="linearGradient5444" + x1="30.152058" + y1="-0.86487341" + x2="30.152058" + y2="23.011967" + gradientUnits="userSpaceOnUse" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="44.272076" + x2="5.5366187" + y1="39.902092" + x1="-1.6841649" + id="linearGradient6569" + xlink:href="#linearGradient6563" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="23.559282" + x2="30.5" + y1="0.033532728" + x1="30.5" + id="linearGradient2089" + xlink:href="#linearGradient6537" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="50.079575" + x2="14.943421" + y1="39.743458" + x1="15.645709" + id="linearGradient2087" + xlink:href="#linearGradient6506" + inkscape:collect="always" /> + <linearGradient + id="linearGradient2081"> + <stop + id="stop2083" + offset="0.0000000" + style="stop-color:#f4d9b1;stop-opacity:1.0000000;" /> + <stop + id="stop2085" + offset="1.0000000" + style="stop-color:#df9725;stop-opacity:1.0000000;" /> + </linearGradient> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.131317,0,0,1.125313,-1.035262,-0.301139)" + r="8.4883642" + fy="2.6242435" + fx="7.8836637" + cy="2.6242435" + cx="7.8836637" + id="radialGradient2079" + xlink:href="#linearGradient25546" + inkscape:collect="always" /> + <radialGradient + r="8.4883642" + fy="0.14505707" + fx="7.8836741" + cy="0.14505707" + cx="7.8836741" + gradientTransform="matrix(1,0,0,0.994693,0,4.16407e-2)" + gradientUnits="userSpaceOnUse" + id="radialGradient2071" + xlink:href="#linearGradient25546" + inkscape:collect="always" /> + <radialGradient + r="8.4883642" + fy="1.5104795" + fx="7.8836637" + cy="1.5104795" + cx="7.8836637" + gradientTransform="matrix(1,0,0,0.994693,0,4.16407e-2)" + gradientUnits="userSpaceOnUse" + id="radialGradient2069" + xlink:href="#linearGradient25546" + inkscape:collect="always" /> + <linearGradient + id="linearGradient2061"> + <stop + id="stop2063" + offset="0" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0.5" + id="stop2065" /> + <stop + id="stop2067" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient6563" + inkscape:collect="always"> + <stop + id="stop6565" + offset="0" + style="stop-color:white;stop-opacity:1;" /> + <stop + id="stop6567" + offset="1" + style="stop-color:white;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient2850" + inkscape:collect="always"> + <stop + id="stop2852" + offset="0" + style="stop-color:#ce5c00;stop-opacity:1;" /> + <stop + id="stop2854" + offset="1" + style="stop-color:#ce5c00;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3958" + inkscape:collect="always"> + <stop + id="stop3960" + offset="0" + style="stop-color:#eeeeec;stop-opacity:1;" /> + <stop + id="stop3962" + offset="1" + style="stop-color:#eeeeec;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3968" + inkscape:collect="always"> + <stop + id="stop3970" + offset="0" + style="stop-color:#82508e;stop-opacity:1;" /> + <stop + id="stop3972" + offset="1" + style="stop-color:#82508e;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3976" + inkscape:collect="always"> + <stop + id="stop3978" + offset="0" + style="stop-color:#3b1941;stop-opacity:1;" /> + <stop + id="stop3980" + offset="1" + style="stop-color:#3b1941;stop-opacity:0;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2850" + id="linearGradient2149" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.769231,0,0,0.714287,-34.23081,-12.28573)" + x1="21.785719" + y1="28.142857" + x2="17.785713" + y2="30.07143" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3958" + id="radialGradient2191" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.116159,0,0,1.076653,-36.39499,-20.28695)" + cx="9.0640488" + cy="21.511742" + fx="9.0640488" + fy="21.511742" + r="16.663956" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6506" + id="linearGradient2193" + gradientUnits="userSpaceOnUse" + x1="15.645709" + y1="39.743458" + x2="15.645709" + y2="53.502155" + gradientTransform="matrix(0.660903,0,0,0.627207,-32.26852,-10.3201)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3968" + id="linearGradient2196" + gradientUnits="userSpaceOnUse" + x1="16.13257" + y1="40.781811" + x2="16.13257" + y2="48.068741" + gradientTransform="matrix(0.67692,0,0,0.646801,-32.53568,-10.90841)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3976" + id="linearGradient2198" + gradientUnits="userSpaceOnUse" + x1="12.095973" + y1="40.907658" + x2="12.095973" + y2="46.463146" + gradientTransform="matrix(0.67692,0,0,0.646801,-32.53568,-10.90841)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6537" + id="linearGradient2201" + gradientUnits="userSpaceOnUse" + x1="30.5" + y1="0.033532728" + x2="30.5" + y2="23.559282" + gradientTransform="matrix(0.668893,0,0,0.668627,-32.91377,-10.19246)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3108" + id="linearGradient3114" + x1="10.18327" + y1="16.618088" + x2="27.598003" + y2="36.64465" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3116" + id="linearGradient3122" + x1="15.722902" + y1="38.768803" + x2="15.722902" + y2="43.249905" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3124" + id="linearGradient3130" + x1="13.150809" + y1="38.849556" + x2="13.150809" + y2="43.105652" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2850" + id="linearGradient3146" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.769231,0,0,0.714287,-3.230767,-7.285729)" + x1="21.785719" + y1="28.142857" + x2="17.785713" + y2="30.07143" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5438" + id="linearGradient2848" + gradientUnits="userSpaceOnUse" + x1="30.152058" + y1="-0.86487341" + x2="30.152058" + y2="23.011967" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="22.743067" + inkscape:cx="23.715241" + inkscape:cy="10.08258" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="1434" + inkscape:window-height="840" + inkscape:window-x="0" + inkscape:window-y="0" + showguides="true" + inkscape:guide-bbox="true" + inkscape:grid-points="false" + width="22px" + height="22px" + inkscape:object-bbox="true" /> + <metadata + id="metadata4350"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="opacity:1;fill:#75507b;fill-opacity:1" + d="M 36.0625,8 C 33.978257,8 33.334928,10.523086 34.78125,12.9375 C 35.250389,13.720651 36.674297,15.15311 36.86722,15.15311 L 36.878267,14.508325 C 36.288194,13.580567 35.517363,12.502064 35.686987,12.281543 C 37.835781,12.281543 38,11.491782 38,10.027674 C 38,8.7542399 37.228501,8 36.0625,8 z " + id="path6521" + transform="matrix(1.747787,0,0,1.397993,-52.41719,-5.183942)" + sodipodi:nodetypes="csccccc" /> + <path + style="opacity:1;fill:url(#linearGradient3122);fill-opacity:1;stroke:url(#linearGradient3130);stroke-width:1.51128328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 15,13 C 8.3759979,13 3,18.600001 3,25.5 C 3,31.153143 2.9750563,38.402618 2.9750563,45.572826 C 4.1625449,45.572826 27.946366,45.600605 30.637365,45.600605 C 32.751492,45.600605 32.586331,43.541005 32.586331,43.541005 C 32.586331,40.875594 27.597902,38.639057 25.813453,36.682531 C 23.985035,34.68151 26,30.5 26,30.5 C 26.641306,28.9702 27,27.275084 27,25.5 C 27,18.600001 21.624002,13 15,13 z " + id="path5176" + sodipodi:nodetypes="ccccszcsc" + transform="matrix(0.67692,0,0,0.646801,-1.52611,-5.949693)" /> + <path + transform="matrix(0.660903,0,0,0.627207,-1.258953,-5.361383)" + style="opacity:0.5;fill:url(#linearGradient3114);fill-opacity:1;stroke:url(#linearGradient6512);stroke-width:1.55319393;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 15,14.0625 C 8.9877035,14.0625 4.0789961,19.13808 4.0625,25.46875 C 4.0624722,25.479427 4.0617033,25.489349 4.0625,25.5 C 4.0625,32.787473 3.9033639,38.26012 3.9033639,44.499878 C 5.8399452,44.499878 22.452275,44.470084 28.278248,44.470084 C 29.445455,44.470084 31.431654,44.974157 31.431654,43.509594 C 31.431654,43.287851 31.231903,42.870917 30.681654,42.353344 C 30.131405,41.835771 29.308414,41.280003 28.400404,40.728344 C 26.665321,39.858723 25.411769,39.090553 24.621247,37.290844 C 24.011242,36.47675 23.731303,35.519763 23.676839,34.478344 C 23.622375,33.436925 24.107721,32.319635 24.224561,31.259594 C 24.458241,29.139511 24.96875,30.28125 24.96875,30.28125 C 24.98374,30.216952 25.004663,30.154183 25.03125,30.09375 C 25.618731,28.692346 25.9375,27.131297 25.9375,25.5 C 25.9375,19.154404 21.022436,14.0625 15,14.0625 z " + id="path5241" + sodipodi:nodetypes="cscccssccsscssc" /> + <path + style="fill:#a46bb0;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1" + d="M 3.072604,7.0864988 C 4.607952,5.4493238 7.105721,5.8854918 8.086061,6.9308478 C 9.4294869,8.3633698 9.273726,10.85472 7.738379,12.491894 C 6.404137,13.914624 4.209552,14.660821 2.866124,13.228299 C 1.522696,11.795776 1.859625,8.3799248 3.072604,7.0864988 z " + id="path3138" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.010846,0,0,1.029732,-5.552971,-15.17001)" + style="opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1" + d="M 13.257119,24.626053 C 13.257119,26.227351 11.8279,27.316574 10.863875,27.316574 C 9.5428049,27.316574 8.4706318,26.01697 8.4706318,24.415672 C 8.4706318,23.024119 9.2055946,21.514771 10.526665,21.514771 C 11.847736,21.514771 13.257119,23.360971 13.257119,24.626053 z " + id="path5157" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:#5c3566;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5162" + sodipodi:cx="10.169642" + sodipodi:cy="24.3125" + sodipodi:rx="1.2410715" + sodipodi:ry="1.2946428" + d="M 11.410714 24.3125 A 1.2410715 1.2946428 0 1 1 8.928571,24.3125 A 1.2410715 1.2946428 0 1 1 11.410714 24.3125 z" + transform="matrix(1.208633,0,0,1.158621,-6.791366,-17.66897)" /> + <path + transform="matrix(0.670792,0,0,0.486348,-3.805943,-3.90166)" + style="fill:#3b1941;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1" + d="M 11.651119,11.193815 C 13.577759,8.2509126 16.249277,11.481501 17.614226,12.804399 L 14.761306,13.747613 L 11.651119,11.193815 z " + id="path5192" + sodipodi:nodetypes="cccc" /> + <path + transform="matrix(0.851014,0,0,0.554879,-3.938174,-5.194599)" + style="fill:#3b1941;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1" + d="M 11.689238,9.8218679 C 13.591296,8.0161941 17.174576,11.994261 17.519594,13.650486 L 14.543472,12.891665 L 11.689238,9.8218679 z " + id="rect5189" + sodipodi:nodetypes="cccc" /> + <path + style="fill:#975fa3;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1" + d="M 16.371022,7.8148748 C 15.47069,6.586993 14.005993,6.9141191 13.43112,7.6981356 C 12.643332,8.7725276 12.734671,10.64104 13.635002,11.868921 C 14.417404,12.93597 15.704314,13.495617 16.492103,12.421225 C 17.279892,11.346833 17.082315,8.7849447 16.371022,7.8148748 z " + id="path3132" + sodipodi:nodetypes="csssc" /> + <path + style="fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1" + d="M 16.502957,8.5432477 C 15.827476,7.7246593 14.728576,7.9427464 14.297274,8.4654263 C 13.706229,9.1816906 13.774757,10.427368 14.450238,11.245957 C 15.037241,11.957323 16.002754,12.33042 16.593798,11.614156 C 17.184843,10.897891 17.03661,9.1899614 16.502957,8.5432477 z " + id="path3134" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:type="arc" + style="fill:#5c3566;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path3136" + sodipodi:cx="10.169642" + sodipodi:cy="24.3125" + sodipodi:rx="1.2410715" + sodipodi:ry="1.2946428" + d="M 11.410714 24.3125 A 1.2410715 1.2946428 0 1 1 8.928571,24.3125 A 1.2410715 1.2946428 0 1 1 11.410714 24.3125 z" + transform="matrix(1.153827,0,0,1.158621,3.593156,-17.66895)" /> + <rect + style="fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect3140" + width="4.4400907" + height="1" + x="8.5358553" + y="13" + rx="0.69182354" + ry="0.5" /> + <path + style="fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1.0283047;stroke-miterlimit:4;stroke-opacity:1" + d="M 6,13.893438 C 11.088512,17.243015 10.655188,12 11.431469,12 C 12.197069,12 11.699301,17.201991 16,13.895644 C 15.267157,15.102946 13.014668,17 12.06507,17 C 11.104781,17 7.190872,15.676807 6,13.893438 z " + id="path3142" + sodipodi:nodetypes="czczc" /> + <path + style="fill:url(#linearGradient3146);fill-opacity:1;stroke:none;stroke-width:1.0283047;stroke-miterlimit:4;stroke-opacity:1" + d="M 6,13.893439 C 10.740404,18.171305 10.655188,12 11.431469,12 C 12.197069,12 11.641283,17.027939 16,13.895646 C 15.267157,15.102947 13.014668,17 12.06507,17 C 11.104781,17 7.190873,15.676809 6,13.893439 z " + id="path3144" + sodipodi:nodetypes="czczc" /> + </g> +</svg>
--- a/pidgin/plugins/gevolution/gevolution.c Sat Jul 21 06:22:15 2007 +0000 +++ b/pidgin/plugins/gevolution/gevolution.c Sun Jul 22 18:17:26 2007 +0000 @@ -227,11 +227,13 @@ if (app != NULL) { char *command_line = g_strdup_printf("%s mailto:%s", app, mail); + char *quoted = g_shell_quote(command_line); g_free(app); g_free(mail); - g_spawn_command_line_async(command_line, NULL); + g_spawn_command_line_async(quoted, NULL); g_free(command_line); + g_free(quoted); } else {