From: Bartosz Dziewoński Date: Fri, 28 Mar 2014 17:48:24 +0000 (+0100) Subject: jquery.suggestions: Hide the suggestions list asynchronously X-Git-Tag: 1.31.0-rc.0~15769^2 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dmembres/modifier.php?a=commitdiff_plain;h=4efaff60576b2b2b0ed59e3b781cd24f33e03a24;p=lhc%2Fweb%2Fwiklou.git jquery.suggestions: Hide the suggestions list asynchronously 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 --- 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 ) {