# HG changeset patch # User Sadrul Habib Chowdhury # Date 1189841978 0 # Node ID e478efce3d8ba62bc6e7aa1d2b02aeb9d9d0d78f # Parent 4fdf9c1212e20d5f8e21dc45d418162ea9b12b20# Parent faf39a913c6135897e4f4ce6ea1b57d6fd107462 merge of '02b9fa9cd591c94c082a8ff02ea27fe33b278a0a' and 'dff1e047523fa59edadc01b808a8d2c2d528f47a' diff -r faf39a913c61 -r e478efce3d8b ChangeLog --- a/ChangeLog Sat Sep 15 07:39:25 2007 +0000 +++ b/ChangeLog Sat Sep 15 07:39:38 2007 +0000 @@ -1,5 +1,12 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +Version 2.2.1: + http://developer.pidgin.im/query?status=closed&milestone=2.2.1 + + Pidgin: + * When aliasing someone to an alias that already exists in the + same group, offer to merge the buddies into the same contact + Version 2.2.0 (09/13/2007): http://developer.pidgin.im/query?status=closed&milestone=2.2.0 diff -r faf39a913c61 -r e478efce3d8b configure.ac --- a/configure.ac Sat Sep 15 07:39:25 2007 +0000 +++ b/configure.ac Sat Sep 15 07:39:38 2007 +0000 @@ -46,8 +46,8 @@ m4_define([purple_lt_current], [2]) m4_define([purple_major_version], [2]) m4_define([purple_minor_version], [2]) -m4_define([purple_micro_version], [0]) -m4_define([purple_version_suffix], []) +m4_define([purple_micro_version], [1]) +m4_define([purple_version_suffix], [devel]) m4_define([purple_version], [purple_major_version.purple_minor_version.purple_micro_version]) m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix])) @@ -55,8 +55,8 @@ m4_define([gnt_lt_current], [2]) m4_define([gnt_major_version], [2]) m4_define([gnt_minor_version], [2]) -m4_define([gnt_micro_version], [0]) -m4_define([gnt_version_suffix], []) +m4_define([gnt_micro_version], [1]) +m4_define([gnt_version_suffix], [devel]) m4_define([gnt_version], [gnt_major_version.gnt_minor_version.gnt_micro_version]) m4_define([gnt_display_version], gnt_version[]m4_ifdef([gnt_version_suffix],[gnt_version_suffix])) @@ -352,13 +352,19 @@ dnl ####################################################################### if test "x$with_x" = "xyes" ; then PKG_CHECK_MODULES(X11, x11, - [AC_DEFINE(HAVE_X, 1, [Define to 1 if you have X11])], + [AC_DEFINE(HAVE_X11, 1, [Define to 1 if you have X11])], [AC_MSG_RESULT(no) - with_x=no]) + if test "x$x_incpath_add" != "x" -a "x$x_libpath_add" != "x"; then + X11_LIBS="$x_libpath_add" + X11_CFLAGS="$x_incpath_add" + else + with_x=no + fi + ]) AC_SUBST(X11_LIBS) AC_SUBST(X11_CFLAGS) fi - + dnl ####################################################################### dnl # Check for XScreenSaver dnl ####################################################################### diff -r faf39a913c61 -r e478efce3d8b libpurple/accountopt.h --- a/libpurple/accountopt.h Sat Sep 15 07:39:25 2007 +0000 +++ b/libpurple/accountopt.h Sat Sep 15 07:39:38 2007 +0000 @@ -49,8 +49,10 @@ } default_value; - gboolean masked; - + gboolean masked; /**< Whether the value entered should be + * obscured from view (for passwords and + * similar options) + */ } PurpleAccountOption; /** @@ -184,10 +186,12 @@ const char *value); /** - * Sets the masking for an account option. + * Sets the masking for an account option. Setting this to %TRUE acts + * as a hint to the UI that the option's value should be obscured from + * view, like a password. * * @param option The account option. - * @param masked The masking. + * @param masked The masking. */ void purple_account_option_set_masked(PurpleAccountOption *option, gboolean masked); @@ -282,11 +286,13 @@ const PurpleAccountOption *option); /** - * Returns the masking for an account option. + * Returns whether an option's value should be masked from view, like a + * password. If so, the UI might display each character of the option + * as a '*' (for example). * * @param option The account option. * - * @return The masking. + * @return %TRUE if the option's value should be obscured. */ gboolean purple_account_option_get_masked(const PurpleAccountOption *option); diff -r faf39a913c61 -r e478efce3d8b libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Sat Sep 15 07:39:25 2007 +0000 +++ b/libpurple/protocols/msn/msn.c Sat Sep 15 07:39:38 2007 +0000 @@ -2196,8 +2196,7 @@ prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); - /* TODO: Mark translatable as soon as 2.2.0 is released and we're not string frozen */ - option = purple_account_option_string_new("HTTP Method Server", + option = purple_account_option_string_new(_("HTTP Method Server"), "http_method_server", MSN_HTTPCONN_SERVER); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); diff -r faf39a913c61 -r e478efce3d8b libpurple/protocols/myspace/Makefile.am --- a/libpurple/protocols/myspace/Makefile.am Sat Sep 15 07:39:25 2007 +0000 +++ b/libpurple/protocols/myspace/Makefile.am Sat Sep 15 07:39:38 2007 +0000 @@ -2,7 +2,7 @@ pkgdir = $(libdir)/purple-$(PURPLE_MAJOR_VERSION) -SOURCES = markup.c \ +MSIMSOURCES = markup.c \ markup.h \ message.c \ message.h \ @@ -24,14 +24,14 @@ st = -DPURPLE_STATIC_PRPL noinst_LIBRARIES = libmyspace.a -libmyspace_a_SOURCES = $(SOURCES) +libmyspace_a_SOURCES = $(MSIMSOURCES) libmyspace_a_CFLAGS = $(AM_CFLAGS) else st = pkg_LTLIBRARIES = libmyspace.la -libmyspace_la_SOURCES = $(SOURCES) +libmyspace_la_SOURCES = $(MSIMSOURCES) libmyspace_la_LIBADD = $(GLIB_LIBS) endif diff -r faf39a913c61 -r e478efce3d8b libpurple/proxy.c --- a/libpurple/proxy.c Sat Sep 15 07:39:25 2007 +0000 +++ b/libpurple/proxy.c Sat Sep 15 07:39:38 2007 +0000 @@ -400,7 +400,7 @@ */ if (!PURPLE_PROXY_CONNECT_DATA_IS_VALID(connect_data)) return; - + purple_debug_info("proxy", "Connected to %s:%d.\n", connect_data->host, connect_data->port); @@ -1992,6 +1992,13 @@ proxy_pref_cb, NULL); purple_prefs_connect_callback(handle, "/purple/proxy/password", proxy_pref_cb, NULL); + + /* Load the initial proxy settings */ + purple_prefs_trigger_callback("/purple/proxy/type"); + purple_prefs_trigger_callback("/purple/proxy/host"); + purple_prefs_trigger_callback("/purple/proxy/port"); + purple_prefs_trigger_callback("/purple/proxy/username"); + purple_prefs_trigger_callback("/purple/proxy/password"); } void diff -r faf39a913c61 -r e478efce3d8b libpurple/status.c --- a/libpurple/status.c Sat Sep 15 07:39:25 2007 +0000 +++ b/libpurple/status.c Sat Sep 15 07:39:38 2007 +0000 @@ -1668,6 +1668,14 @@ purple_prefs_connect_callback(handle, "/purple/status/scores/offline_msg", score_pref_changed_cb, GINT_TO_POINTER(SCORE_OFFLINE_MESSAGE)); + + purple_prefs_trigger_callback("/purple/status/scores/offline"); + purple_prefs_trigger_callback("/purple/status/scores/available"); + purple_prefs_trigger_callback("/purple/status/scores/invisible"); + purple_prefs_trigger_callback("/purple/status/scores/away"); + purple_prefs_trigger_callback("/purple/status/scores/extended_away"); + purple_prefs_trigger_callback("/purple/status/scores/idle"); + purple_prefs_trigger_callback("/purple/status/scores/offline_msg"); } void diff -r faf39a913c61 -r e478efce3d8b pidgin.spec.in --- a/pidgin.spec.in Sat Sep 15 07:39:25 2007 +0000 +++ b/pidgin.spec.in Sat Sep 15 07:39:38 2007 +0000 @@ -363,8 +363,6 @@ %{_bindir}/pidgin %{_datadir}/pixmaps/pidgin %{_datadir}/icons/hicolor/*/apps/pidgin.* -%dir %{_datadir}/sounds/pidgin -%{_datadir}/sounds/pidgin/* %{_datadir}/applications/* %{_sysconfdir}/gconf/schemas/purple.schemas @@ -374,6 +372,8 @@ %{_libdir}/libpurple.so.* %dir %{_libdir}/purple-2 +%{_datadir}/purple +%{_datadir}/sounds/purple %attr(755, root, root) %{perl_vendorarch}/Purple.pm %attr(755, root, root) %{perl_vendorarch}/auto/Purple @@ -427,7 +427,7 @@ %endif %if 0%{?_with_mono:1} -%files libpurple-mono +%files -n libpurple-mono %defattr(-, root, root) %{_libdir}/purple-2/mono.so @@ -457,6 +457,9 @@ %endif %changelog +* Fri Sep 14 2007 Stu Tomlinson +- Fix spec file for moved sounds & new CA certificates + * Thu Jul 12 2007 Stu Tomlinson - Don't hardcode silc header locations, rely on pkg-config for those, because I think I broke non-pkg-config detection of older silc diff -r faf39a913c61 -r e478efce3d8b pidgin/gtkblist.c --- a/pidgin/gtkblist.c Sat Sep 15 07:39:25 2007 +0000 +++ b/pidgin/gtkblist.c Sat Sep 15 07:39:38 2007 +0000 @@ -137,6 +137,7 @@ static void redo_buddy_list(PurpleBuddyList *list, gboolean remove, gboolean rerender); static void pidgin_blist_collapse_contact_cb(GtkWidget *w, PurpleBlistNode *node); static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded); +static void pidgin_blist_expand_contact_cb(GtkWidget *w, PurpleBlistNode *node); struct _pidgin_blist_node { GtkTreeRowReference *row; @@ -394,6 +395,102 @@ } #endif +static void +gtk_blist_do_personize(GList *merges) +{ + PurpleBlistNode *contact = NULL; + int max = 0; + GList *tmp; + + /* First, we find the contact to merge the rest of the buddies into. + * This will be the contact with the most buddies in it; ties are broken + * by which contact is higher in the list + */ + for (tmp = merges; tmp; tmp = tmp->next) { + PurpleBlistNode *node = tmp->data; + PurpleBlistNode *b; + int i = 0; + + if (node->type == PURPLE_BLIST_BUDDY_NODE) + node = node->parent; + + if (node->type != PURPLE_BLIST_CONTACT_NODE) + continue; + + + for (b = node->child; b; b = b->next) + i++; + if (i > max) { + contact = node; + max = i; + } + } + + if (contact == NULL) + return; + + /* Merge all those buddies into this contact */ + for (tmp = merges; tmp; tmp = tmp->next) { + PurpleBlistNode *node = tmp->data; + if (node->type == PURPLE_BLIST_BUDDY_NODE) + node = node->parent; + + if (node == contact) + continue; + + purple_blist_merge_contact(node, contact); + } + + /* And show the expanded contact, so the people know what's going on */ + pidgin_blist_expand_contact_cb(NULL, contact); + g_list_free(merges); +} + +static void +gtk_blist_auto_personize(PurpleBlistNode *group, const char *alias) +{ + PurpleBlistNode *contact; + PurpleBlistNode *buddy; + GList *merges = NULL; + int i = 0; + char *a = g_utf8_casefold(alias, -1); + char *msg; + + for (contact = group->child; contact; contact = contact->next) { + char *node_alias; + if (contact->type != PURPLE_BLIST_CONTACT_NODE) + continue; + + node_alias = g_utf8_casefold(purple_contact_get_alias(contact), -1); + if (node_alias && !g_utf8_collate(node_alias, a)) { + merges = g_list_append(merges, contact); + i++; + g_free(node_alias); + continue; + } + g_free(node_alias); + + for (buddy = contact->child; buddy; buddy = buddy->next) { + if (buddy->type != PURPLE_BLIST_BUDDY_NODE) + continue; + + node_alias = g_utf8_casefold(purple_buddy_get_alias(buddy), -1); + if (node_alias && !g_utf8_collate(node_alias, a)) { + merges = g_list_append(merges, buddy); + i++; + } + g_free(node_alias); + } + } + g_free(a); + + msg = g_strdup_printf(ngettext("You can't merge one contact. That doesn't make any sense. You should never see this message ever", "You currently have %d contacts named %s. Would you like to merge them?", i), i, alias); + if (i > 1) + purple_request_action(NULL, NULL, msg, _("Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. " + "You can separate them again by choosing 'Expand' from the contact's context menu"), 0, NULL, NULL, NULL, + merges, 2, _("_Merge"), PURPLE_CALLBACK(gtk_blist_do_personize), _("_Cancel"), PURPLE_CALLBACK(g_list_free)); +} + static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1, char *arg2, PurpleBuddyList *list) { @@ -420,13 +517,14 @@ PurpleContact *contact = (PurpleContact *)node; struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data; - if (contact->alias || gtknode->contact_expanded) + if (contact->alias || gtknode->contact_expanded) { purple_blist_alias_contact(contact, arg2); - else - { + gtk_blist_auto_personize(node->parent, arg2); + } else { PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact); purple_blist_alias_buddy(buddy, arg2); serv_alias_buddy(buddy); + gtk_blist_auto_personize(node->parent, arg2); } } break; @@ -434,6 +532,7 @@ case PURPLE_BLIST_BUDDY_NODE: purple_blist_alias_buddy((PurpleBuddy*)node, arg2); serv_alias_buddy((PurpleBuddy *)node); + gtk_blist_auto_personize(node->parent->parent, arg2); break; case PURPLE_BLIST_GROUP_NODE: dest = purple_find_group(arg2); @@ -2264,18 +2363,19 @@ if (prpl_info && prpl_info->icon_spec.scale_rules & PURPLE_ICON_SCALE_DISPLAY) purple_buddy_icon_get_scale_size(&prpl_info->icon_spec, &scale_width, &scale_height); - if (scaled) { + if (scaled || scale_height > 200 || scale_width > 200) { + float scale_size = scaled ? 32.0 : 200.0; if(scale_height > scale_width) { - scale_width = 32.0 * (double)scale_width / (double)scale_height; - scale_height = 32; + scale_width = scale_size * (double)scale_width / (double)scale_height; + scale_height = scale_size; } else { - scale_height = 32.0 * (double)scale_height / (double)scale_width; - scale_width = 32; + scale_height = scale_size * (double)scale_height / (double)scale_width; + scale_width = scale_size; } - ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32); + ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, scale_size, scale_size); gdk_pixbuf_fill(ret, 0x00000000); - gdk_pixbuf_scale(buf, ret, (32-scale_width)/2, (32-scale_height)/2, scale_width, scale_height, (32-scale_width)/2, (32-scale_height)/2, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR); + gdk_pixbuf_scale(buf, ret, (scale_size-scale_width)/2, (scale_size-scale_height)/2, scale_width, scale_height, (scale_size-scale_width)/2, (scale_size-scale_height)/2, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR); if (pidgin_gdk_pixbuf_is_opaque(ret)) pidgin_gdk_pixbuf_make_round(ret); } else { diff -r faf39a913c61 -r e478efce3d8b pidgin/gtkdialogs.c --- a/pidgin/gtkdialogs.c Sat Sep 15 07:39:25 2007 +0000 +++ b/pidgin/gtkdialogs.c Sat Sep 15 07:39:38 2007 +0000 @@ -365,7 +365,7 @@ filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "logo.png", NULL); pixbuf = gdk_pixbuf_new_from_file(filename, NULL); g_free(filename); -#ifdef 0 /* Don't versionize the logo when the logo has the version in it */ +#if 0 /* Don't versionize the logo when the logo has the version in it */ pidgin_logo_versionize(&pixbuf, logo); #endif gtk_widget_destroy(logo); diff -r faf39a913c61 -r e478efce3d8b pidgin/gtkimhtmltoolbar.c --- a/pidgin/gtkimhtmltoolbar.c Sat Sep 15 07:39:25 2007 +0000 +++ b/pidgin/gtkimhtmltoolbar.c Sat Sep 15 07:39:38 2007 +0000 @@ -739,11 +739,11 @@ while (it != NULL) { it_tmp = it; - gtk_box_pack_start(GTK_BOX(line), it->button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(line), it->button, FALSE, FALSE, 0); gtk_widget_show(it->button); line_width += it->width; if (line_width >= max_line_width) { - gtk_box_pack_start(GTK_BOX(smiley_table), line, FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(smiley_table), line, FALSE, FALSE, 0); line = gtk_hbox_new(FALSE, 0); line_width = 0; col = 0; diff -r faf39a913c61 -r e478efce3d8b pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Sat Sep 15 07:39:25 2007 +0000 +++ b/pidgin/gtkprefs.c Sat Sep 15 07:39:38 2007 +0000 @@ -1093,7 +1093,7 @@ const char *proxy = value; if (strcmp(proxy, "none") && strcmp(proxy, "envvar")) - gtk_widget_show_all(frame); + gtk_widget_show_all(frame); else gtk_widget_hide(frame); }