diff -r 468607aeb8b4 -r 4fc3a666fe2f src/gtkhtml.c
--- a/src/gtkhtml.c Thu Jul 27 17:48:15 2000 +0000
+++ b/src/gtkhtml.c Thu Jul 27 18:21:01 2000 +0000
@@ -2326,7 +2326,7 @@
if (hb->type == HTML_BIT_PIXMAP)
{
- gtk_html_add_pixmap(html, hb->pm, hb->fit);
+ gtk_html_add_pixmap(html, hb->pm, hb->fit, hb->newline);
g_free(hb);
@@ -2687,17 +2687,25 @@
}
-void gtk_html_add_pixmap(GtkHtml * html, GdkPixmap * pm, int fit)
+void gtk_html_add_pixmap(GtkHtml * html, GdkPixmap * pm, int fit, int newline)
{
GtkHtmlBit *last_hb;
GtkHtmlBit *hb = g_new0(GtkHtmlBit, 1);
GdkWindowPrivate *private = (GdkWindowPrivate *) pm;
+ int width, height;
last_hb = (GtkHtmlBit *) g_list_last(html->html_bits)->data;
/* make sure pixmaps drop down a line after a
*/
if (last_hb->newline)
html->current_y += private->height + 2;
+
+ /* wrap pixmaps */
+ gdk_window_get_size(html->html_area, &width, &height);
+ if ((html->current_x + private->width) >= width) {
+ html->current_y += private->height + 2;
+ html->current_x = 0;
+ }
hb->fit = fit;
hb->x = html->current_x;
@@ -2716,7 +2724,7 @@
hb->uline = 0;
hb->strike = 0;
hb->was_selected = 0;
- hb->newline = 0;
+ hb->newline = newline;
hb->pm = pm;
if (html->current_x == BORDER_WIDTH)
@@ -2730,6 +2738,9 @@
gtk_html_draw_bit(html, hb, 1);
+ if (hb->newline)
+ html->current_x = 0;
+
html->html_bits = g_list_append(html->html_bits, hb);