changeset 17003:667a5a24781c

merge of '5fba6dfb4d0356ca98aa9a0c99c95135225f56db' and 'cf675877fb02f3868c22d6bcf0141011ac7b098e'
author Nathan Walp <nwalp@pidgin.im>
date Thu, 10 May 2007 02:55:42 +0000
parents af4181dde6fa (current diff) 9adc82b72216 (diff)
children d5293baaed11 2f9e5cde6f97
files
diffstat 7 files changed, 50 insertions(+), 124 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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);
 
--- 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);
 }
--- 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") &&
--- 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 {
--- 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
--- 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),