1
0
Fork 0

GUI/knob animation: fire release binding over PUI

Fire the release bindings for active pick callbacks, even for a ‘handled’
mouse release. This means knobs, etc will fire their release binding
if the mouse is over a PUI dialog.

https://sourceforge.net/p/flightgear/codetickets/2347/
This commit is contained in:
James Turner 2020-08-25 20:48:29 +01:00
parent 8a1109160b
commit 06b026a218
2 changed files with 19 additions and 9 deletions

View file

@ -575,6 +575,12 @@ void FGMouseInput::doMouseClick (int b, int updown, int x, int y, bool mainWindo
callbacks.pop_front();
}
if (ea->getHandled()) {
// for https://sourceforge.net/p/flightgear/codetickets/2347/
// we cleared the active picks, but don't do further processing
return;
}
}
if (mode.pass_through) {

View file

@ -123,15 +123,19 @@ bool FGEventHandler::handle(const osgGA::GUIEventAdapter& ea,
// Event handlers seem to be called even if the according event has already
// been handled. Already handled events shouldn't be handled multiple times
// so we need to exit here manually.
if( ea.getHandled()
// Let mouse move events pass to correctly handle mouse cursor hide
// timeout while moving just on the canvas gui.
// TODO We should clean up the whole mouse input and make hide
// timeout independent of the event handler which consumed the
// event.
&& ea.getEventType() != osgGA::GUIEventAdapter::MOVE
&& ea.getEventType() != osgGA::GUIEventAdapter::DRAG )
return false;
if (ea.getHandled()
// Let mouse move events pass to correctly handle mouse cursor hide
// timeout while moving just on the canvas gui.
// TODO We should clean up the whole mouse input and make hide
// timeout independent of the event handler which consumed the
// event.
// if we see a release, still process for active pick callbacks
// https://sourceforge.net/p/flightgear/codetickets/2347/
&& ea.getEventType() != osgGA::GUIEventAdapter::MOVE && ea.getEventType() != osgGA::GUIEventAdapter::DRAG && ea.getEventType() != osgGA::GUIEventAdapter::RELEASE) {
return false;
}
int x = 0;
int y = 0;