add a recursive flags to OtkWidget::show/hide dont delet eshit in the style from button's destructor
Dana Jansens danakj@orodu.net
3 files changed,
17 insertions(+),
13 deletions(-)
M
otk/widget.cc
→
otk/widget.cc
@@ -147,7 +147,7 @@ XMoveResizeWindow(otk::OBDisplay::display, _window, x, y, width, height);
_ignore_config++; } -void OtkWidget::show(void) +void OtkWidget::show(bool recursive) { if (_visible) return;@@ -156,23 +156,27 @@ // make sure the internal state isn't mangled
if (_dirty) update(); - OtkWidgetList::iterator it = _children.begin(), end = _children.end(); - for (; it != end; ++it) - (*it)->show(); + if (recursive) { + OtkWidgetList::iterator it = _children.begin(), end = _children.end(); + for (; it != end; ++it) + (*it)->show(); + } XMapWindow(otk::OBDisplay::display, _window); _visible = true; } -void OtkWidget::hide(void) +void OtkWidget::hide(bool recursive) { if (! _visible) return; - OtkWidgetList::iterator it = _children.begin(), end = _children.end(); - for (; it != end; ++it) - (*it)->hide(); - + if (recursive) { + OtkWidgetList::iterator it = _children.begin(), end = _children.end(); + for (; it != end; ++it) + (*it)->hide(); + } + XUnmapWindow(otk::OBDisplay::display, _window); _visible = false; }@@ -227,6 +231,8 @@ }
void OtkWidget::render(void) { + if (!_texture) return; + _bg_pixmap = _texture->render(_rect.width(), _rect.height(), _bg_pixmap); if (_bg_pixmap)
M
otk/widget.hh
→
otk/widget.hh
@@ -60,8 +60,8 @@ virtual void setGeometry(const Point &topleft, int width, int height);
virtual void setGeometry(int x, int y, int width, int height); inline bool isVisible(void) const { return _visible; }; - virtual void show(void); - virtual void hide(void); + virtual void show(bool recursive = false); + virtual void hide(bool recursive = false); inline bool isFocused(void) const { return _focused; }; virtual void focus(void);