From 2e943b280e1990d1ff5975c552a99b8857a69565 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Mon, 8 Dec 1997 23:55:54 +0000 Subject: gtkimage.c: Fixes to expose handler from Rob Browning testselection.c gtktext.c gtktext.h: Spelling fix: foreward => forward from Tom Tromey -owt --- gtk/gtkimage.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'gtk/gtkimage.c') diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c index fddd06a5dc..98059a64fc 100644 --- a/gtk/gtkimage.c +++ b/gtk/gtkimage.c @@ -127,17 +127,17 @@ static gint gtk_image_expose (GtkWidget *widget, GdkEventExpose *event) { - GtkImage *image; - GtkMisc *misc; - GdkRectangle area; - gint x, y; - g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_IMAGE (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_MAPPED (widget)) { + GtkImage *image; + GtkMisc *misc; + GdkRectangle area, image_bound, intersection; + gint x, y; + image = GTK_IMAGE (widget); misc = GTK_MISC (widget); @@ -156,20 +156,23 @@ gtk_image_expose (GtkWidget *widget, gdk_gc_set_clip_origin (widget->style->black_gc, x, y); } - area = event->area; - if ((area.x < 0) || (area.y < 0)) - { - area.x = area.y = 0; - area.width = image->image->width; - area.height = image->image->height; - } - - gdk_draw_image (widget->window, - widget->style->black_gc, - image->image, - area.x, area.y, x+area.x, y+area.y, - area.width, area.height); + image_bound.x = x; + image_bound.y = y; + image_bound.width = image->image->width; + image_bound.height = image->image->height; + area = event->area; + + if(gdk_rectangle_intersect(&image_bound, &area, &intersection)) + { + gdk_draw_image (widget->window, + widget->style->black_gc, + image->image, + image_bound.x - x, image_bound.y - y, + image_bound.x, image_bound.y, + image_bound.width, image_bound.height); + } + if (image->mask) { gdk_gc_set_clip_mask (widget->style->black_gc, NULL); -- cgit v1.2.1