summaryrefslogtreecommitdiff
path: root/gdk/gdkrectangle.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@src.gnome.org>2000-03-28 01:24:44 +0000
committerOwen Taylor <otaylor@src.gnome.org>2000-03-28 01:24:44 +0000
commit8098546227671a5d082fdf8f4811ee3ffca7f6d8 (patch)
treed1857c89ee73451cbb04bbf595c0dc8bade55987 /gdk/gdkrectangle.c
parent4238d406e928d1afd95ab0c6ae51b6a37f9780ea (diff)
downloadgtk+-8098546227671a5d082fdf8f4811ee3ffca7f6d8.tar.gz
Merge no-flicker branch into HEAD
Diffstat (limited to 'gdk/gdkrectangle.c')
-rw-r--r--gdk/gdkrectangle.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/gdk/gdkrectangle.c b/gdk/gdkrectangle.c
index 9d8bb5a17b..a2bffdf742 100644
--- a/gdk/gdkrectangle.c
+++ b/gdk/gdkrectangle.c
@@ -31,14 +31,18 @@ gdk_rectangle_union (GdkRectangle *src1,
GdkRectangle *src2,
GdkRectangle *dest)
{
+ gint dest_x, dest_y;
+
g_return_if_fail (src1 != NULL);
g_return_if_fail (src2 != NULL);
g_return_if_fail (dest != NULL);
- dest->x = MIN (src1->x, src2->x);
- dest->y = MIN (src1->y, src2->y);
- dest->width = MAX (src1->x + src1->width, src2->x + src2->width) - dest->x;
- dest->height = MAX (src1->y + src1->height, src2->y + src2->height) - dest->y;
+ dest_x = MIN (src1->x, src2->x);
+ dest_y = MIN (src1->y, src2->y);
+ dest->width = MAX (src1->x + src1->width, src2->x + src2->width) - dest_x;
+ dest->height = MAX (src1->y + src1->height, src2->y + src2->height) - dest_y;
+ dest->x = dest_x;
+ dest->y = dest_y;
}
gboolean
@@ -63,13 +67,13 @@ gdk_rectangle_intersect (GdkRectangle *src1,
src1 = src2;
src2 = temp;
}
- dest->x = src2->x;
-
src1_x2 = src1->x + src1->width;
src2_x2 = src2->x + src2->width;
if (src2->x < src1_x2)
{
+ dest->x = src2->x;
+
if (src1_x2 < src2_x2)
dest->width = src1_x2 - dest->x;
else
@@ -81,8 +85,6 @@ gdk_rectangle_intersect (GdkRectangle *src1,
src1 = src2;
src2 = temp;
}
- dest->y = src2->y;
-
src1_y2 = src1->y + src1->height;
src2_y2 = src2->y + src2->height;
@@ -90,6 +92,8 @@ gdk_rectangle_intersect (GdkRectangle *src1,
{
return_val = TRUE;
+ dest->y = src2->y;
+
if (src1_y2 < src2_y2)
dest->height = src1_y2 - dest->y;
else
@@ -102,5 +106,11 @@ gdk_rectangle_intersect (GdkRectangle *src1,
}
}
+ if (!return_val)
+ {
+ dest->width = 0;
+ dest->height = 0;
+ }
+
return return_val;
}