add a recursive flags to OtkWidget::show/hide

dont delet eshit in the style from button's destructor
This commit is contained in:
Dana Jansens 2002-12-01 10:57:49 +00:00
parent cb5dfe7cfb
commit 4d1a90b0d2
3 changed files with 17 additions and 13 deletions

View file

@ -20,8 +20,6 @@ OtkButton::OtkButton(OtkWidget *parent)
OtkButton::~OtkButton()
{
if (_pressed_focus_tx) delete _pressed_focus_tx;
if (_pressed_unfocus_tx) delete _pressed_unfocus_tx;
}
void OtkButton::press(unsigned int mouse_button)

View file

@ -147,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;
@ -156,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;
}
@ -227,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)

View file

@ -60,8 +60,8 @@ public:
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);