diff options
| -rw-r--r-- | ext/bg/js/search.js | 2 | ||||
| -rw-r--r-- | ext/mixed/js/display.js | 41 | 
2 files changed, 40 insertions, 3 deletions
| diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index 85efc7a0..884ab33c 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -144,7 +144,7 @@ class DisplaySearch extends Display {          await this.updateOptions();          const query = this._queryInput.value;          if (query) { -            this._search(false, false); +            this.searchLast();          }      } diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 22021f5c..7491cd60 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -71,6 +71,8 @@ class Display extends EventDispatcher {          this._contentType = 'clear';          this._defaultTitle = document.title;          this._titleMaxLength = 1000; +        this._query = ''; +        this._rawQuery = '';          this._fullQuery = '';          this._documentUtil = new DocumentUtil();          this._progressIndicator = document.querySelector('#progress-indicator'); @@ -459,6 +461,31 @@ class Display extends EventDispatcher {          this._updateFocusedElement();      } +    searchLast() { +        const type = this._contentType; +        if (type === 'clear') { return; } +        const query = this._rawQuery; +        const state = ( +            this._historyHasState() ? +            clone(this._history.state) : +            { +                focusEntry: 0, +                sentence: {text: query, offset: 0}, +                url: window.location.href +            } +        ); +        const details = { +            focus: false, +            history: false, +            params: this._createSearchParams(type, query, false), +            state, +            content: { +                definitions: null +            } +        }; +        this.setContent(details); +    } +      // Message handlers      _onMessage({action, params}, sender, callback) { @@ -560,6 +587,8 @@ class Display extends EventDispatcher {              let clear = true;              this._historyHasChanged = true;              this._contentType = type; +            this._query = ''; +            this._rawQuery = '';              const eventArgs = {type, urlSearchParams, token};              // Set content @@ -570,9 +599,11 @@ class Display extends EventDispatcher {                          let query = urlSearchParams.get('query');                          if (!query) { break; } +                        this._query = query;                          clear = false;                          const isTerms = (type === 'terms');                          query = this.postProcessQuery(query); +                        this._rawQuery = query;                          let queryFull = urlSearchParams.get('full');                          queryFull = (queryFull !== null ? this.postProcessQuery(queryFull) : query);                          const wildcardsEnabled = (urlSearchParams.get('wildcards') !== 'off'); @@ -611,14 +642,20 @@ class Display extends EventDispatcher {      _onQueryParserSearch({type, definitions, sentence, inputInfo: {cause}, textSource, optionsContext}) {          const query = textSource.text(); -        const history = (cause === 'click'); +        const historyState = this._history.state; +        const history = ( +            cause === 'click' || +            !isObject(historyState) || +            historyState.cause !== 'queryParser' +        );          const details = {              focus: false,              history,              params: this._createSearchParams(type, query, false),              state: {                  sentence, -                optionsContext +                optionsContext, +                cause: 'queryParser'              },              content: {                  definitions |