Fix width calculation for split layouts
authorraa <roaoao@gmail.com>
Mon, 6 Mar 2017 13:35:56 +0000 (16:35 +0300)
committerraa <roaoao@gmail.com>
Mon, 6 Mar 2017 13:35:56 +0000 (16:35 +0300)
source/blender/editors/interface/interface_layout.c

index ad5f6279606b7ce1e4d53c5eb9d19dcd2bf89b5c..ce1153911dabdc2a45a60e34dea2ff229ee8c8c3 100644 (file)
@@ -2681,13 +2681,14 @@ static void ui_litem_layout_absolute(uiLayout *litem)
 static void ui_litem_estimate_split(uiLayout *litem)
 {
        ui_litem_estimate_row(litem);
+       litem->item.flag &= ~UI_ITEM_MIN;
 }
 
 static void ui_litem_layout_split(uiLayout *litem)
 {
        uiLayoutItemSplit *split = (uiLayoutItemSplit *)litem;
        uiItem *item;
-       float percentage;
+       float percentage, extra_pixel = 0.0f;
        const int tot = BLI_listbase_count(&litem->items);
        int itemh, x, y, w, colw = 0;
 
@@ -2710,7 +2711,9 @@ static void ui_litem_layout_split(uiLayout *litem)
                x += colw;
 
                if (item->next) {
-                       colw = (w - (int)(w * percentage)) / (tot - 1);
+                       const float width = extra_pixel + (w - (int)(w * percentage)) / ((float)tot - 1);
+                       extra_pixel = width - (int)width;
+                       colw = (int)width;
                        colw = MAX2(colw, 0);
 
                        x += litem->space;