X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fbutton.cc;h=774aa11bf87eeb10e03a9a332604074297b21737;hb=dca8c61a91cab29128a72f252b70f4bd9f7786ff;hp=c88fc707c3fa631657ba8e4cd71d792d004ca42f;hpb=cbf9dd0c4c8669392d9c7c8461d1af411f0ab0a4;p=chaz%2Fopenbox diff --git a/otk/button.cc b/otk/button.cc index c88fc707..774aa11b 100644 --- a/otk/button.cc +++ b/otk/button.cc @@ -1,31 +1,73 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- + +#include "config.h" + #include "button.hh" namespace otk { -OtkButton::OtkButton(OtkWidget *parent) - : OtkWidget(parent), _text(""), _pressed(false), - _unfocus_tx(OtkWidget::getStyle()->getButtonUnfocus()) +Button::Button(Widget *parent) + : Label(parent), + _pressed(false) { + setHorizontalJustify(RenderStyle::CenterJustify); + setVerticalJustify(RenderStyle::CenterJustify); + styleChanged(*RenderStyle::style(screen())); } -OtkButton::~OtkButton() +Button::~Button() { - } -void OtkButton::setText(const std::string &text) +void Button::press(unsigned int mouse_button) { - std::string a = text; + if (_pressed) return; + + _pressed = true; + _mouse_button = mouse_button; + + styleChanged(*RenderStyle::style(screen())); + refresh(); } -void OtkButton::press(void) +void Button::release(unsigned int mouse_button) { + if (!_pressed || _mouse_button != mouse_button) return; // wrong button + + _pressed = false; + styleChanged(*RenderStyle::style(screen())); + refresh(); } -void OtkButton::release(void) +void Button::buttonPressHandler(const XButtonEvent &e) { + Widget::buttonPressHandler(e); + press(e.button); +} +void Button::buttonReleaseHandler(const XButtonEvent &e) +{ + Widget::buttonReleaseHandler(e); + release(e.button); +} + +void Button::styleChanged(const RenderStyle &style) +{ + if (isHighlighted()) { + 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(); + } + refresh(); } }