X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=otk%2Fwidget.cc;h=ea90a32fcdd7ccaac9811cbfe0d27edf959d95b5;hb=9834a687fc5180f0beba99bc15fe5763f5c20317;hp=4522a1c0c2f3037fbd8771f593f0f1145e375f6b;hpb=f6724de2a4592c8e706cab30750e2c697d6b6509;p=chaz%2Fopenbox diff --git a/otk/widget.cc b/otk/widget.cc index 4522a1c0..ea90a32f 100644 --- a/otk/widget.cc +++ b/otk/widget.cc @@ -262,7 +262,7 @@ void OtkWidget::adjustHorz(void) for (; str_it != str_end; ++str_it) { (*str_it)->setWidth(str_width - _bevel_width); - (*str_it)->update(); + //(*str_it)->update(); } } @@ -296,11 +296,29 @@ void OtkWidget::adjustVert(void) int widest = 0; int height = _bevel_width; + OtkWidgetList stretchable; + for (it = _children.begin(); it != end; ++it) { tmp = *it; + if (tmp->isStretchableVert() && _fixed_height) + stretchable.push_back(tmp); + else + height += tmp->_rect.height() + _bevel_width; + if (tmp->_rect.width() > widest) widest = tmp->_rect.width(); - height += tmp->_rect.height() + _bevel_width; + } + + if (stretchable.size() > 0) { + OtkWidgetList::iterator str_it = stretchable.begin(), + str_end = stretchable.end(); + + int str_height = _rect.height() - height / stretchable.size(); + + for (; str_it != str_end; ++str_it) { + (*str_it)->setHeight(str_height - _bevel_width); + //(*str_it)->update(); + } } OtkWidget *prev_widget = 0; @@ -325,11 +343,16 @@ void OtkWidget::adjustVert(void) void OtkWidget::update(void) { + OtkWidgetList::iterator it = _children.begin(), end = _children.end(); + for (; it != end; ++it) + (*it)->update(); + if (_dirty) { adjust(); render(); XClearWindow(OBDisplay::display, _window); } + _dirty = false; }