diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-02-08 07:33:48 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-02-08 07:33:48 +0000 |
| commit | 99cd843fc6dc7a7f55b6c90fd1162f233853aad2 (patch) | |
| tree | 42b25c02cbf984fe29b378e9d0dbfbca1436c87b /otk/button.cc | |
| parent | d2df40965bbf042e062b65d6adc12bc158d503eb (diff) | |
Brand spankin new widgets for otk (Label and Button).
Add a new Size class.
Rect, Point, and Size are immutable classes.
Size uses *UNSIGNED* ints. This is causing me headaches * a bajillion right now, so we'll see about that.
Diffstat (limited to 'otk/button.cc')
| -rw-r--r-- | otk/button.cc | 72 |
1 files changed, 36 insertions, 36 deletions
diff --git a/otk/button.cc b/otk/button.cc index c70511fc..8d63ed0c 100644 --- a/otk/button.cc +++ b/otk/button.cc @@ -9,73 +9,73 @@ namespace otk { Button::Button(Widget *parent) - : FocusLabel(parent), _pressed(false), _pressed_focus_tx(0), - _pressed_unfocus_tx(0), _unpr_focus_tx(0), _unpr_unfocus_tx(0) + : Label(parent), _default(false), _pressed(false) { - setStyle(_style); + setHorizontalJustify(RenderStyle::CenterJustify); + setVerticalJustify(RenderStyle::CenterJustify); + styleChanged(*RenderStyle::style(screen())); } Button::~Button() { } - -void Button::setStyle(RenderStyle *style) -{ - FocusLabel::setStyle(style); - - setTexture(style->buttonUnpressFocusBackground()); - setUnfocusTexture(style->buttonUnpressUnfocusBackground()); - _pressed_focus_tx = style->buttonPressFocusBackground(); - _pressed_unfocus_tx = style->buttonPressUnfocusBackground(); -} - - void Button::press(unsigned int mouse_button) { if (_pressed) return; - if (_pressed_unfocus_tx) - FocusWidget::setUnfocusTexture(_pressed_unfocus_tx); - if (_pressed_focus_tx) - FocusWidget::setTexture(_pressed_focus_tx); _pressed = true; _mouse_button = mouse_button; + + styleChanged(*RenderStyle::style(screen())); + refresh(); } void Button::release(unsigned int mouse_button) { - if (_mouse_button != mouse_button) return; // wrong button + if (!_pressed || _mouse_button != mouse_button) return; // wrong button - FocusWidget::setUnfocusTexture(_unpr_unfocus_tx); - FocusWidget::setTexture(_unpr_focus_tx); _pressed = false; + + styleChanged(*RenderStyle::style(screen())); + refresh(); } -void Button::setTexture(RenderTexture *texture) +void Button::buttonPressHandler(const XButtonEvent &e) { - FocusWidget::setTexture(texture); - _unpr_focus_tx = texture; + Widget::buttonPressHandler(e); + press(e.button); } -void Button::setUnfocusTexture(RenderTexture *texture) +void Button::buttonReleaseHandler(const XButtonEvent &e) { - FocusWidget::setUnfocusTexture(texture); - _unpr_unfocus_tx = texture; + Widget::buttonReleaseHandler(e); + release(e.button); } -void Button::buttonPressHandler(const XButtonEvent &e) +void Button::setDefault(bool d) { - press(e.button); - update(); - FocusWidget::buttonPressHandler(e); + _default = d; + styleChanged(*RenderStyle::style(screen())); + refresh(); } -void Button::buttonReleaseHandler(const XButtonEvent &e) +void Button::styleChanged(const RenderStyle &style) { - release(e.button); - update(); - FocusWidget::buttonReleaseHandler(e); + if (_default) { + if (_pressed) + _texture = style.buttonPressFocusBackground(); + else + _texture = style.buttonUnpressFocusBackground(); + _forecolor = style.buttonFocusColor(); + } else { + if (_pressed) + _texture = style.buttonPressUnfocusBackground(); + else + _texture = style.buttonUnpressUnfocusBackground(); + _forecolor = style.buttonUnfocusColor(); + } + Widget::styleChanged(style); } } |
