aboutsummaryrefslogtreecommitdiff
path: root/dw/fltkui.cc
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2011-09-25 20:11:35 +0000
committercorvid <corvid@lavabit.com>2011-09-25 20:11:35 +0000
commitc30e88ff95eb09b4fc6a2939d62d51ae3f0ef708 (patch)
tree2433f7435bdd32a61bbb33afd4dbe7bfce3bae35 /dw/fltkui.cc
parentf5c87d5d8f0bea64c867c42f994225a59b0c42be (diff)
let the enter key trigger buttons when possible
Topic brought up by Alexander recently. In FLTK2, Enter and Space would both trigger buttons. In 1.3, only Space does it. I asked the FLTK guys about this, and I learned that Space to trigger buttons is actually old-school X behaviour that I somehow never became aware of.
Diffstat (limited to 'dw/fltkui.cc')
-rw-r--r--dw/fltkui.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/dw/fltkui.cc b/dw/fltkui.cc
index c0c8ff42..66a96691 100644
--- a/dw/fltkui.cc
+++ b/dw/fltkui.cc
@@ -266,6 +266,24 @@ template <class I> void FltkSpecificResource<I>::setEnabled (bool enabled)
// ----------------------------------------------------------------------
+class EnterButton : public Fl_Button {
+public:
+ EnterButton (int x,int y,int w,int h, const char* label = 0) :
+ Fl_Button (x,y,w,h,label) {};
+ int handle(int e);
+};
+
+int EnterButton::handle(int e)
+{
+ if (e == FL_KEYBOARD && Fl::focus() == this && Fl::event_key() == FL_Enter){
+ set_changed();
+ simulate_key_action();
+ do_callback();
+ return 1;
+ }
+ return Fl_Button::handle(e);
+}
+
FltkLabelButtonResource::FltkLabelButtonResource (FltkPlatform *platform,
const char *label):
FltkSpecificResource <dw::core::ui::LabelButtonResource> (platform)
@@ -283,8 +301,8 @@ Fl_Widget *FltkLabelButtonResource::createNewWidget (core::Allocation
*allocation)
{
Fl_Button *button =
- new Fl_Button (allocation->x, allocation->y, allocation->width,
- allocation->ascent + allocation->descent, label);
+ new EnterButton (allocation->x, allocation->y, allocation->width,
+ allocation->ascent + allocation->descent, label);
button->callback (widgetCallback, this);
button->when (FL_WHEN_RELEASE);
return button;