diff options
author | corvid <corvid@lavabit.com> | 2012-12-10 17:08:02 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2012-12-10 17:08:02 +0000 |
commit | 8b338ba76781a564cc39ad39e9d2622860621d22 (patch) | |
tree | 99201b9ddc653031f70e3bf9fb0429b7f90f5586 /dw/fltkui.cc | |
parent | d2d57c6b0669e67d129387af938f770913057386 (diff) |
fix complex button triggering from keyboard
Broken in b21a663f7de4 when fixing the coordinates for mouse click.
Diffstat (limited to 'dw/fltkui.cc')
-rw-r--r-- | dw/fltkui.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/dw/fltkui.cc b/dw/fltkui.cc index 163080a6..e4b86518 100644 --- a/dw/fltkui.cc +++ b/dw/fltkui.cc @@ -445,7 +445,7 @@ void FltkComplexButtonResource::widgetCallback (Fl_Widget *widget, { FltkComplexButtonResource *res = (FltkComplexButtonResource*)data; - if (!Fl::event_button3()) { + if (Fl::event() == FL_RELEASE && Fl::event_button() != FL_RIGHT_MOUSE) { int w = widget->w(), h = widget->h(); res->click_x = Fl::event_x() - widget->x(); @@ -462,6 +462,18 @@ void FltkComplexButtonResource::widgetCallback (Fl_Widget *widget, setButtonEvent(&event); res->emitClicked(&event); } + } else if (Fl::event() == FL_KEYBOARD) { + // Simulate a click. + dw::core::EventButton event; + + res->click_x = res->click_y = 0; + event.xCanvas = widget->x() + res->style->boxOffsetX(); + event.yCanvas = widget->y() + res->style->boxOffsetY(); + // \todo Find out why a left click doesn't have core::BUTTON1_MASK set. + event.state = (core::ButtonState) 0; + event.button = 1; + event.numPressed = 1; + res->emitClicked(&event); } } |