From 50efd6e1b063822c4a0ecb38f324ed3354f387c4 Mon Sep 17 00:00:00 2001 From: Scott González Date: Tue, 18 Apr 2017 16:51:23 -0400 Subject: Menu: Ignore mouse events triggered due to page scrolling Fixes #9356 Closes gh-1806 --- ui/widgets/menu.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ui/widgets') diff --git a/ui/widgets/menu.js b/ui/widgets/menu.js index 5df9d3eef..302d202ae 100644 --- a/ui/widgets/menu.js +++ b/ui/widgets/menu.js @@ -64,6 +64,7 @@ return $.widget( "ui.menu", { // Flag used to prevent firing of the click handler // as the event bubbles up through nested menus this.mouseHandled = false; + this.lastMousePosition = { x: null, y: null }; this.element .uniqueId() .attr( { @@ -161,6 +162,17 @@ return $.widget( "ui.menu", { return; } + // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356) + if ( event.clientX === this.lastMousePosition.x && + event.clientY === this.lastMousePosition.y ) { + return; + } + + this.lastMousePosition = { + x: event.clientX, + y: event.clientY + }; + var actualTarget = $( event.target ).closest( ".ui-menu-item" ), target = $( event.currentTarget ); -- cgit v1.2.3