diff src/gtkimhtml.c @ 2621:f8b02cf4af94

[gaim-migrate @ 2634] i *really* wish i'd gotten to look this over before it got committed. i'm getting the 16-byte leaks too. i haven't tracked it down yet but I have a pretty good idea of where they're coming from. i wish i'd been able to look this over before it got committed. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 26 Oct 2001 22:58:17 +0000
parents 8b84198651c9
children 733471f39ac9
line wrap: on
line diff
--- a/src/gtkimhtml.c	Fri Oct 26 20:06:22 2001 +0000
+++ b/src/gtkimhtml.c	Fri Oct 26 22:58:17 2001 +0000
@@ -353,6 +353,9 @@
 		g_free (bit);
 	}
 
+	if (imhtml->line)
+		g_list_free (imhtml->line);
+
 	while (imhtml->urls) {
 		g_free (imhtml->urls->data);
 		imhtml->urls = g_list_remove (imhtml->urls, imhtml->urls->data);
@@ -3448,9 +3451,13 @@
 void
 gtk_imhtml_clear (GtkIMHtml *imhtml)
 {
+	GtkLayout *layout;
+
 	g_return_if_fail (imhtml != NULL);
 	g_return_if_fail (GTK_IS_IMHTML (imhtml));
 
+	layout = GTK_LAYOUT (imhtml);
+
 	while (imhtml->bits) {
 		GtkIMHtmlBit *bit = imhtml->bits->data;
 		imhtml->bits = g_list_remove (imhtml->bits, bit);
@@ -3490,6 +3497,12 @@
 		imhtml->selected_text = g_string_new ("");
 	}
 
+	imhtml->sel_startx = 0;
+	imhtml->sel_starty = 0;
+	imhtml->sel_endx = 0;
+	imhtml->sel_endx = 0;
+	imhtml->sel_endchunk = NULL;
+
 	if (imhtml->tip_timer) {
 		gtk_timeout_remove (imhtml->tip_timer);
 		imhtml->tip_timer = 0;
@@ -3500,14 +3513,37 @@
 	}
 	imhtml->tip_bit = NULL;
 
+	if (imhtml->scroll_timer) {
+		gtk_timeout_remove (imhtml->scroll_timer);
+		imhtml->scroll_timer = 0;
+	}
+
 	gdk_window_set_cursor (GTK_LAYOUT (imhtml)->bin_window, imhtml->arrow_cursor);
 
 	imhtml->x = 0;
 	imhtml->y = TOP_BORDER;
+	imhtml->xsize = 0;
 	imhtml->llheight = 0;
 	imhtml->llascent = 0;
+	if (imhtml->line)
+		g_list_free (imhtml->line);
 	imhtml->line = NULL;
 
+	layout->hadjustment->page_size = 0;
+	layout->hadjustment->page_increment = 0;
+	layout->hadjustment->lower = 0;
+	layout->hadjustment->upper = imhtml->x;
+	gtk_adjustment_set_value (layout->hadjustment, 0);
+
+	layout->vadjustment->page_size = 0;
+	layout->vadjustment->page_increment = 0;
+	layout->vadjustment->lower = 0;
+	layout->vadjustment->upper = imhtml->y;
+	gtk_adjustment_set_value (layout->vadjustment, 0);
+
+	gtk_signal_emit_by_name (GTK_OBJECT (layout->hadjustment), "changed");
+	gtk_signal_emit_by_name (GTK_OBJECT (layout->vadjustment), "changed");
+
 	if (GTK_WIDGET_REALIZED (GTK_WIDGET (imhtml)))
 		gdk_window_clear (GTK_LAYOUT (imhtml)->bin_window);
 }