From 4efaff60576b2b2b0ed59e3b781cd24f33e03a24 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Fri, 28 Mar 2014 18:48:24 +0100 Subject: [PATCH] jquery.suggestions: Hide the suggestions list asynchronously MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Hiding the link we're just clicking on causes problems when done synchronously in at least Firefox 3.6 (bug 62858) – the link is not followed. Also update incorrect and misformatted comments. Bug: 62858 Change-Id: I52ed745e66c477527b6af031c222f8f221e0328b --- resources/src/jquery/jquery.suggestions.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/resources/src/jquery/jquery.suggestions.js b/resources/src/jquery/jquery.suggestions.js index 22e8652b61..7d200ff93e 100644 --- a/resources/src/jquery/jquery.suggestions.js +++ b/resources/src/jquery/jquery.suggestions.js @@ -535,15 +535,20 @@ $.fn.suggestions = function () { if ( $result.get( 0 ) !== $other.get( 0 ) ) { return; } - // do not interfere with non-left clicks or if modifier keys are pressed (e.g. ctrl-click) + // Do not interfere with non-left clicks or if modifier keys are pressed (e.g. ctrl-click). if ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) { $.suggestions.highlight( context, $result, true ); - $.suggestions.hide( context ); if ( typeof context.config.result.select === 'function' ) { context.config.result.select.call( $result, context.data.$textbox ); } + // This will hide the link we're just clicking on, which causes problems + // when done synchronously in at least Firefox 3.6 (bug 62858). + setTimeout( function () { + $.suggestions.hide( context ); + }, 0 ); } - // but still restore focus to the textbox, so that the suggestions will be hidden properly + // Always bring focus to the textbox, as that's probably where the user expects it + // if they were just typing. context.data.$textbox.focus(); } ) ) @@ -563,14 +568,19 @@ $.fn.suggestions = function () { if ( $special.get( 0 ) !== $other.get( 0 ) ) { return; } - // do not interfere with non-left clicks or if modifier keys are pressed (e.g. ctrl-click) + // Do not interfere with non-left clicks or if modifier keys are pressed (e.g. ctrl-click). if ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) { - $.suggestions.hide( context ); if ( typeof context.config.special.select === 'function' ) { context.config.special.select.call( $special, context.data.$textbox ); } + // This will hide the link we're just clicking on, which causes problems + // when done synchronously in at least Firefox 3.6 (bug 62858). + setTimeout( function () { + $.suggestions.hide( context ); + }, 0 ); } - // but still restore focus to the textbox, so that the suggestions will be hidden properly + // Always bring focus to the textbox, as that's probably where the user expects it + // if they were just typing. context.data.$textbox.focus(); } ) .mousemove( function ( e ) { -- 2.20.1