diff options
| author | André Nusser <andre.nusser@googlemail.com> | 2017-01-01 19:47:45 +0100 | 
|---|---|---|
| committer | André Nusser <andre.nusser@googlemail.com> | 2017-01-01 19:52:34 +0100 | 
| commit | badbd103ae9387912189f2aedf888fd89770ea10 (patch) | |
| tree | 13aaffe3d93901f2714ea9a8f6f6ee681d37d0b3 | |
| parent | 19136bce2c197943fa2c7476fe5b75edc87d6ac4 (diff) | |
Add a workaround for JUCE hosts.
The event time for them is always '0' and thus we couldn't recognize
double-clicks.
| -rw-r--r-- | plugingui/nativewindow_x11.cc | 10 | ||||
| -rw-r--r-- | plugingui/nativewindow_x11.h | 2 | 
2 files changed, 11 insertions, 1 deletions
diff --git a/plugingui/nativewindow_x11.cc b/plugingui/nativewindow_x11.cc index f50551e..a4e9659 100644 --- a/plugingui/nativewindow_x11.cc +++ b/plugingui/nativewindow_x11.cc @@ -28,6 +28,7 @@  #include <X11/Xutil.h>  #include <stdlib.h> +#include <chrono>  #include <hugin.hpp> @@ -459,6 +460,15 @@ std::shared_ptr<Event> NativeWindowX11::translateXMessage(XEvent& xevent,  					(xevent.type == ButtonPress) ?  					Direction::down : Direction::up; +				// This is a fix for hosts (e.g. those using JUCE) that set the +				// event time to '0'. +				if(xevent.xbutton.time == 0) +				{ +					auto now = std::chrono::system_clock::now().time_since_epoch(); +					xevent.xbutton.time = +						std::chrono::duration_cast<std::chrono::milliseconds>(now).count(); +				} +  				buttonEvent->doubleClick =  					(xevent.type == ButtonPress) &&  					((xevent.xbutton.time - last_click) < 200); diff --git a/plugingui/nativewindow_x11.h b/plugingui/nativewindow_x11.h index 50cd904..db6ec76 100644 --- a/plugingui/nativewindow_x11.h +++ b/plugingui/nativewindow_x11.h @@ -62,7 +62,7 @@ private:  	Window& window; -	int last_click{0}; +	Time last_click{0};  	Display* display{nullptr};  	int screen{0};  | 
