[gtk+] roundedbox: Handle shrinking to zero



commit deed7175ca81f2ee3d57c88a525c3be403055079
Author: Benjamin Otte <otte redhat com>
Date:   Sun Jun 12 03:42:29 2011 +0200

    roundedbox: Handle shrinking to zero
    
    We need it for wide separators.

 gtk/gtkroundedbox.c |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkroundedbox.c b/gtk/gtkroundedbox.c
index 001a5c2..8433282 100644
--- a/gtk/gtkroundedbox.c
+++ b/gtk/gtkroundedbox.c
@@ -88,13 +88,27 @@ _gtk_rounded_box_grow (GtkRoundedBox *box,
                        double         bottom,
                        double         left)
 {
+  if (box->box.width + left + right < 0)
+    {
+      box->box.x -= left * box->box.width / (left + right);
+      box->box.width = 0;
+    }
+  else
+    {
+      box->box.x -= left;
+      box->box.width += left + right;
+    }
 
-  box->box.x -= left;
-  box->box.width += left + right;
-  g_warn_if_fail (box->box.width > 0);
-  box->box.y -= top;
-  box->box.height += top + bottom;
-  g_warn_if_fail (box->box.height > 0);
+  if (box->box.height + bottom + right < 0)
+    {
+      box->box.y -= top * box->box.height / (top + bottom);
+      box->box.height = 0;
+    }
+  else
+    {
+      box->box.y -= top;
+      box->box.height += top + bottom;
+    }
 
   if (box->border_radius.top_left.horizontal)
     box->border_radius.top_left.horizontal = MAX (0, box->border_radius.top_left.horizontal + left);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]