]> git.draconx.ca Git - aspectbin.git/commitdiff
Make constrain play a bit better with y-positioning of the side.
authorNick Bowler <nbowler@draconx.ca>
Sun, 15 Mar 2009 05:37:35 +0000 (01:37 -0400)
committerNick Bowler <nbowler@draconx.ca>
Sun, 15 Mar 2009 05:37:35 +0000 (01:37 -0400)
aspectbin.c

index 07fca93d8e2aa36b5e98bdf20e7fbb43c5f79dea..6e1467748f95711deae605365bdd5395e937c6cb 100644 (file)
@@ -73,7 +73,7 @@ static void aspect_bin_class_init(AspectBinClass *class)
                PROP_CONSTRAIN,
                g_param_spec_boolean("constrain",
                        "Constrain",
-                       "Only expand the side to be as large as the body.",
+                       "Try not to place the side beyond the body's edges.",
                        FALSE,
                        G_PARAM_READWRITE));
        gtk_container_class_install_child_property(container_class,
@@ -295,10 +295,16 @@ aspect_bin_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
        }
 
        asize.y = (allocation->height - asize.height) * abin->body_align + 0.5;
-       csize.y = (allocation->height - csize.height) * abin->side_align + 0.5;
 
-       if (abin->constrain) {
-               csize.y = MIN(asize.y, allocation->height - csize.height);
+       if (abin->constrain && csize.height <= asize.height) {
+               csize.y = asize.y + (asize.height-csize.height)
+                       * abin->side_align + 0.5;
+       } else if (abin->constrain) {
+               csize.y = (allocation->height - csize.height)
+                       * abin->body_align + 0.5;
+       } else {
+               csize.y = (allocation->height - csize.height)
+                       * abin->side_align + 0.5;
        }
 
        if (abin->body)