diff options
author | André Nusser <andre.nusser@googlemail.com> | 2017-03-22 21:57:21 +0100 |
---|---|---|
committer | André Nusser <andre.nusser@googlemail.com> | 2017-04-01 16:33:49 +0200 |
commit | a964610cf2594923e637011a93a1e8e57b2ba571 (patch) | |
tree | a337c8ac512086be6f545735f20a6ae0d37dbb6a /plugingui | |
parent | 2497577c09b13a55430a95fcf311448fda11cae3 (diff) |
Fix bug in layout.cc
Diffstat (limited to 'plugingui')
-rw-r--r-- | plugingui/layout.cc | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/plugingui/layout.cc b/plugingui/layout.cc index 1b56315..509e32d 100644 --- a/plugingui/layout.cc +++ b/plugingui/layout.cc @@ -128,10 +128,21 @@ void VBoxLayout::layout() LayoutItemList::iterator i = items.begin(); while(i != items.end()) { - LayoutItem *item = *i; + LayoutItem* item = *i; if(resizeChildren) { - item->resize(w, parent->height() / items.size()); + auto num_items = items.size(); + auto empty_space = (num_items - 1) * spacing; + auto available_space = parent->height(); + + if (available_space >= empty_space) { + auto item_height = (available_space - empty_space) / num_items; + item->resize(w, item_height); + } + else { + // TODO: Should this case be handled differently? + item->resize(w, 0); + } } size_t x = 0; @@ -185,7 +196,19 @@ void HBoxLayout::layout() LayoutItem *item = *i; if(resizeChildren) { - item->resize(parent->width() / items.size(), h); + auto num_items = items.size(); + auto empty_space = (num_items - 1) * spacing; + auto available_space = parent->width(); + + if (available_space >= empty_space) { + auto item_width = (available_space - empty_space) / num_items; + item->resize(item_width, h); + } + else { + // TODO: Should this case be handled differently? + item->resize(0, h); + } + item->move(x, 0); } else |