summaryrefslogtreecommitdiff
path: root/otk/widget.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-02-08 08:59:24 +0000
committerDana Jansens <danakj@orodu.net>2003-02-08 08:59:24 +0000
commitef231de58a738c83bf505e184fbafa9077f7452e (patch)
treeffdfa60aea48424d925393efea433b1313b6e9a7 /otk/widget.cc
parentee9eaed6cd48db249711912133758679a029b5b1 (diff)
mad optimizations
Diffstat (limited to 'otk/widget.cc')
-rw-r--r--otk/widget.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/otk/widget.cc b/otk/widget.cc
index 612a252d..8ab57708 100644
--- a/otk/widget.cc
+++ b/otk/widget.cc
@@ -61,7 +61,7 @@ Widget::Widget(Widget *parent, Direction direction, int bevel)
assert(parent);
createWindow(false);
parent->addChild(this);
- parent->layout();
+ if (parent->visible()) parent->layout();
_dispatcher->registerHandler(_window, this);
}
@@ -80,8 +80,9 @@ void Widget::show(bool children)
{
if (children) {
std::list<Widget*>::iterator it , end = _children.end();
- for (it = _children.begin(); it != end; ++it)
+ for (it = _children.begin(); it != end; ++it) {
(*it)->show(true);
+ }
}
if (!_visible) {
_visible = true;
@@ -107,6 +108,7 @@ void Widget::setEventMask(long e)
void Widget::update()
{
+ if (!_visible) return;
_dirty = true;
if (parent())
parent()->layout(); // relay-out us and our siblings
@@ -224,6 +226,7 @@ void Widget::setBevel(int b)
void Widget::layout()
{
+ if (_children.empty() || !_visible) return;
if (_direction == Horizontal)
layoutHorz();
else
@@ -470,6 +473,9 @@ void Widget::configureHandler(const XConfigureEvent &e)
if (_ignore_config) {
_ignore_config--;
} else {
+ // only interested in these for top level windows
+ if (_parent) return;
+
XEvent ev;
ev.xconfigure.width = e.width;
ev.xconfigure.height = e.height;