openbox/otk/focuswidget.cc
Dana Jansens 12a95bfdb3 add an OtkAppWidget which are "root windows", i.e. the managed child of root, to be shown on the display.
Exit when all the "root windows" are hidden.
Support the WM_DELETE protocol to hide a "root window".
2002-11-16 14:30:18 +00:00

65 lines
1.3 KiB
C++

#include "focuswidget.hh"
namespace otk {
OtkFocusWidget::OtkFocusWidget(OtkWidget *parent, Direction direction)
: OtkWidget(parent, direction), _unfocus_texture(0), _focused(true)
{
_focus_texture = parent->getTexture();
}
OtkFocusWidget::~OtkFocusWidget()
{
}
void OtkFocusWidget::focus(void)
{
if (_focused)
return;
// XXX: what about OtkWidget::focus()
assert(_focus_texture);
OtkWidget::setTexture(_focus_texture);
OtkWidget::update();
OtkWidget::OtkWidgetList children = OtkWidget::getChildren();
OtkWidget::OtkWidgetList::iterator it = children.begin(),
end = children.end();
OtkFocusWidget *tmp = 0;
for (; it != end; ++it) {
tmp = dynamic_cast<OtkFocusWidget*>(*it);
if (tmp) tmp->focus();
}
}
void OtkFocusWidget::unfocus(void)
{
if (! _focused)
return;
assert(_unfocus_texture);
OtkWidget::setTexture(_unfocus_texture);
OtkWidget::update();
OtkWidget::OtkWidgetList children = OtkWidget::getChildren();
OtkWidget::OtkWidgetList::iterator it = children.begin(),
end = children.end();
OtkFocusWidget *tmp = 0;
for (; it != end; ++it) {
tmp = dynamic_cast<OtkFocusWidget*>(*it);
if (tmp) tmp->unfocus();
}
}
void OtkFocusWidget::setTexture(BTexture *texture)
{
OtkWidget::setTexture(texture);
_focus_texture = texture;
}
}