]> Dogcows Code - chaz/openbox/blobdiff - otk/widget.cc
initial commit
[chaz/openbox] / otk / widget.cc
index 64277e709812724182f3f82fb9b1e6228831f24c..691c0968e81eb6f408424ea7b8ecdf64153fd44c 100644 (file)
@@ -248,7 +248,8 @@ void OtkWidget::adjustHorz(void)
   for (it = _children.begin(); it != end; ++it) {
     tmp = *it;
     if (tmp->isStretchableVert())
-      tmp->setHeight(_rect.height() - _bevel_width * 2);
+      tmp->setHeight(_rect.height() > _bevel_width * 2 ?
+                     _rect.height() - _bevel_width * 2 : _bevel_width);
     if (tmp->isStretchableHorz())
       stretchable.push_back(tmp);
     else
@@ -265,7 +266,8 @@ void OtkWidget::adjustHorz(void)
     int str_width = _rect.width() - width / stretchable.size();
 
     for (; str_it != str_end; ++str_it)
-      (*str_it)->setWidth(str_width - _bevel_width);
+      (*str_it)->setWidth(str_width > _bevel_width ? str_width - _bevel_width
+                          : _bevel_width);
   }
 
   OtkWidget *prev_widget = 0;
@@ -303,7 +305,8 @@ void OtkWidget::adjustVert(void)
   for (it = _children.begin(); it != end; ++it) {
     tmp = *it;
     if (tmp->isStretchableHorz())
-      tmp->setWidth(_rect.width() - _bevel_width * 2);
+      tmp->setWidth(_rect.width() > _bevel_width * 2 ?
+                    _rect.width() - _bevel_width * 2 : _bevel_width);
     if (tmp->isStretchableVert())
       stretchable.push_back(tmp);
     else
@@ -320,7 +323,8 @@ void OtkWidget::adjustVert(void)
     int str_height = _rect.height() - height / stretchable.size();
 
     for (; str_it != str_end; ++str_it)
-      (*str_it)->setHeight(str_height - _bevel_width);
+      (*str_it)->setHeight(str_height > _bevel_width ?
+                           str_height - _bevel_width : _bevel_width);
   }
 
   OtkWidget *prev_widget = 0;
@@ -345,16 +349,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);
   }
 
+  OtkWidgetList::iterator it = _children.begin(), end = _children.end();
+  for (; it != end; ++it)
+    (*it)->update();
+
   _dirty = false;
 }
 
@@ -414,9 +418,10 @@ bool OtkWidget::configure(const XConfigureEvent &e)
       _ignore_config--;
     } else {
       std::cout << "configure\n";
-      if (!(e.width == _rect.width() && e.height == _rect.height()))
+      if (!(e.width == _rect.width() && e.height == _rect.height())) {
         _dirty = true;
-      _rect.setRect(_rect.x(), _rect.y(), e.width, e.height);
+        _rect.setSize(e.width, e.height);
+      }
       update();
     }
     return true;
This page took 0.023322 seconds and 4 git commands to generate.