// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
-#ifdef HAVE_CONFIG_H
-# include "../config.h"
-#endif
+#include "config.h"
#include "button.hh"
namespace otk {
Button::Button(Widget *parent)
- : Label(parent), _default(false), _pressed(false)
+ : Label(parent),
+ _pressed(false)
{
setHorizontalJustify(RenderStyle::CenterJustify);
setVerticalJustify(RenderStyle::CenterJustify);
void Button::buttonReleaseHandler(const XButtonEvent &e)
{
Widget::buttonReleaseHandler(e);
+ bool p = _pressed;
release(e.button);
-}
-
-void Button::setDefault(bool d)
-{
- _default = d;
- styleChanged(*RenderStyle::style(screen()));
- refresh();
+ if (p && !_pressed && e.x > 0 && e.y > 0 &&
+ e.x < area().width() && e.y < area().height())
+ clickHandler(_mouse_button);
}
void Button::styleChanged(const RenderStyle &style)
{
- if (_default) {
+ if (isHighlighted()) {
if (_pressed)
_texture = style.buttonPressFocusBackground();
else
_texture = style.buttonUnpressUnfocusBackground();
_forecolor = style.buttonUnfocusColor();
}
- Widget::styleChanged(style);
+ refresh();
}
}