# HG changeset patch # User Nathan Walp # Date 1178765742 0 # Node ID 667a5a24781c25a867acc599431d433d16ce878a # Parent af4181dde6fa2f7c64e39bf68f55380d1262aa5e# Parent 9adc82b7221630fc9f43c8070cd444efdd045122 merge of '5fba6dfb4d0356ca98aa9a0c99c95135225f56db' and 'cf675877fb02f3868c22d6bcf0141011ac7b098e' diff -r af4181dde6fa -r 667a5a24781c ChangeLog --- a/ChangeLog Thu May 10 02:55:19 2007 +0000 +++ b/ChangeLog Thu May 10 02:55:42 2007 +0000 @@ -3,14 +3,25 @@ version 2.0.1 (??/??/????): * Buddy list update speedups when buddy icons are not being displayed. (Scott Wolchok) - * Custom smileys on MSN can be saved by right-clicking on them. + * Fix icons on docklet change status menu to match the status selector + * Custom smileys on MSN can be saved by right-clicking on them + * Fix a crash deleting a buddy that is in the Buddy List more than once + * Compile fixes for Solaris + * Fix GTalk formatting when there's a space before/after a */_ + * Fix Log viewer crash when the filename is not in the expected format + * Get User Info now provides immediate feedback, and is updated when the + user information is available + * Make the choose buddy icon dialog correctly list the current directory + * Fix for buddy icons disappearing + * Timestamps are always on in debug output (-d) and Debug Window now + * Don't escape html entities in Yahoo! system messages Finch: * Userlist in chat windows, which can be turned on or off using - "/users" command. - * Menus in the conversation windows. - * Improved tab completion support. - * Ctrl+c prompts with a dialog before exiting. + "/users" command + * Menus in the conversation windows + * Improved tab completion support + * Ctrl+c prompts with a dialog before exiting version 2.0.0 (5/3/2007): * The project has new names - libpurple for the core, Pidgin for the diff -r af4181dde6fa -r 667a5a24781c finch/gntdebug.c --- a/finch/gntdebug.c Thu May 10 02:55:19 2007 +0000 +++ b/finch/gntdebug.c Thu May 10 02:55:42 2007 +0000 @@ -43,7 +43,6 @@ GntWidget *window; GntWidget *tview; gboolean paused; - gboolean timestamps; } debug; static void @@ -54,14 +53,11 @@ { int pos = gnt_text_view_get_lines_below(GNT_TEXT_VIEW(debug.tview)); GntTextFormatFlags flag = GNT_TEXT_FLAG_NORMAL; - - if (debug.timestamps) { - const char *mdate; - time_t mtime = time(NULL); - mdate = purple_utf8_strftime("%H:%M:%S ", localtime(&mtime)); - gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(debug.tview), - mdate, flag); - } + const char *mdate; + time_t mtime = time(NULL); + mdate = purple_utf8_strftime("%H:%M:%S ", localtime(&mtime)); + gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(debug.tview), + mdate, flag); gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(debug.tview), category, GNT_TEXT_FLAG_BOLD); @@ -137,13 +133,6 @@ debug.paused = !debug.paused; } -static void -toggle_timestamps(GntWidget *w, gpointer n) -{ - debug.timestamps = !debug.timestamps; - purple_prefs_set_bool("/purple/debug/timestamps", debug.timestamps); -} - /* Xerox */ static void purple_glib_log_handler(const gchar *domain, GLogLevelFlags flags, @@ -202,7 +191,6 @@ void finch_debug_window_show() { debug.paused = FALSE; - debug.timestamps = purple_prefs_get_bool("/purple/debug/timestamps"); if (debug.window == NULL) { GntWidget *wid, *box; @@ -239,12 +227,6 @@ GNT_WIDGET_SET_FLAGS(wid, GNT_WIDGET_GROW_Y); gnt_box_add_widget(GNT_BOX(box), wid); - wid = gnt_check_box_new(_("Timestamps")); - gnt_check_box_set_checked(GNT_CHECK_BOX(wid), debug.timestamps); - g_signal_connect(G_OBJECT(wid), "toggled", G_CALLBACK(toggle_timestamps), NULL); - GNT_WIDGET_SET_FLAGS(wid, GNT_WIDGET_GROW_Y); - gnt_box_add_widget(GNT_BOX(box), wid); - gnt_box_add_widget(GNT_BOX(debug.window), box); GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_GROW_Y); diff -r af4181dde6fa -r 667a5a24781c libpurple/debug.c --- a/libpurple/debug.c Thu May 10 02:55:19 2007 +0000 +++ b/libpurple/debug.c Thu May 10 02:55:42 2007 +0000 @@ -61,18 +61,12 @@ if (debug_enabled) { gchar *ts_s; - - if ((category != NULL) && - (purple_prefs_exists("/purple/debug/timestamps")) && - (purple_prefs_get_bool("/purple/debug/timestamps"))) { - const char *mdate; + const char *mdate; + time_t mtime = time(NULL); - time_t mtime = time(NULL); - mdate = purple_utf8_strftime("%H:%M:%S", localtime(&mtime)); - ts_s = g_strdup_printf("(%s) ", mdate); - } else { - ts_s = g_strdup(""); - } + + mdate = purple_utf8_strftime("%H:%M:%S", localtime(&mtime)); + ts_s = g_strdup_printf("(%s) ", mdate); if (category == NULL) g_print("%s%s", ts_s, arg_s); @@ -189,11 +183,4 @@ void purple_debug_init(void) { - purple_prefs_add_none("/purple/debug"); - - /* - * This pref is currently used by both the console - * output and the debug window output. - */ - purple_prefs_add_bool("/purple/debug/timestamps", FALSE); } diff -r af4181dde6fa -r 667a5a24781c libpurple/prefs.c --- a/libpurple/prefs.c Thu May 10 02:55:19 2007 +0000 +++ b/libpurple/prefs.c Thu May 10 02:55:42 2007 +0000 @@ -1355,6 +1355,7 @@ purple_prefs_remove("/plugins/core/autorecon/hide_reconnecting_dialog"); purple_prefs_remove("/plugins/core/autorecon/restore_state"); purple_prefs_remove("/plugins/core/autorecon"); + purple_prefs_remove("/purple/debug/timestamps"); /* Convert old sounds while_away pref to new 3-way pref. */ if (purple_prefs_exists("/purple/sound/while_away") && diff -r af4181dde6fa -r 667a5a24781c libpurple/protocols/yahoo/yahoo.c --- a/libpurple/protocols/yahoo/yahoo.c Thu May 10 02:55:19 2007 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Thu May 10 02:55:42 2007 +0000 @@ -906,7 +906,7 @@ static void yahoo_process_sysmessage(PurpleConnection *gc, struct yahoo_packet *pkt) { GSList *l = pkt->hash; - char *prim, *me = NULL, *msg = NULL, *escmsg = NULL; + char *prim, *me = NULL, *msg = NULL; while (l) { struct yahoo_pair *pair = l->data; @@ -922,14 +922,10 @@ if (!msg || !g_utf8_validate(msg, -1, NULL)) return; - /* TODO: Does this really need to be escaped? It seems like it doesn't. */ - escmsg = g_markup_escape_text(msg, -1); - prim = g_strdup_printf(_("Yahoo! system message for %s:"), me?me:purple_connection_get_display_name(gc)); - purple_notify_info(NULL, NULL, prim, escmsg); + purple_notify_info(NULL, NULL, prim, msg); g_free(prim); - g_free(escmsg); } struct yahoo_add_request { diff -r af4181dde6fa -r 667a5a24781c pidgin/gtkdebug.c --- a/pidgin/gtkdebug.c Thu May 10 02:55:19 2007 +0000 +++ b/pidgin/gtkdebug.c Thu May 10 02:55:42 2007 +0000 @@ -49,7 +49,6 @@ GtkListStore *store; - gboolean timestamps; gboolean paused; #ifdef HAVE_REGEX_H @@ -261,21 +260,6 @@ #endif /* HAVE_REGEX_H */ } -static void -timestamps_cb(GtkWidget *w, DebugWindow *win) -{ - win->timestamps = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); - - purple_prefs_set_bool("/purple/debug/timestamps", win->timestamps); -} - -static void -timestamps_pref_cb(const char *name, PurplePrefType type, - gconstpointer value, gpointer data) -{ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), GPOINTER_TO_INT(value)); -} - /****************************************************************************** * regex stuff *****************************************************************************/ @@ -691,7 +675,6 @@ GtkWidget *vbox; GtkWidget *toolbar; GtkWidget *frame; - GtkWidget *button; GtkWidget *image; gint width, height; void *handle; @@ -779,20 +762,6 @@ NULL, image, G_CALLBACK(pause_cb), win); - /* Timestamps */ - button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), - GTK_TOOLBAR_CHILD_TOGGLEBUTTON, - NULL, _("Timestamps"), - _("Timestamps"), NULL, NULL, - G_CALLBACK(timestamps_cb), - win); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), - purple_prefs_get_bool("/purple/debug/timestamps")); - - purple_prefs_connect_callback(handle, "/purple/debug/timestamps", - timestamps_pref_cb, button); - #ifdef HAVE_REGEX_H /* regex stuff */ gtk_toolbar_insert_space(GTK_TOOLBAR(toolbar), -1); @@ -1044,9 +1013,10 @@ #ifdef HAVE_REGEX_H GtkTreeIter iter; #endif /* HAVE_REGEX_H */ - gboolean timestamps; gchar *ts_s; gchar *esc_s, *cat_s, *tmp, *s; + const char *mdate; + time_t mtime; if (debug_win == NULL || !purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled")) @@ -1054,22 +1024,9 @@ return; } - timestamps = purple_prefs_get_bool("/purple/debug/timestamps"); - - /* - * For some reason we only print the timestamp if category is - * not NULL. Why the hell do we do that? --Mark - */ - if ((category != NULL) && (timestamps)) { - const char *mdate; - - time_t mtime = time(NULL); - mdate = purple_utf8_strftime("%H:%M:%S", localtime(&mtime)); - ts_s = g_strdup_printf("(%s) ", mdate); - } else { - ts_s = g_strdup(""); - } - + mtime = time(NULL); + mdate = purple_utf8_strftime("%H:%M:%S", localtime(&mtime)); + ts_s = g_strdup_printf("(%s) ", mdate); if (category == NULL) cat_s = g_strdup(""); else diff -r af4181dde6fa -r 667a5a24781c pidgin/gtkutils.c --- a/pidgin/gtkutils.c Thu May 10 02:55:19 2007 +0000 +++ b/pidgin/gtkutils.c Thu May 10 02:55:42 2007 +0000 @@ -2323,24 +2323,10 @@ GTK_FILE_SELECTION(dialog->icon_filesel))); #endif /* FILECHOOSER */ - if (!filename || g_stat(filename, &st)) + if (!filename || g_stat(filename, &st) || !(pixbuf = gdk_pixbuf_new_from_file(filename, NULL))) { -#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ - gtk_file_chooser_set_preview_widget_active( - GTK_FILE_CHOOSER(dialog->icon_filesel), FALSE); -#endif /* FILECHOOSER */ - g_free(filename); - return; - } - - pixbuf = gdk_pixbuf_new_from_file(filename, NULL); - if (!pixbuf) { gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL); gtk_label_set_markup(GTK_LABEL(dialog->icon_text), ""); -#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ - gtk_file_chooser_set_preview_widget_active( - GTK_FILE_CHOOSER(dialog->icon_filesel), FALSE); -#endif /* FILECHOOSER */ g_free(filename); return; } @@ -2357,10 +2343,6 @@ scale = gdk_pixbuf_scale_simple(pixbuf, width * 50 / height, 50, GDK_INTERP_BILINEAR); gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), scale); -#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ - gtk_file_chooser_set_preview_widget_active( - GTK_FILE_CHOOSER(dialog->icon_filesel), TRUE); -#endif /* FILECHOOSER */ gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup); g_object_unref(G_OBJECT(pixbuf)); @@ -2375,7 +2357,9 @@ GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char *, gpointer), gpointer data) { struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1); -#if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ +#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ + GtkWidget *vbox; +#else GtkWidget *hbox; GtkWidget *tv; GtkTreeSelection *sel; @@ -2406,9 +2390,17 @@ dialog->icon_preview = gtk_image_new(); dialog->icon_text = gtk_label_new(NULL); - gtk_widget_set_size_request(GTK_WIDGET(dialog->icon_preview), -1, 50); - gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(dialog->icon_filesel), - GTK_WIDGET(dialog->icon_preview)); + + vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); + gtk_widget_set_size_request(GTK_WIDGET(vbox), -1, 50); + gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(dialog->icon_preview), TRUE, FALSE, 0); + gtk_box_pack_end(GTK_BOX(vbox), GTK_WIDGET(dialog->icon_text), FALSE, FALSE, 0); + gtk_widget_show_all(vbox); + + gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(dialog->icon_filesel), vbox); + gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(dialog->icon_filesel), TRUE); + gtk_file_chooser_set_use_preview_label(GTK_FILE_CHOOSER(dialog->icon_filesel), FALSE); + g_signal_connect(G_OBJECT(dialog->icon_filesel), "update-preview", G_CALLBACK(icon_preview_change_cb), dialog); g_signal_connect(G_OBJECT(dialog->icon_filesel), "response", @@ -2422,7 +2414,7 @@ gtk_file_selection_set_filename(GTK_FILE_SELECTION(dialog->icon_filesel), current_folder); - gtk_widget_set_size_request(GTK_WIDGET(dialog->icon_preview), -1, 50); + gtk_widget_set_size_request(GTK_WIDGET(dialog->icon_preview),-1, 50); hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); gtk_box_pack_start( GTK_BOX(GTK_FILE_SELECTION(dialog->icon_filesel)->main_vbox),