diff src/gtkimhtml.c @ 1780:d7cbedd1d651

[gaim-migrate @ 1790] woo. more preferences redesigns. also gtk_imhtml_clear and gaim_setup_imhtml. this is knee-toe. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Mon, 30 Apr 2001 13:12:42 +0000
parents bcd7f80f0086
children 9ed99b8c5c9c
line wrap: on
line diff
--- a/src/gtkimhtml.c	Mon Apr 30 11:54:59 2001 +0000
+++ b/src/gtkimhtml.c	Mon Apr 30 13:12:42 2001 +0000
@@ -179,6 +179,16 @@
 	if (imhtml->selected_text)
 		g_string_free (imhtml->selected_text, TRUE);
 
+	if (imhtml->tip_timer) {
+		gtk_timeout_remove (imhtml->tip_timer);
+		imhtml->tip_timer = 0;
+	}
+	if (imhtml->tip_window) {
+		gtk_widget_destroy (imhtml->tip_window);
+		imhtml->tip_window = NULL;
+	}
+	imhtml->tip_bit = NULL;
+
 	gdk_font_unref (imhtml->default_font);
 	gdk_color_free (imhtml->default_fg_color);
 	gdk_color_free (imhtml->default_bg_color);
@@ -2990,3 +3000,70 @@
 
 	return retval;
 }
+
+void
+gtk_imhtml_clear (GtkIMHtml *imhtml)
+{
+	g_return_if_fail (imhtml != NULL);
+	g_return_if_fail (GTK_IS_IMHTML (imhtml));
+
+	while (imhtml->bits) {
+		GtkIMHtmlBit *bit = imhtml->bits->data;
+		imhtml->bits = g_list_remove (imhtml->bits, bit);
+		if (bit->text)
+			g_free (bit->text);
+		if (bit->font)
+			gdk_font_unref (bit->font);
+		if (bit->fore)
+			gdk_color_free (bit->fore);
+		if (bit->back)
+			gdk_color_free (bit->back);
+		if (bit->bg)
+			gdk_color_free (bit->bg);
+		if (bit->url)
+			g_free (bit->url);
+		if (bit->pm)
+			gdk_pixmap_unref (bit->pm);
+		if (bit->bm)
+			gdk_bitmap_unref (bit->bm);
+		while (bit->chunks) {
+			struct line_info *li = bit->chunks->data;
+			if (li->text)
+				g_free (li->text);
+			bit->chunks = g_list_remove (bit->chunks, li);
+			g_free (li);
+		}
+		g_free (bit);
+	}
+
+	while (imhtml->urls) {
+		g_free (imhtml->urls->data);
+		imhtml->urls = g_list_remove (imhtml->urls, imhtml->urls->data);
+	}
+
+	if (imhtml->selected_text) {
+		g_string_free (imhtml->selected_text, TRUE);
+		imhtml->selected_text = g_string_new ("");
+	}
+
+	if (imhtml->tip_timer) {
+		gtk_timeout_remove (imhtml->tip_timer);
+		imhtml->tip_timer = 0;
+	}
+	if (imhtml->tip_window) {
+		gtk_widget_destroy (imhtml->tip_window);
+		imhtml->tip_window = NULL;
+	}
+	imhtml->tip_bit = NULL;
+
+	gdk_window_set_cursor (GTK_LAYOUT (imhtml)->bin_window, imhtml->arrow_cursor);
+
+	imhtml->x = BORDER_SIZE;
+	imhtml->y = BORDER_SIZE + 10;
+	imhtml->llheight = 0;
+	imhtml->llascent = 0;
+	imhtml->line = NULL;
+
+	if (GTK_WIDGET_REALIZED (GTK_WIDGET (imhtml)))
+		gdk_window_clear (GTK_LAYOUT (imhtml)->bin_window);
+}