changeset 5105:4cfc49e31c2e

[gaim-migrate @ 5468] David Brigada (jsi) writes: " This patch changes GTK_WRAP_WORD to GTK_WRAP_WORD_CHAR throughout the sources. That fixes a bug where long single-word input into GtkTextViews and similar would cause the textview to expand, causing the window to expand. This fix depends on a patch to GTK+ that is in current CVS but not yet released. To address the backwards-compatibility issue, GTK_WRAP_WORD_CHAR is #defined to GTK_WRAP_WORD when not defined by GTK+'s header files. The only problem I can forsee is binary compatibility; if Gaim is compiled under a GTK+ CVS (or a future release) environment, and then run under a GTK+ 2.2.1 or earlier environment, behavior is undefined; the text area will probably not wrap at all. However, source compatibility is maintained." basically, gaim will start wrapping text in any version of gtk2 that supports it, and should work exactly the same in any version that still has the bug. many thanks to David for his hard work. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Fri, 11 Apr 2003 04:23:55 +0000
parents a20a644e0da4
children 7b218dde1d73
files src/dialogs.c src/gtkconv.c src/gtkimhtml.c src/prefs.c src/ui.h
diffstat 5 files changed, 20 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/dialogs.c	Fri Apr 11 00:52:02 2003 +0000
+++ b/src/dialogs.c	Fri Apr 11 04:23:55 2003 +0000
@@ -1970,7 +1970,7 @@
 	gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
 
 	b->text = gtk_text_view_new();
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(b->text), GTK_WRAP_WORD);
+	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(b->text), GTK_WRAP_WORD_CHAR);
 	gtk_widget_set_size_request(b->text, 300, 200);
 	buf = g_malloc(strlen(account->user_info) + 1);
 	strncpy_nohtml(buf, account->user_info, strlen(account->user_info) + 1);
@@ -3086,7 +3086,7 @@
 	gtk_box_pack_start(GTK_BOX(fbox), frame, TRUE, TRUE, 0);
 
 	ca->text = gtk_text_view_new();
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(ca->text), GTK_WRAP_WORD);
+	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(ca->text), GTK_WRAP_WORD_CHAR);
 
 	gtk_container_add(GTK_CONTAINER(frame), ca->text);
 
@@ -4516,7 +4516,7 @@
 		gtk_container_add(GTK_CONTAINER (*texts_ibox), frame);
 		mtd->textbox = gtk_text_view_new();
 		gtk_text_view_set_editable(GTK_TEXT_VIEW(mtd->textbox), TRUE);
-		gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(mtd->textbox), GTK_WRAP_WORD);
+		gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(mtd->textbox), GTK_WRAP_WORD_CHAR);
 		gtk_text_buffer_set_text(
 				gtk_text_view_get_buffer(GTK_TEXT_VIEW(mtd->textbox)),
 					mtd->text?mtd->text:"", -1);
--- a/src/gtkconv.c	Fri Apr 11 00:52:02 2003 +0000
+++ b/src/gtkconv.c	Fri Apr 11 04:23:55 2003 +0000
@@ -3085,7 +3085,7 @@
 	g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
 	gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer);
 
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD);
+	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR);
 	gtk_widget_set_size_request(gtkconv->entry, -1,
 								MAX(buddy_chat_size.entry_height, 25));
 
@@ -3181,7 +3181,7 @@
 	g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
 	gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer);
 
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD);
+	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR);
 	gtk_widget_set_size_request(gtkconv->entry, -1,
 								MAX(conv_size.entry_height, 25));
 
--- a/src/gtkimhtml.c	Fri Apr 11 00:52:02 2003 +0000
+++ b/src/gtkimhtml.c	Fri Apr 11 04:23:55 2003 +0000
@@ -51,6 +51,11 @@
 
 #include <pango/pango-font.h>
 
+/* GTK+ < 2.2.2 hack, see ui.h for details. */
+#ifndef GTK_WRAP_WORD_CHAR
+#define GTK_WRAP_WORD_CHAR GTK_WRAP_WORD
+#endif
+
 #define TOOLTIP_TIMEOUT 500
 
 static gboolean gtk_motion_event_notify(GtkWidget *imhtml, GdkEventMotion *event, gpointer user_data);
@@ -207,7 +212,7 @@
 	gtk_text_buffer_get_end_iter (imhtml->text_buffer, &iter);
 	imhtml->end = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, FALSE);
 	gtk_text_view_set_buffer(GTK_TEXT_VIEW(imhtml), imhtml->text_buffer);
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD);
+	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD_CHAR);
 	gtk_text_view_set_editable(GTK_TEXT_VIEW(imhtml), FALSE);
 	gtk_text_view_set_pixels_below_lines(GTK_TEXT_VIEW(imhtml), 5);
 	gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(imhtml), FALSE);
--- a/src/prefs.c	Fri Apr 11 00:52:02 2003 +0000
+++ b/src/prefs.c	Fri Apr 11 04:23:55 2003 +0000
@@ -1898,7 +1898,7 @@
 	dw->entry = gtk_text_view_new();
 	gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(dw->entry), FALSE);
 	gtk_text_view_set_editable(GTK_TEXT_VIEW(dw->entry), FALSE);
-	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(dw->entry), GTK_WRAP_WORD);
+	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(dw->entry), GTK_WRAP_WORD_CHAR);
 
 	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(dw->entry));
 	gtk_text_buffer_get_end_iter(buffer, &end);
--- a/src/ui.h	Fri Apr 11 00:52:02 2003 +0000
+++ b/src/ui.h	Fri Apr 11 04:23:55 2003 +0000
@@ -43,6 +43,14 @@
 			gtk_window_set_type_hint(GTK_WINDOW(x), GDK_WINDOW_TYPE_HINT_DIALOG)
 #define GAIM_WINDOW_ICONIFIED(x) (gdk_window_get_state(GTK_WIDGET(x)->window) & GDK_WINDOW_STATE_ICONIFIED)
 
+/* This is backwards-compatibility code for old versions of GTK+ (2.2.1 and
+ * earlier).  It defines the new wrap behavior (unknown in earlier versions)
+ * as the old (slightly buggy) wrap behavior.
+ */
+#ifndef GTK_WRAP_WORD_CHAR
+#define GTK_WRAP_WORD_CHAR GTK_WRAP_WORD
+#endif
+
 #define DEFAULT_FONT_FACE "Helvetica"
 
 #define BROWSER_NETSCAPE              0