diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-01-23 04:49:42 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-01-23 04:49:42 +0000 |
| commit | 7b7ae097a0d389a35967fdab4ea310effcfc42c2 (patch) | |
| tree | 853d2ba50e8ef50754a26e33473c13ebb5e3ef55 /src/buttonwidget.cc | |
| parent | 7b9d92b2e75cab137ca3bfaf48ce40b5cbbaacf4 (diff) | |
make the 'toggle all desktops' button work
Diffstat (limited to 'src/buttonwidget.cc')
| -rw-r--r-- | src/buttonwidget.cc | 51 |
1 files changed, 46 insertions, 5 deletions
diff --git a/src/buttonwidget.cc b/src/buttonwidget.cc index eb864ba2..c6677861 100644 --- a/src/buttonwidget.cc +++ b/src/buttonwidget.cc @@ -5,16 +5,19 @@ #endif #include "buttonwidget.hh" -#include "otk/gccache.hh" // otk::BPen +#include "client.hh" namespace ob { ButtonWidget::ButtonWidget(otk::Widget *parent, - WidgetBase::WidgetType type) + WidgetBase::WidgetType type, + Client *client) : otk::Widget(parent), WidgetBase(type), + _client(client), _pressed(false), - _button(0) + _button(0), + _state(false) { } @@ -26,6 +29,21 @@ ButtonWidget::~ButtonWidget() void ButtonWidget::setTextures() { + bool p = _pressed; + + switch (type()) { + case Type_StickyButton: + if (_client->desktop() == (signed)0xffffffff) + p = true; + break; + case Type_MaximizeButton: + if (_client->maxHorz() || _client->maxVert()) + p = true; + break; + default: + break; + } + switch (type()) { case Type_LeftGrip: case Type_RightGrip: @@ -35,10 +53,10 @@ void ButtonWidget::setTextures() setTexture(_style->gripUnfocusBackground()); break; case Type_StickyButton: - case Type_CloseButton: case Type_MaximizeButton: + case Type_CloseButton: case Type_IconifyButton: - if (_pressed) { + if (p) { if (_focused) setTexture(_style->buttonPressFocusBackground()); else @@ -77,6 +95,29 @@ void ButtonWidget::setStyle(otk::RenderStyle *style) } +void ButtonWidget::update() +{ + switch (type()) { + case Type_StickyButton: + if ((_client->desktop() == (signed)0xffffffff) != _state) { + _state = !_state; + setTextures(); + } + break; + case Type_MaximizeButton: + if ((_client->maxHorz() || _client->maxVert()) != _state) { + _state = !_state; + setTextures(); + } + break; + default: + break; + } + + otk::Widget::update(); +} + + void ButtonWidget::renderForeground() { otk::PixmapMask *pm; |
