diff src/gtkhtml.c @ 914:215fe9039ae1

[gaim-migrate @ 924] now i just need to do the same for pixmaps and we're set. pixmaps are going to be harder to do though because we add the pixmaps, not gtkhtml, which means we're going to have to figure out what the font is supposed to be ourselves. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 15 Sep 2000 16:51:31 +0000
parents 65c8bd1feec5
children 5871e1eec10c
line wrap: on
line diff
--- a/src/gtkhtml.c	Thu Sep 14 23:25:27 2000 +0000
+++ b/src/gtkhtml.c	Fri Sep 15 16:51:31 2000 +0000
@@ -126,7 +126,7 @@
 								   GtkAllocation * allocation);
 static void gtk_html_adjustment(GtkAdjustment * adjustment, GtkHtml * html);
 static void gtk_html_disconnect(GtkAdjustment * adjustment, GtkHtml * html);
-static void gtk_html_add_seperator(GtkHtml * html);
+static void gtk_html_add_seperator(GtkHtml *, GdkFont *, GdkColor *, GdkColor *);
 // static void gtk_html_add_pixmap(GtkHtml * html, GdkPixmap * pm, gint fit);
 static void gtk_html_add_text(GtkHtml * html,
 							  GdkFont * font,
@@ -2047,7 +2047,7 @@
 			/*end my stuff*/
 
 
-			if (hb->text && hb->back != NULL && selected_state != GTK_STATE_SELECTED) {
+			if (hb->text && hb->back != NULL) {
 				int hwidth, hheight, hei, tmpcnt;
 				hei = get_line_height(html, hb);
 				gdk_window_get_size(html->html_area, &hwidth, &hheight);
@@ -2089,6 +2089,29 @@
 	}
 	else if (hb->type == HTML_BIT_SEP)
 	{
+		if (hb->back != NULL) {
+			int hwidth, hheight, hei, tmpcnt;
+			hei = get_line_height(html, hb);
+			gdk_window_get_size(html->html_area, &hwidth, &hheight);
+			gdk_gc_set_foreground(gc, hb->back);
+			gdk_draw_rectangle(html->html_area, gc, TRUE,
+						1, hb->y - html->yoffset,
+						hwidth, 5);
+			for (tmpcnt = 0; tmpcnt < hb->newline; tmpcnt++) {
+				int eoff = hei + hei + 2;
+				eoff *= tmpcnt;
+				eoff += 5;
+				gdk_draw_rectangle(html->html_area, gc, TRUE,
+						1, hb->y - html->yoffset + eoff,
+						hwidth, hei + hei + 2);
+			}
+		}
+
+		if (hb->fore != NULL)
+			gdk_gc_set_foreground(gc, hb->fore);
+		else
+			gdk_gc_set_foreground(gc, &widget->style->fg[GTK_STATE_NORMAL]);
+
 		gdk_draw_line(html->html_area, gc, hb->x + 2,
 					  hb->y - html->yoffset - (hb->height / 2 - 1),
 					  hb->x + hb->width,
@@ -2102,6 +2125,22 @@
 		area.width = hb->width;
 		area.height = hb->height;
 		clear_area(html, &area);
+		if (hb->back != NULL && selected_state != GTK_STATE_SELECTED) {
+			int hwidth, hheight, hei, tmpcnt;
+			hei = get_line_height(html, hb);
+			gdk_window_get_size(html->html_area, &hwidth, &hheight);
+			gdk_gc_set_foreground(gc, hb->back);
+			for (tmpcnt = 1; tmpcnt < hb->newline; tmpcnt++) {
+				int eoff = hei + hei + 2;
+				eoff *= tmpcnt - 1;
+				eoff += 5;
+				gdk_draw_rectangle(html->html_area, gc, TRUE,
+						1, hb->y - html->yoffset - 11 + eoff,
+						hwidth, hei + hei + 2);
+			}
+		}
+
+		if (hb->fore != NULL)
 		gdk_gc_set_background(gc, &widget->style->base[GTK_STATE_NORMAL]);
 		gdk_draw_pixmap(html->html_area, gc, hb->pm, 0, 0, hb->x,
 						hb->y - html->yoffset - (hb->height) + 4, -1, -1);
@@ -2329,7 +2368,7 @@
 		if (hb->type == HTML_BIT_SEP)
 		{
 
-			gtk_html_add_seperator(html);
+			gtk_html_add_seperator(html, hb->font, hb->fore, hb->back);
 
 			g_free(hb);
 
@@ -2755,7 +2794,7 @@
 
 }
 
-static void gtk_html_add_seperator(GtkHtml * html)
+static void gtk_html_add_seperator(GtkHtml * html, GdkFont *font, GdkColor *fore, GdkColor *back)
 {
 	GtkHtmlBit *hb = g_new0(GtkHtmlBit, 1);
 	gint width,
@@ -2776,9 +2815,16 @@
 		width - 10;
 	hb->text = NULL;
 	hb->url = NULL;
-	hb->fore = NULL;
-	hb->back = NULL;
-	hb->font = NULL;
+	if (fore)
+		hb->fore = gdk_color_copy(fore);
+	else
+		hb->fore = NULL;
+	
+	if (back)
+		hb->back = gdk_color_copy(back);
+	else
+		hb->back = NULL;
+	hb->font = font;
 	hb->uline = 0;
 	hb->strike = 0;
 	hb->was_selected = 0;
@@ -3243,7 +3289,7 @@
 				else if (!strcasecmp(tag, "PRE"))
 					fixed = 1;
 				else if (!strcasecmp(tag, "HR"))
-					gtk_html_add_seperator(html);
+					gtk_html_add_seperator(html, cfont, current->color, current->bgcol);
 				else if (!strcasecmp(tag, "/B"))
 					bold = 0;
 				else if (!strcasecmp(tag, "/STRIKE") || !strcasecmp(tag, "/S"))