$.suggestions: make it possible to re-show suggestions
authorMatmaRex <matma.rex@gmail.com>
Sat, 9 Feb 2013 18:53:19 +0000 (19:53 +0100)
committerMatmaRex <matma.rex@gmail.com>
Mon, 11 Feb 2013 15:46:48 +0000 (16:46 +0100)
This patch makes it possible to re-show suggestions after they were
hidden (by pressing Escape) by simply pressing the down arrow. This
seems to have been the intended behavior to begin with (given how
update() is called on down-arrow press when the suggestions list is
hidden), but someone borked the implementation.

To reproduce the behavior:
* type something in and wait for the suggestions to appear
* press Escape, hiding the suggestion list
* press down arrow to fetch and show it again

Change-Id: Ic8aa162d2f0701d93329de855bd8b7dbdb99f979

resources/jquery/jquery.suggestions.js

index 303b18f..3448b7a 100644 (file)
@@ -79,13 +79,16 @@ $.suggestions = {
         * @param {Boolean} delayed Whether or not to delay this by the currently configured amount of time
         */
        update: function ( context, delayed ) {
-               // Only fetch if the value in the textbox changed and is not empty
+               // Only fetch if the value in the textbox changed and is not empty, or if the results were hidden
                // if the textbox is empty then clear the result div, but leave other settings intouched
                function maybeFetch() {
                        if ( context.data.$textbox.val().length === 0 ) {
                                context.data.$container.hide();
                                context.data.prevText = '';
-                       } else if ( context.data.$textbox.val() !== context.data.prevText ) {
+                       } else if (
+                               context.data.$textbox.val() !== context.data.prevText ||
+                               !context.data.$container.is( ':visible' )
+                       ) {
                                if ( typeof context.config.fetch === 'function' ) {
                                        context.data.prevText = context.data.$textbox.val();
                                        context.config.fetch.call( context.data.$textbox, context.data.$textbox.val() );