X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fbutton.cc;h=8d63ed0c3b71a6268b353904d31040a668907ddd;hb=5adb8c82d19a4a7fbd740e24acf2260ed7ab519c;hp=fd23a5698d74d54ff15851df3c25255834459025;hpb=948feddc2e0d3c846e1c4669681c475e99540a8b;p=chaz%2Fopenbox diff --git a/otk/button.cc b/otk/button.cc index fd23a569..8d63ed0c 100644 --- a/otk/button.cc +++ b/otk/button.cc @@ -8,74 +8,74 @@ namespace otk { -OtkButton::OtkButton(OtkWidget *parent) - : OtkFocusLabel(parent), _pressed(false), _pressed_focus_tx(0), - _pressed_unfocus_tx(0), _unpr_focus_tx(0), _unpr_unfocus_tx(0) +Button::Button(Widget *parent) + : Label(parent), _default(false), _pressed(false) { - setStyle(getStyle()); + setHorizontalJustify(RenderStyle::CenterJustify); + setVerticalJustify(RenderStyle::CenterJustify); + styleChanged(*RenderStyle::style(screen())); } -OtkButton::~OtkButton() +Button::~Button() { } - -void OtkButton::setStyle(Style *style) -{ - OtkFocusLabel::setStyle(style); - - setTexture(getStyle()->getButtonFocus()); - setUnfocusTexture(getStyle()->getButtonUnfocus()); - _pressed_focus_tx = getStyle()->getButtonPressedFocus(); - _pressed_unfocus_tx = getStyle()->getButtonPressedUnfocus(); -} - - -void OtkButton::press(unsigned int mouse_button) +void Button::press(unsigned int mouse_button) { if (_pressed) return; - if (_pressed_focus_tx) - OtkFocusWidget::setTexture(_pressed_focus_tx); - if (_pressed_unfocus_tx) - OtkFocusWidget::setUnfocusTexture(_pressed_unfocus_tx); _pressed = true; _mouse_button = mouse_button; + + styleChanged(*RenderStyle::style(screen())); + refresh(); } -void OtkButton::release(unsigned int mouse_button) +void Button::release(unsigned int mouse_button) { - if (_mouse_button != mouse_button) return; // wrong button + if (!_pressed || _mouse_button != mouse_button) return; // wrong button - OtkFocusWidget::setTexture(_unpr_focus_tx); - OtkFocusWidget::setUnfocusTexture(_unpr_unfocus_tx); _pressed = false; + + styleChanged(*RenderStyle::style(screen())); + refresh(); } -void OtkButton::setTexture(BTexture *texture) +void Button::buttonPressHandler(const XButtonEvent &e) { - OtkFocusWidget::setTexture(texture); - _unpr_focus_tx = texture; + Widget::buttonPressHandler(e); + press(e.button); } -void OtkButton::setUnfocusTexture(BTexture *texture) +void Button::buttonReleaseHandler(const XButtonEvent &e) { - OtkFocusWidget::setUnfocusTexture(texture); - _unpr_unfocus_tx = texture; + Widget::buttonReleaseHandler(e); + release(e.button); } -void OtkButton::buttonPressHandler(const XButtonEvent &e) +void Button::setDefault(bool d) { - press(e.button); - update(); - OtkFocusWidget::buttonPressHandler(e); + _default = d; + styleChanged(*RenderStyle::style(screen())); + refresh(); } -void OtkButton::buttonReleaseHandler(const XButtonEvent &e) +void Button::styleChanged(const RenderStyle &style) { - release(e.button); - update(); - OtkFocusWidget::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); } }