X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fwidget.cc;h=fa729a6fe9fc81da6f6cebfccef79f15c5ba9695;hb=dca0c9f5a308e115ec308cdc8ca7987ff4fc0479;hp=0e5eaf15748c5c2a6b43c9538ff2477ded81be53;hpb=12a95bfdb31595ec53d72adef4e0fd6bf1ccf218;p=chaz%2Fopenbox diff --git a/otk/widget.cc b/otk/widget.cc index 0e5eaf15..fa729a6f 100644 --- a/otk/widget.cc +++ b/otk/widget.cc @@ -1,3 +1,9 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- + +#ifdef HAVE_CONFIG_H +# include "../config.h" +#endif // HAVE_CONFIG_H + #include "widget.hh" #include "display.hh" #include "assassin.hh" @@ -141,7 +147,7 @@ void OtkWidget::setGeometry(int x, int y, int width, int height) _ignore_config++; } -void OtkWidget::show(void) +void OtkWidget::show(bool recursive) { if (_visible) return; @@ -150,23 +156,27 @@ void OtkWidget::show(void) 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; } @@ -221,6 +231,8 @@ void OtkWidget::ungrabKeyboard(void) void OtkWidget::render(void) { + if (!_texture) return; + _bg_pixmap = _texture->render(_rect.width(), _rect.height(), _bg_pixmap); if (_bg_pixmap) @@ -359,6 +371,7 @@ void OtkWidget::adjustVert(void) void OtkWidget::update(void) { if (_dirty) { + if (! _unmanaged) adjust(); render(); XClearWindow(OBDisplay::display, _window);