summaryrefslogtreecommitdiff
path: root/otk/button.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-02-08 07:33:48 +0000
committerDana Jansens <danakj@orodu.net>2003-02-08 07:33:48 +0000
commit99cd843fc6dc7a7f55b6c90fd1162f233853aad2 (patch)
tree42b25c02cbf984fe29b378e9d0dbfbca1436c87b /otk/button.cc
parentd2df40965bbf042e062b65d6adc12bc158d503eb (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.cc72
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);
}
}