Skip to content

Commit 15c30ac

Browse files
committed
dispatch mouse up event when leaving browser window
1 parent d7b21ac commit 15c30ac

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

haxe/ui/backend/ScreenImpl.hx

+25
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class ScreenImpl extends ScreenBase {
3434
return false;
3535
});
3636
*/
37+
38+
Browser.document.documentElement.addEventListener("mouseleave", onMouseLeave);
39+
Browser.document.documentElement.addEventListener("mouseenter", onMouseEnter);
3740
}
3841

3942
private override function set_options(value:ToolkitOptions):ToolkitOptions {
@@ -417,6 +420,26 @@ class ScreenImpl extends ScreenBase {
417420
return __onMouseEvent(event);
418421
}
419422

423+
private var _lastX:Null<Float> = null;
424+
private var _lastY:Null<Float> = null;
425+
private function onMouseLeave() {
426+
dispatchMouseUp();
427+
}
428+
429+
private function onMouseEnter() {
430+
dispatchMouseUp();
431+
}
432+
433+
private function dispatchMouseUp() {
434+
if (_lastX != null && _lastY != null) {
435+
var fn = _mapping.get(MouseEvent.MOUSE_UP);
436+
if (fn != null) {
437+
var event = new MouseEvent(MouseEvent.MOUSE_UP);
438+
fn(event);
439+
}
440+
}
441+
}
442+
420443
private function __onMouseEvent(event:js.html.Event) {
421444
var which:Int = -1;
422445
var sx:Float = -1;
@@ -466,6 +489,8 @@ class ScreenImpl extends ScreenBase {
466489

467490
if (type != null) {
468491
var fn = _mapping.get(type);
492+
_lastX = sx;
493+
_lastY = sy;
469494
if (fn != null) {
470495
var mouseEvent = new MouseEvent(type);
471496
mouseEvent._originalEvent = event;

0 commit comments

Comments
 (0)