# HG changeset patch # User Mark Doliner # Date 1177314252 0 # Node ID cf62255b0a74cc0d8d7cf43ec816809e9887ead8 # Parent a32325c041581d1064ff05c2218b7b3666b49d02# Parent 6349d702bab6dfe3b53d4c26554e4edd263b4b2e merge of 'b2ed97746412540812181f94bcb3e2f077321052' and 'e3a16be06e623901a0b1943a8dd9fa206d02874f' diff -r a32325c04158 -r cf62255b0a74 configure.ac --- a/configure.ac Mon Apr 23 07:03:53 2007 +0000 +++ b/configure.ac Mon Apr 23 07:44:12 2007 +0000 @@ -1953,6 +1953,8 @@ pidgin/pixmaps/toolbar/Makefile pidgin/pixmaps/toolbar/16/Makefile pidgin/pixmaps/toolbar/16/scalable/Makefile + pidgin/pixmaps/toolbar/22/Makefile + pidgin/pixmaps/toolbar/22/scalable/Makefile pidgin/pixmaps/tray/Makefile pidgin/pixmaps/tray/16/Makefile pidgin/pixmaps/tray/22/Makefile diff -r a32325c04158 -r cf62255b0a74 doc/pidgin-arch.fig --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/pidgin-arch.fig Mon Apr 23 07:44:12 2007 +0000 @@ -0,0 +1,141 @@ +#FIG 3.2 Produced by xfig version 3.2.5-alpha5 +Landscape +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 1 0 2400.000 -4500.000 6900 1500 4500 2700 2400 3000 + 1 1 1.00 60.00 120.00 +6 4800 825 6300 1275 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4800 825 6300 825 6300 1275 4800 1275 4800 825 +4 0 0 50 -1 0 12 0.0000 4 135 1050 5025 1125 Event Hooks\001 +-6 +6 525 375 6300 675 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 525 375 6300 375 6300 675 525 675 525 375 +4 0 0 50 -1 0 12 0.0000 4 135 1590 2700 600 User Interface Code\001 +-6 +6 4800 2925 6300 3375 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4800 2925 6300 2925 6300 3375 4800 3375 4800 2925 +4 0 0 50 -1 0 12 0.0000 4 135 1050 5025 3225 Event Hooks\001 +-6 +6 300 3900 2400 6300 +6 600 4800 2100 5250 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 600 4800 2100 4800 2100 5250 600 5250 600 4800 +4 0 0 50 -1 0 12 0.0000 4 180 1185 750 5100 PrplInfo Struct\001 +-6 +6 525 5925 2175 6225 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 525 6225 2175 6225 2175 5925 525 5925 525 6225 +4 0 0 50 -1 0 12 0.0000 4 135 1170 750 6150 Protocol Code\001 +-6 +6 300 4500 2400 6300 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 2400 6300 2400 4500 300 4500 300 6300 2400 6300 +4 0 0 50 -1 0 12 0.0000 4 180 1275 750 5625 Protocol Plugin\001 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 1050 4500 1050 3900 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 1350 4200 1350 4800 +-6 +6 3000 1350 4500 1800 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3000 1350 4500 1350 4500 1800 3000 1800 3000 1350 +4 0 0 50 -1 0 12 0.0000 4 135 810 3300 1650 Callbacks\001 +-6 +6 7200 1425 8700 1875 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 7200 1425 8700 1425 8700 1875 7200 1875 7200 1425 +4 0 0 50 -1 0 12 0.0000 4 135 810 7500 1725 Callbacks\001 +-6 +6 7200 3525 8700 3975 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 7200 3525 8700 3525 8700 3975 7200 3975 7200 3525 +4 0 0 50 -1 0 12 0.0000 4 135 810 7500 3825 Callbacks\001 +-6 +6 2100 3900 4800 6300 +6 3000 4800 4500 5250 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3000 4800 4500 4800 4500 5250 3000 5250 3000 4800 +4 0 0 50 -1 0 12 0.0000 4 180 1185 3150 5100 PrplInfo Struct\001 +-6 +6 2925 5925 4575 6225 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2925 6225 4575 6225 4575 5925 2925 5925 2925 6225 +4 0 0 50 -1 0 12 0.0000 4 135 1170 3150 6150 Protocol Code\001 +-6 +6 2700 4500 4800 6300 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 4800 6300 4800 4500 2700 4500 2700 6300 4800 6300 +4 0 0 50 -1 0 12 0.0000 4 180 1275 3150 5625 Protocol Plugin\001 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3750 4200 3750 4800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3000 4500 2100 3900 +-6 +6 600 2700 2400 3900 +6 900 3075 2025 3525 +4 0 0 50 -1 0 12 0.0000 4 180 975 975 3225 Pidgin Core\001 +4 0 0 50 -1 0 12 0.0000 4 180 1110 900 3450 Functionality\001 +-6 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 600 2700 2400 2700 2400 3900 600 3900 600 2700 +-6 +6 4800 1350 6300 1800 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4800 1350 6300 1350 6300 1800 4800 1800 4800 1350 +4 0 0 50 -1 0 12 0.0000 4 180 1365 4875 1650 UiOps Structures\001 +-6 +6 6900 2400 9000 4200 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 9000 4200 9000 2400 6900 2400 6900 4200 9000 4200 +4 0 0 50 -1 0 12 0.0000 4 180 975 7500 2925 Core Plugin\001 +-6 +6 6900 300 9000 2100 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 9000 2100 9000 300 6900 300 6900 2100 9000 2100 +4 0 0 50 -1 0 12 0.0000 4 180 780 7500 825 UI Plugin\001 +-6 +6 5700 4950 8625 5550 +4 0 0 50 -1 0 16 0.0000 4 180 1965 6150 5175 A Brief Overview\001 +4 0 0 50 -1 0 16 0.0000 4 240 2895 5700 5475 Of the Pidgin Architecture\001 +-6 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 6600 2100 6600 300 300 300 300 2100 6600 2100 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 5550 2400 5550 1800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4200 1800 5100 2925 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 1050 2100 1050 2700 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 6600 4200 6600 2400 300 2400 300 4200 6600 4200 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 6900 3600 2400 3600 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7200 1575 6300 1050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7200 1725 6300 3000 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7200 3750 6300 3150 +4 1 0 50 -1 0 12 0.0000 4 135 1110 1125 1275 User Interface\001 +4 0 0 50 -1 0 12 0.0000 4 135 390 3225 3375 Core\001 diff -r a32325c04158 -r cf62255b0a74 finch/gntplugin.c --- a/finch/gntplugin.c Mon Apr 23 07:03:53 2007 +0000 +++ b/finch/gntplugin.c Mon Apr 23 07:44:12 2007 +0000 @@ -30,9 +30,11 @@ #include #include "notify.h" +#include "request.h" #include "finch.h" #include "gntplugin.h" +#include "gntrequest.h" static struct { @@ -44,6 +46,8 @@ static GHashTable *confwins; +static void process_pref_frame(PurplePluginPrefFrame *frame); + static void decide_conf_button(PurplePlugin *plugin) { @@ -195,8 +199,7 @@ else if (plugin->info->prefs_info && plugin->info->prefs_info->get_plugin_pref_frame) { - purple_notify_info(plugin, _("..."), - _("Still need to do something about this."), NULL); + process_pref_frame(plugin->info->prefs_info->get_plugin_pref_frame(plugin)); return; } else @@ -277,3 +280,59 @@ decide_conf_button(gnt_tree_get_selection_data(GNT_TREE(tree))); } +static void +process_pref_frame(PurplePluginPrefFrame *frame) +{ + PurpleRequestField *field; + PurpleRequestFields *fields; + PurpleRequestFieldGroup *group = NULL; + GList *prefs; + + fields = purple_request_fields_new(); + + for (prefs = purple_plugin_pref_frame_get_prefs(frame); prefs; prefs = prefs->next) { + PurplePluginPref *pref = prefs->data; + const char *name = purple_plugin_pref_get_name(pref); + const char *label = purple_plugin_pref_get_label(pref); + if(name == NULL) { + if(label == NULL) + continue; + + if(purple_plugin_pref_get_type(pref) == PURPLE_PLUGIN_PREF_INFO) { + field = purple_request_field_label_new("*", purple_plugin_pref_get_label(pref)); + purple_request_field_group_add_field(group, field); + } else { + group = purple_request_field_group_new(label); + purple_request_fields_add_group(fields, group); + } + continue; + } + + field = NULL; + switch(purple_prefs_get_type(name)) { + case PURPLE_PREF_BOOLEAN: + field = purple_request_field_bool_new(name, label, purple_prefs_get_bool(name)); + break; + case PURPLE_PREF_INT: + field = purple_request_field_int_new(name, label, purple_prefs_get_int(name)); + break; + case PURPLE_PREF_STRING: + field = purple_request_field_string_new(name, label, purple_prefs_get_string(name), + purple_plugin_pref_get_format_type(pref) & PURPLE_STRING_FORMAT_TYPE_MULTILINE); + break; + default: + break; + } + if (field) { + if (group == NULL) { + group = purple_request_field_group_new(_("Preferences")); + purple_request_fields_add_group(fields, group); + } + purple_request_field_group_add_field(group, field); + } + } + + purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, + _("Save"), G_CALLBACK(finch_request_save_in_prefs), _("Cancel"), NULL, NULL); +} + diff -r a32325c04158 -r cf62255b0a74 finch/gntplugin.h --- a/finch/gntplugin.h Mon Apr 23 07:03:53 2007 +0000 +++ b/finch/gntplugin.h Mon Apr 23 07:44:12 2007 +0000 @@ -28,6 +28,7 @@ #include #include +#include #include diff -r a32325c04158 -r cf62255b0a74 finch/gntprefs.c --- a/finch/gntprefs.c Mon Apr 23 07:03:53 2007 +0000 +++ b/finch/gntprefs.c Mon Apr 23 07:44:12 2007 +0000 @@ -198,57 +198,7 @@ static void save_cb(void *data, PurpleRequestFields *allfields) { - GList *list; - for (list = purple_request_fields_get_groups(allfields); list; list = list->next) - { - PurpleRequestFieldGroup *group = list->data; - GList *fields = purple_request_field_group_get_fields(group); - - for (; fields ; fields = fields->next) - { - PurpleRequestField *field = fields->data; - PurpleRequestFieldType type = purple_request_field_get_type(field); - PurplePrefType pt; - gpointer val = NULL; - const char *id = purple_request_field_get_id(field); - - switch (type) - { - case PURPLE_REQUEST_FIELD_LIST: - val = purple_request_field_list_get_selected(field)->data; - break; - case PURPLE_REQUEST_FIELD_BOOLEAN: - val = GINT_TO_POINTER(purple_request_field_bool_get_value(field)); - break; - case PURPLE_REQUEST_FIELD_INTEGER: - val = GINT_TO_POINTER(purple_request_field_int_get_value(field)); - break; - case PURPLE_REQUEST_FIELD_STRING: - val = (gpointer)purple_request_field_string_get_value(field); - break; - default: - break; - } - - pt = purple_prefs_get_type(id); - switch (pt) - { - case PURPLE_PREF_INT: - if (type == PURPLE_REQUEST_FIELD_LIST) /* Lists always return string */ - sscanf(val, "%ld", (long int *)&val); - purple_prefs_set_int(id, GPOINTER_TO_INT(val)); - break; - case PURPLE_PREF_BOOLEAN: - purple_prefs_set_bool(id, GPOINTER_TO_INT(val)); - break; - case PURPLE_PREF_STRING: - purple_prefs_set_string(id, val); - break; - default: - break; - } - } - } + finch_request_save_in_prefs(data, allfields); free_strings(); } diff -r a32325c04158 -r cf62255b0a74 finch/gntrequest.c --- a/finch/gntrequest.c Mon Apr 23 07:03:53 2007 +0000 +++ b/finch/gntrequest.c Mon Apr 23 07:44:12 2007 +0000 @@ -139,6 +139,11 @@ finch_close_request(PurpleRequestType type, gpointer ui_handle) { GntWidget *widget = GNT_WIDGET(ui_handle); + if (type == PURPLE_REQUEST_FIELDS) { + PurpleRequestFields *fields = g_object_get_data(G_OBJECT(widget), "fields"); + purple_request_fields_destroy(fields); + } + while (widget->parent) widget = widget->parent; gnt_widget_destroy(widget); @@ -243,7 +248,7 @@ gpointer data = g_object_get_data(G_OBJECT(button), "activate-userdata"); GList *list; - /* Update the data of the fields. GtkPurple does this differently. Instead of + /* Update the data of the fields. Pidgin does this differently. Instead of * updating the fields at the end like here, it updates the appropriate field * instantly whenever a change is made. That allows it to make sure the * 'required' fields are entered before the user can hit OK. It's not the case @@ -532,6 +537,8 @@ gnt_box_add_widget(GNT_BOX(window), box); gnt_widget_show(window); + + g_object_set_data(G_OBJECT(window), "fields", allfields); return window; } @@ -620,3 +627,54 @@ { } +void finch_request_save_in_prefs(gpointer null, PurpleRequestFields *allfields) +{ + GList *list; + for (list = purple_request_fields_get_groups(allfields); list; list = list->next) { + PurpleRequestFieldGroup *group = list->data; + GList *fields = purple_request_field_group_get_fields(group); + + for (; fields ; fields = fields->next) { + PurpleRequestField *field = fields->data; + PurpleRequestFieldType type = purple_request_field_get_type(field); + PurplePrefType pt; + gpointer val = NULL; + const char *id = purple_request_field_get_id(field); + + switch (type) { + case PURPLE_REQUEST_FIELD_LIST: + val = purple_request_field_list_get_selected(field)->data; + break; + case PURPLE_REQUEST_FIELD_BOOLEAN: + val = GINT_TO_POINTER(purple_request_field_bool_get_value(field)); + break; + case PURPLE_REQUEST_FIELD_INTEGER: + val = GINT_TO_POINTER(purple_request_field_int_get_value(field)); + break; + case PURPLE_REQUEST_FIELD_STRING: + val = (gpointer)purple_request_field_string_get_value(field); + break; + default: + break; + } + + pt = purple_prefs_get_type(id); + switch (pt) { + case PURPLE_PREF_INT: + if (type == PURPLE_REQUEST_FIELD_LIST) /* Lists always return string */ + sscanf(val, "%ld", (long int *)&val); + purple_prefs_set_int(id, GPOINTER_TO_INT(val)); + break; + case PURPLE_PREF_BOOLEAN: + purple_prefs_set_bool(id, GPOINTER_TO_INT(val)); + break; + case PURPLE_PREF_STRING: + purple_prefs_set_string(id, val); + break; + default: + break; + } + } + } +} + diff -r a32325c04158 -r cf62255b0a74 finch/gntrequest.h --- a/finch/gntrequest.h Mon Apr 23 07:03:53 2007 +0000 +++ b/finch/gntrequest.h Mon Apr 23 07:44:12 2007 +0000 @@ -49,6 +49,12 @@ */ void finch_request_uninit(void); +/** + * Save the request fields in preferences where the id attribute of each field is the + * id of a preference. + */ +void finch_request_save_in_prefs(gpointer null, PurpleRequestFields *fields); + /*@}*/ #endif diff -r a32325c04158 -r cf62255b0a74 finch/plugins/gntgf.c --- a/finch/plugins/gntgf.c Mon Apr 23 07:03:53 2007 +0000 +++ b/finch/plugins/gntgf.c Mon Apr 23 07:44:12 2007 +0000 @@ -111,6 +111,15 @@ } #ifdef HAVE_X11 +static int +error_handler(Display *dpy, XErrorEvent *error) +{ + char buffer[1024]; + XGetErrorText(dpy, error->error_code, buffer, sizeof(buffer)); + purple_debug_error("gntgf", "Could not set urgent to the window: %s.\n", buffer); + return 0; +} + static void urgent() { @@ -130,9 +139,14 @@ if (dpy == NULL) return; + XSetErrorHandler(error_handler); hints = XGetWMHints(dpy, id); - hints->flags|=XUrgencyHint; - XSetWMHints(dpy, id, hints); + if (hints) { + hints->flags|=XUrgencyHint; + XSetWMHints(dpy, id, hints); + XFree(hints); + } + XSetErrorHandler(NULL); XFlush(dpy); XCloseDisplay(dpy); diff -r a32325c04158 -r cf62255b0a74 libpurple/Makefile.mingw --- a/libpurple/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -13,7 +13,7 @@ ## ## INCLUDE PATHS ## -INCLUDE_PATHS = \ +INCLUDE_PATHS += \ -I$(PURPLE_TOP) \ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) \ @@ -22,7 +22,7 @@ -I$(GTK_TOP)/lib/glib-2.0/include \ -I$(LIBXML2_TOP)/include -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(LIBXML2_TOP)/lib ## diff -r a32325c04158 -r cf62255b0a74 libpurple/plugins/Makefile.mingw --- a/libpurple/plugins/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/plugins/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -25,7 +25,7 @@ -I$(PURPLE_TOP) \ -I$(PURPLE_TOP)/win32 -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) ## diff -r a32325c04158 -r cf62255b0a74 libpurple/plugins/perl/Makefile.mingw --- a/libpurple/plugins/perl/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/plugins/perl/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -24,7 +24,7 @@ -I$(GTK_TOP)/lib/glib-2.0/include \ -I$(PERL_LIB_TOP)/CORE -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L$(PERL_LIB_TOP) diff -r a32325c04158 -r cf62255b0a74 libpurple/plugins/perl/common/Makefile.mingw --- a/libpurple/plugins/perl/common/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/plugins/perl/common/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -17,7 +17,7 @@ ## ## INCLUDE PATHS ## -INCLUDE_PATHS = -I. \ +INCLUDE_PATHS += -I. \ -I$(PIDGIN_TREE_TOP) \ -I$(PURPLE_TOP) \ -I$(GTK_TOP)/include \ @@ -25,7 +25,7 @@ -I$(GTK_TOP)/lib/glib-2.0/include \ -I$(PERL_LIB_TOP)/CORE -LIB_PATHS = -L$(PERL_LIB_TOP) \ +LIB_PATHS += -L$(PERL_LIB_TOP) \ -L$(PERL_PLUGIN_TOP) \ -L$(PURPLE_TOP) \ -L$(GTK_TOP)/lib diff -r a32325c04158 -r cf62255b0a74 libpurple/plugins/ssl/Makefile.mingw --- a/libpurple/plugins/ssl/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/plugins/ssl/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -36,7 +36,7 @@ -I$(NSS_TOP)/include \ -I$(NSPR_TOP)/include -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L$(NSS_TOP)/lib \ -L$(NSPR_TOP)/lib diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/bonjour/Makefile.mingw --- a/libpurple/protocols/bonjour/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/bonjour/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -33,7 +33,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(HOWL_TOP)/lib \ -L$(PURPLE_TOP) diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/gg/Makefile.mingw --- a/libpurple/protocols/gg/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/gg/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -33,7 +33,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ ## diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/irc/Makefile.mingw --- a/libpurple/protocols/irc/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/irc/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -31,7 +31,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) ## diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/jabber/Makefile.mingw --- a/libpurple/protocols/jabber/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/jabber/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -34,7 +34,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(LIBXML2_TOP)/lib \ -L$(PURPLE_TOP) \ -L. diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/jabber/auth.c --- a/libpurple/protocols/jabber/auth.c Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/jabber/auth.c Mon Apr 23 07:44:12 2007 +0000 @@ -831,7 +831,7 @@ { const char *ns = xmlnode_get_namespace(packet); #ifdef HAVE_CYRUS_SASL - const int *x; + const void *x; #endif if(!ns || strcmp(ns, "urn:ietf:params:xml:ns:xmpp-sasl")) { @@ -865,9 +865,9 @@ } /* If we've negotiated a security layer, we need to enable it */ sasl_getprop(js->sasl, SASL_SSF, &x); - if (*x > 0) { + if (*(int *)x > 0) { sasl_getprop(js->sasl, SASL_MAXOUTBUF, &x); - js->sasl_maxbuf = *x; + js->sasl_maxbuf = *(int *)x; } #endif diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/msn/Makefile.mingw --- a/libpurple/protocols/msn/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/msn/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -31,7 +31,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) ## diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/novell/Makefile.mingw --- a/libpurple/protocols/novell/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/novell/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -31,7 +31,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) ## diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/oscar/Makefile.mingw --- a/libpurple/protocols/oscar/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/oscar/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -33,7 +33,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L. diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/oscar/family_feedbag.c --- a/libpurple/protocols/oscar/family_feedbag.c Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/oscar/family_feedbag.c Mon Apr 23 07:44:12 2007 +0000 @@ -132,8 +132,21 @@ do { new->gid += 0x0001; for (cur=*list, i=0; ((cur) && (!i)); cur=cur->next) - if ((cur->type == AIM_SSI_TYPE_GROUP) && (cur->gid == new->gid)) + if ((cur->type == AIM_SSI_TYPE_GROUP) && (cur->gid == new->gid)) { i=1; + break; + } + } while (i); + } + } else if (new->gid == 0x0000) { + if (new->bid == 0xFFFF) { + do { + new->bid += 0x0001; + for (cur=*list, i=0; ((cur) && (!i)); cur=cur->next) + if (((cur->bid == new->bid) && (cur->gid == new->gid)) || (cur->gid == new->bid)) { + i=1; + break; + } } while (i); } } else { @@ -141,8 +154,10 @@ do { new->bid += 0x0001; for (cur=*list, i=0; ((cur) && (!i)); cur=cur->next) - if ((cur->bid == new->bid) && (cur->gid == new->gid)) + if ((cur->bid == new->bid) && (cur->gid == new->gid)) { i=1; + break; + } } while (i); } } @@ -550,8 +565,10 @@ /* We're out of stuff to do, so tell the AIM servers we're done and exit */ if (!od->ssi.pending) { - aim_ssi_modend(od); - od->ssi.in_transaction = FALSE; + if (od->ssi.in_transaction) { + aim_ssi_modend(od); + od->ssi.in_transaction = FALSE; + } return 0; } @@ -764,7 +781,7 @@ int aim_ssi_addpermit(OscarData *od, const char *name) { - if (!od || !name) + if (!od || !name || !od->ssi.received_data) return -EINVAL; /* Make sure the master group exists */ @@ -790,7 +807,7 @@ int aim_ssi_adddeny(OscarData *od, const char *name) { - if (!od || !name) + if (!od || !name || !od->ssi.received_data) return -EINVAL; /* Make sure the master group exists */ @@ -1040,7 +1057,7 @@ { struct aim_ssi_item *tmp; - if (!od) + if (!od || !od->ssi.received_data) return -EINVAL; /* Find the PDINFO item, or add it if it does not exist */ @@ -1072,12 +1089,12 @@ * @param iconcsumlen Length of the MD5 checksum given above. Should be 0x10 bytes. * @return Return 0 if no errors, otherwise return the error number. */ -int aim_ssi_seticon(OscarData *od, const guint8 *iconsum, guint16 iconsumlen) +int aim_ssi_seticon(OscarData *od, const guint8 *iconsum, guint8 iconsumlen) { struct aim_ssi_item *tmp; guint8 *csumdata; - if (!od || !iconsum || !iconsumlen) + if (!od || !iconsum || !iconsumlen || !od->ssi.received_data) return -EINVAL; /* Find the ICONINFO item, or add it if it does not exist */ @@ -1091,7 +1108,8 @@ /* Need to add the 0x00d5 TLV to the TLV chain */ csumdata = (guint8 *)malloc((iconsumlen+2)*sizeof(guint8)); - aimutil_put16(&csumdata[0], iconsumlen); + aimutil_put8(&csumdata[0], 0x00); + aimutil_put8(&csumdata[1], iconsumlen); memcpy(&csumdata[2], iconsum, iconsumlen); aim_tlvlist_replace_raw(&tmp->data, 0x00d5, (iconsumlen+2) * sizeof(guint8), csumdata); free(csumdata); @@ -1134,7 +1152,7 @@ int aim_ssi_setpresence(OscarData *od, guint32 presence) { struct aim_ssi_item *tmp; - if (!od) + if (!od || !od->ssi.received_data) return -EINVAL; /* Find the PRESENCEPREFS item, or add it if it does not exist */ diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/oscar/family_locate.c --- a/libpurple/protocols/oscar/family_locate.c Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/oscar/family_locate.c Mon Apr 23 07:44:12 2007 +0000 @@ -294,6 +294,21 @@ cur->status_len = userinfo->status_len; } + if (userinfo->itmsurl != NULL) { + free(cur->itmsurl); + free(cur->itmsurl_encoding); + if (userinfo->itmsurl_len > 0) { + cur->itmsurl = (char *)malloc(userinfo->itmsurl_len); + memcpy(cur->itmsurl, userinfo->itmsurl, userinfo->itmsurl_len); + } else + cur->itmsurl = NULL; + if (userinfo->itmsurl_encoding != NULL) + cur->itmsurl_encoding = strdup(userinfo->itmsurl_encoding); + else + cur->itmsurl_encoding = NULL; + cur->itmsurl_len = userinfo->itmsurl_len; + } + if (userinfo->away != NULL) { free(cur->away); free(cur->away_encoding); @@ -577,6 +592,8 @@ free(info->info_encoding); free(info->status); free(info->status_encoding); + free(info->itmsurl); + free(info->itmsurl_encoding); free(info->away); free(info->away_encoding); } @@ -841,6 +858,28 @@ } } break; + case 0x0009: { /* An iTunes Music Store link */ + free(outinfo->itmsurl); + free(outinfo->itmsurl_encoding); + if (length2 >= 4) { + outinfo->itmsurl_len = byte_stream_get16(bs); + outinfo->itmsurl = byte_stream_getstr(bs, outinfo->itmsurl_len); + if (byte_stream_get16(bs) == 0x0001) { + /* We have an encoding */ + byte_stream_get16(bs); + outinfo->itmsurl_encoding = byte_stream_getstr(bs, byte_stream_get16(bs)); + } else { + /* No explicit encoding, client should use UTF-8 */ + outinfo->itmsurl_encoding = NULL; + } + } else { + byte_stream_advance(bs, length2); + outinfo->itmsurl_len = 0; + outinfo->itmsurl = g_strdup(""); + outinfo->itmsurl_encoding = NULL; + } + } break; + default: { byte_stream_advance(bs, length2); } break; diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.c Mon Apr 23 07:44:12 2007 +0000 @@ -1778,8 +1778,20 @@ if (have_status_message) { - purple_prpl_got_user_status(account, info->sn, status_id, - "message", message, NULL); + if ((status_id == OSCAR_STATUS_ID_AVAILABLE) && (info->itmsurl != NULL)) + { + char *itmsurl; + itmsurl = oscar_encoding_to_utf8(info->itmsurl_encoding, + info->itmsurl, info->itmsurl_len); + purple_prpl_got_user_status(account, info->sn, status_id, + "message", message, "itmsurl", itmsurl, NULL); + g_free(itmsurl); + } + else + { + purple_prpl_got_user_status(account, info->sn, status_id, + "message", message, NULL); + } g_free(message); } else @@ -2890,6 +2902,25 @@ g_free(tmp); } +#if 0 + /* + * TODO: This code is disabled because it's kind of stupid. iTunes + * doesn't run in Linux. It'd be cool if we surfaced this URL + * to Windows users, but it would be better to just linkify + * the available message, above. + */ + + /* iTunes Music Store link */ + if (userinfo->itmsurl != NULL) + { + if (userinfo->itmsurl[0] != '\0') + tmp = oscar_encoding_to_utf8(userinfo->itmsurl_encoding, + userinfo->itmsurl, userinfo->itmsurl_len); + oscar_user_info_add_pair(user_info, _("iTunes Music Store Link"), tmp); + g_free(tmp); + } +#endif + /* Away message */ if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) { tmp = oscar_encoding_extract(userinfo->away_encoding); diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/oscar/oscar.h --- a/libpurple/protocols/oscar/oscar.h Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.h Mon Apr 23 07:44:12 2007 +0000 @@ -1001,6 +1001,10 @@ char *status_encoding; guint16 status_len; + char *itmsurl; + char *itmsurl_encoding; + guint16 itmsurl_len; + char *away; char *away_encoding; guint16 away_len; @@ -1214,7 +1218,7 @@ int aim_ssi_deletelist(OscarData *od); int aim_ssi_setpermdeny(OscarData *od, guint8 permdeny, guint32 vismask); int aim_ssi_setpresence(OscarData *od, guint32 presence); -int aim_ssi_seticon(OscarData *od, const guint8 *iconsum, guint16 iconsumlen); +int aim_ssi_seticon(OscarData *od, const guint8 *iconsum, guint8 iconsumlen); int aim_ssi_delicon(OscarData *od); diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/qq/Makefile.mingw --- a/libpurple/protocols/qq/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/qq/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -31,7 +31,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = \ +LIB_PATHS += \ -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/sametime/Makefile.mingw --- a/libpurple/protocols/sametime/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/sametime/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -33,7 +33,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(MEANWHILE_TOP)/lib \ -L$(PURPLE_TOP) diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/silc/Makefile.mingw --- a/libpurple/protocols/silc/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/silc/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -34,7 +34,7 @@ -I$(PIDGIN_TREE_TOP) \ -I$(SILC_TOOLKIT)/include -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L$(SILC_TOOLKIT)/lib diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/silc/wb.c --- a/libpurple/protocols/silc/wb.c Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/silc/wb.c Mon Apr 23 07:44:12 2007 +0000 @@ -433,7 +433,7 @@ wb->proto_data = NULL; } -void silcpurple_wb_get_dimensions(PurpleWhiteboard *wb, int *width, int *height) +void silcpurple_wb_get_dimensions(const PurpleWhiteboard *wb, int *width, int *height) { SilcPurpleWb wbs = wb->proto_data; *width = wbs->width; @@ -452,7 +452,7 @@ purple_whiteboard_set_dimensions(wb, wbs->width, wbs->height); } -void silcpurple_wb_get_brush(PurpleWhiteboard *wb, int *size, int *color) +void silcpurple_wb_get_brush(const PurpleWhiteboard *wb, int *size, int *color) { SilcPurpleWb wbs = wb->proto_data; *size = wbs->brush_size; diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/silc/wb.h --- a/libpurple/protocols/silc/wb.h Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/silc/wb.h Mon Apr 23 07:44:12 2007 +0000 @@ -39,9 +39,9 @@ SilcUInt32 message_len); void silcpurple_wb_start(PurpleWhiteboard *wb); void silcpurple_wb_end(PurpleWhiteboard *wb); -void silcpurple_wb_get_dimensions(PurpleWhiteboard *wb, int *width, int *height); +void silcpurple_wb_get_dimensions(const PurpleWhiteboard *wb, int *width, int *height); void silcpurple_wb_set_dimensions(PurpleWhiteboard *wb, int width, int height); -void silcpurple_wb_get_brush(PurpleWhiteboard *wb, int *size, int *color); +void silcpurple_wb_get_brush(const PurpleWhiteboard *wb, int *size, int *color); void silcpurple_wb_set_brush(PurpleWhiteboard *wb, int size, int color); void silcpurple_wb_send(PurpleWhiteboard *wb, GList *draw_list); void silcpurple_wb_clear(PurpleWhiteboard *wb); diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/simple/Makefile.mingw --- a/libpurple/protocols/simple/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/simple/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -31,7 +31,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) ## diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/toc/Makefile.mingw --- a/libpurple/protocols/toc/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/toc/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -31,7 +31,7 @@ -I$(LIBPIDGIN_TREE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(LIBPIDGIN_TREE_TOP) ## diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/yahoo/Makefile.mingw --- a/libpurple/protocols/yahoo/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/yahoo/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -31,7 +31,7 @@ -I$(PURPLE_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) ## diff -r a32325c04158 -r cf62255b0a74 libpurple/protocols/zephyr/Makefile.mingw --- a/libpurple/protocols/zephyr/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/libpurple/protocols/zephyr/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -42,7 +42,7 @@ INCLUDE_PATHS += -I$(KRB4_TOP)/inc/krb4 endif -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) ifeq ($(USE_KRB4), true) diff -r a32325c04158 -r cf62255b0a74 pidgin/Makefile.mingw --- a/pidgin/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -31,7 +31,7 @@ -I$(GTK_TOP)/include/glib-2.0 \ -I$(GTK_TOP)/lib/glib-2.0/include -INCLUDE_PATHS = \ +INCLUDE_PATHS += \ $(PURPLE_INCLUDE_PATHS) \ -I$(PIDGIN_IDLETRACK_TOP) \ -I$(PIDGIN_TOP) \ @@ -44,7 +44,7 @@ -I$(GTKSPELL_TOP) \ -I$(ASPELL_TOP)/include -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L$(PIDGIN_TOP) \ -L$(PIDGIN_IDLETRACK_TOP) \ diff -r a32325c04158 -r cf62255b0a74 pidgin/gtkaccount.c --- a/pidgin/gtkaccount.c Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/gtkaccount.c Mon Apr 23 07:44:12 2007 +0000 @@ -229,8 +229,8 @@ if (pixbuf == NULL) { /* Show a placeholder icon */ - GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL); - pixbuf = gtk_widget_render_icon(dialog->window, PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, + GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL); + pixbuf = gtk_widget_render_icon(dialog->window, PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, icon_size, "PidginAccount"); } diff -r a32325c04158 -r cf62255b0a74 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/gtkconv.c Mon Apr 23 07:44:12 2007 +0000 @@ -2002,6 +2002,8 @@ (event->keyval == GDK_F10) || (event->keyval == GDK_Shift_L) || (event->keyval == GDK_Shift_R) || + (event->keyval == GDK_Control_L) || + (event->keyval == GDK_Control_R) || (event->keyval == GDK_Escape) || (event->keyval == GDK_Up) || (event->keyval == GDK_Down) || @@ -2205,25 +2207,25 @@ if (l) return l; filename = g_strdup_printf("%s.png", prpl); - + path = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "16", filename, NULL); pixbuf = gdk_pixbuf_new_from_file(path, NULL); if (pixbuf) l = g_list_append(l, pixbuf); g_free(path); - + path = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", filename, NULL); pixbuf = gdk_pixbuf_new_from_file(path, NULL); if (pixbuf) l = g_list_append(l, pixbuf); g_free(path); - + path = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "48", filename, NULL); pixbuf = gdk_pixbuf_new_from_file(path, NULL); if (pixbuf) l = g_list_append(l, pixbuf); g_free(path); - + g_hash_table_insert(prpl_lists, g_strdup(prpl), l); return l; } @@ -2308,7 +2310,7 @@ { PidginConversation *gtkconv; PidginWindow *win; - GList *l; + GList *l; GdkPixbuf *status = NULL; g_return_if_fail(conv != NULL); @@ -3159,7 +3161,7 @@ } if (gtkwin->menu.typing_icon == NULL) - { + { gtkwin->menu.typing_icon = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_MENU); pidgin_menu_tray_append(PIDGIN_MENU_TRAY(gtkwin->menu.tray), gtkwin->menu.typing_icon, @@ -3465,7 +3467,7 @@ pixbuf = gtk_widget_render_icon (gtkconv->tab_cont, image, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL), "GtkTreeView"); - + if (!pixbuf) return NULL; @@ -3473,6 +3475,7 @@ g_object_unref(pixbuf); if (flags && purple_conv_chat_is_user_ignored(chat, name)) { +/* TODO: the .../status/default directory isn't installed, should it be? */ filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "status", "default", "ignored.png", NULL); pixbuf = gdk_pixbuf_new_from_file(filename, NULL); g_free(filename); @@ -7848,7 +7851,7 @@ return window_list; } -static GList* +static GList* make_status_icon_list(const char *stock, GtkWidget *w) { GList *l = NULL; @@ -7863,8 +7866,8 @@ return l; } -static void -create_icon_lists(GtkWidget *w) +static void +create_icon_lists(GtkWidget *w) { available_list = make_status_icon_list(PIDGIN_STOCK_STATUS_AVAILABLE, w); busy_list = make_status_icon_list(PIDGIN_STOCK_STATUS_BUSY, w); diff -r a32325c04158 -r cf62255b0a74 pidgin/gtkstatusbox.c --- a/pidgin/gtkstatusbox.c Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/gtkstatusbox.c Mon Apr 23 07:44:12 2007 +0000 @@ -2047,9 +2047,9 @@ if (status_box->buddy_icon == NULL) { /* Show a placeholder icon */ - GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL); + GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL); status_box->buddy_icon = gtk_widget_render_icon(GTK_WIDGET(status_box), - PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, + PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, icon_size, "PidginStatusBox"); } diff -r a32325c04158 -r cf62255b0a74 pidgin/pidginstock.c --- a/pidgin/pidginstock.c Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/pidginstock.c Mon Apr 23 07:44:12 2007 +0000 @@ -161,6 +161,7 @@ { PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, { PIDGIN_STOCK_TOOLBAR_TYPING, "toolbar", "typing.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, { PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, + { PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE }, { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, diff -r a32325c04158 -r cf62255b0a74 pidgin/pidginstock.h --- a/pidgin/pidginstock.h Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/pidginstock.h Mon Apr 23 07:44:12 2007 +0000 @@ -123,6 +123,7 @@ #define PIDGIN_STOCK_TOOLBAR_TYPING "pidgin-typing" #define PIDGIN_STOCK_TOOLBAR_USER_INFO "pidgin-info" #define PIDGIN_STOCK_TOOLBAR_UNBLOCK "pidgin-unblock" +#define PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR "pidgin-select-avatar" /* Tray icons */ #define PIDGIN_STOCK_TRAY_AVAILABLE "pidgin-tray-available" diff -r a32325c04158 -r cf62255b0a74 pidgin/pixmaps/toolbar/22/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/22/Makefile.am Mon Apr 23 07:44:12 2007 +0000 @@ -0,0 +1,7 @@ +SUBDIRS = scalable + +EXTRA_DIST = select-avatar.png + +pidgintoolbarpixdir = $(datadir)/pixmaps/pidgin/toolbar/22 +pidgintoolbarpix_DATA = $(EXTRA_DIST) + diff -r a32325c04158 -r cf62255b0a74 pidgin/pixmaps/toolbar/22/Makefile.mingw --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/22/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -0,0 +1,20 @@ +# +# Makefile.mingw +# +# Description: Makefile for win32 (mingw) version of Pidgin pixmaps +# + +PIDGIN_TREE_TOP := ../../../.. +include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak + +datadir = $(PIDGIN_INSTALL_DIR) +include ./Makefile.am + +.PHONY: install + +install: + if test '$(pidgintoolbarpix_DATA)'; then \ + mkdir -p $(pidgintoolbarpixdir); \ + cp $(pidgintoolbarpix_DATA) $(pidgintoolbarpixdir); \ + fi; + diff -r a32325c04158 -r cf62255b0a74 pidgin/pixmaps/toolbar/22/scalable/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/22/scalable/Makefile.am Mon Apr 23 07:44:12 2007 +0000 @@ -0,0 +1,1 @@ +EXTRA_DIST = select-avatar.svg diff -r a32325c04158 -r cf62255b0a74 pidgin/pixmaps/toolbar/22/scalable/select-avatar.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/22/scalable/select-avatar.svg Mon Apr 23 07:44:12 2007 +0000 @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -r a32325c04158 -r cf62255b0a74 pidgin/pixmaps/toolbar/22/select-avatar.png Binary file pidgin/pixmaps/toolbar/22/select-avatar.png has changed diff -r a32325c04158 -r cf62255b0a74 pidgin/pixmaps/toolbar/Makefile.am --- a/pidgin/pixmaps/toolbar/Makefile.am Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/pixmaps/toolbar/Makefile.am Mon Apr 23 07:44:12 2007 +0000 @@ -1,1 +1,1 @@ -SUBDIRS = 16 +SUBDIRS = 16 22 diff -r a32325c04158 -r cf62255b0a74 pidgin/plugins/Makefile.mingw --- a/pidgin/plugins/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/plugins/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -33,7 +33,7 @@ -I$(PIDGIN_TOP) \ -I$(PIDGIN_TOP)/win32 -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L$(PIDGIN_TOP) diff -r a32325c04158 -r cf62255b0a74 pidgin/plugins/perl/common/Makefile.mingw --- a/pidgin/plugins/perl/common/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/plugins/perl/common/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -29,7 +29,7 @@ -I$(GTK_TOP)/lib/gtk-2.0/include \ -I$(PERL_LIB_TOP)/CORE -LIB_PATHS = -L$(PERL_LIB_TOP) \ +LIB_PATHS += -L$(PERL_LIB_TOP) \ -L$(PURPLE_TOP) \ -L$(PIDGIN_TOP) \ -L$(PURPLE_PERL_TOP) \ diff -r a32325c04158 -r cf62255b0a74 pidgin/plugins/ticker/Makefile.mingw --- a/pidgin/plugins/ticker/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/plugins/ticker/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -27,7 +27,7 @@ -I$(PIDGIN_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L$(PIDGIN_TOP) diff -r a32325c04158 -r cf62255b0a74 pidgin/plugins/win32/transparency/Makefile.mingw --- a/pidgin/plugins/win32/transparency/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/plugins/win32/transparency/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -28,7 +28,7 @@ -I$(PIDGIN_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L$(PIDGIN_TOP) diff -r a32325c04158 -r cf62255b0a74 pidgin/plugins/win32/winprefs/Makefile.mingw --- a/pidgin/plugins/win32/winprefs/Makefile.mingw Mon Apr 23 07:03:53 2007 +0000 +++ b/pidgin/plugins/win32/winprefs/Makefile.mingw Mon Apr 23 07:44:12 2007 +0000 @@ -28,7 +28,7 @@ -I$(PIDGIN_TOP)/win32 \ -I$(PIDGIN_TREE_TOP) -LIB_PATHS = -L$(GTK_TOP)/lib \ +LIB_PATHS += -L$(GTK_TOP)/lib \ -L$(PURPLE_TOP) \ -L$(PIDGIN_TOP) diff -r a32325c04158 -r cf62255b0a74 po/POTFILES.in --- a/po/POTFILES.in Mon Apr 23 07:03:53 2007 +0000 +++ b/po/POTFILES.in Mon Apr 23 07:44:12 2007 +0000 @@ -36,6 +36,7 @@ libpurple/connection.c libpurple/conversation.c libpurple/dbus-server.c +libpurple/dbus-server.h libpurple/desktopitem.c libpurple/dnsquery.c libpurple/ft.c @@ -77,6 +78,7 @@ libpurple/protocols/jabber/buddy.c libpurple/protocols/jabber/chat.c libpurple/protocols/jabber/jabber.c +libpurple/protocols/jabber/libxmpp.c libpurple/protocols/jabber/message.c libpurple/protocols/jabber/parser.c libpurple/protocols/jabber/presence.c