aboutsummaryrefslogtreecommitdiff
path: root/dw/fltkui.cc
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2012-06-16 21:59:06 +0000
committercorvid <corvid@lavabit.com>2012-06-16 21:59:06 +0000
commit764b4789d8f2aa9a40ca550760436625c0f55260 (patch)
treec1591089997f7ec3520959279405e833fdc8d392 /dw/fltkui.cc
parent83225ab4c3bf55af6214771308ca2d2166e2fe5c (diff)
fix image input coordinates (bug 1070)
1. coordinates weren't relative to widget. 2. margin/border/padding weren't taken into account.
Diffstat (limited to 'dw/fltkui.cc')
-rw-r--r--dw/fltkui.cc21
1 files changed, 16 insertions, 5 deletions
diff --git a/dw/fltkui.cc b/dw/fltkui.cc
index 66a96691..f9e6f3f6 100644
--- a/dw/fltkui.cc
+++ b/dw/fltkui.cc
@@ -403,11 +403,22 @@ void FltkComplexButtonResource::widgetCallback (Fl_Widget *widget,
FltkComplexButtonResource *res = (FltkComplexButtonResource*)data;
if (!Fl::event_button3()) {
- res->click_x = Fl::event_x();
- res->click_y = Fl::event_y();
- dw::core::EventButton event;
- setButtonEvent(&event);
- res->emitClicked(&event);
+ int w = widget->w(), h = widget->h();
+
+ res->click_x = Fl::event_x() - widget->x();
+ res->click_y = Fl::event_y() - widget->y();
+ if (res->style) {
+ res->click_x -= res->style->boxOffsetX();
+ res->click_y -= res->style->boxOffsetY();
+ w -= res->style->boxDiffWidth();
+ h -= res->style->boxDiffHeight();
+ }
+ if (res->click_x >= 0 && res->click_y >= 0 &&
+ res->click_x < w && res->click_y < h) {
+ dw::core::EventButton event;
+ setButtonEvent(&event);
+ res->emitClicked(&event);
+ }
}
}