diff options
author | Ori Avtalion | 2016-03-23 21:24:43 +0200 |
---|---|---|
committer | Ori Avtalion | 2016-03-27 23:29:37 +0300 |
commit | 031e062252d00fc7e6d930287b6dbd4a845d2a2f (patch) | |
tree | 2ba4d9ab80f92e917b761b771c6b138100d07ebc /gui/widget.h | |
parent | c5b8adb370d9d707aee4b00cf1c711dcd7419d17 (diff) | |
download | scummvm-rg350-031e062252d00fc7e6d930287b6dbd4a845d2a2f.tar.gz scummvm-rg350-031e062252d00fc7e6d930287b6dbd4a845d2a2f.tar.bz2 scummvm-rg350-031e062252d00fc7e6d930287b6dbd4a845d2a2f.zip |
GUI: Improve handling of button presses while moving the cursor
Keep track of where a mouse press started when deciding how mouse-over
and mouse-up should behave.
This handles the following situations:
1) If a mouse press starts outside a button (e.g. the UI background),
mouse-up inside the button has no effect. Previously, it triggered a
button click.
2) If a mouse press starts inside a button, the cursor moves outside of
its region, then back inside, the button will show as pressed.
Previously, it showed as highlighted instead of pressed.
Diffstat (limited to 'gui/widget.h')
-rw-r--r-- | gui/widget.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gui/widget.h b/gui/widget.h index 9891f32b36..7c1437de0a 100644 --- a/gui/widget.h +++ b/gui/widget.h @@ -198,7 +198,7 @@ public: void handleMouseUp(int x, int y, int button, int clickCount); void handleMouseDown(int x, int y, int button, int clickCount); - void handleMouseEntered(int button) { setFlags(WIDGET_HILITED); draw(); } + void handleMouseEntered(int button) { if (_duringPress) { setFlags(WIDGET_PRESSED); } else { setFlags(WIDGET_HILITED); } draw(); } void handleMouseLeft(int button) { clearFlags(WIDGET_HILITED | WIDGET_PRESSED); draw(); } void handleTickle(); @@ -211,6 +211,7 @@ public: protected: void drawWidget(); void wantTickle(bool tickled); + bool _duringPress; private: uint32 _lastTime; }; |