From: Thomas Geymayer Date: Sat, 29 Jun 2013 09:33:40 +0000 (+0200) Subject: Canvas: trigger missing events on mouseup. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=b0d6ed3844dc32c88559bcf898542cf35fb70988;p=simgear.git Canvas: trigger missing events on mouseup. On mouseup send mouseout/mouseleave to old element and mouseenter/mouseover to new element. This fixes hover actions after dragging. --- diff --git a/simgear/canvas/CanvasEventManager.cxx b/simgear/canvas/CanvasEventManager.cxx index ed4a90c1..a10b7c00 100644 --- a/simgear/canvas/CanvasEventManager.cxx +++ b/simgear/canvas/CanvasEventManager.cxx @@ -78,13 +78,19 @@ namespace canvas break; case Event::MOUSE_UP: { - if( _last_mouse_down.path.empty() ) - // Ignore mouse up without any previous mouse down - return false; + // If the mouse has moved while a button was down (aka. dragging) we + // need to notify the original element that the mouse has left it, and + // the new element that it has been entered + if( _last_mouse_down.path != path ) + handleMove(event, path); // normal mouseup propagateEvent(event, path); + if( _last_mouse_down.path.empty() ) + // Ignore mouse up without any previous mouse down + return false; + // now handle click/dblclick if( checkClickDistance(path, _last_mouse_down.path) ) handleClick(event, getCommonAncestor(_last_mouse_down.path, path));