Implement deduplication of searches on webkit

This commit is contained in:
Jay Kamat 2018-02-25 18:40:16 -05:00
parent 4602afe770
commit 7a8fa5f46e
No known key found for this signature in database
GPG Key ID: 5D2E399600F4F7B5
3 changed files with 8 additions and 3 deletions

View File

@ -183,7 +183,7 @@ class WebEngineSearch(browsertab.AbstractSearch):
def search(self, text, *, ignore_case='never', reverse=False, def search(self, text, *, ignore_case='never', reverse=False,
result_cb=None): result_cb=None):
# When duplicate searching, don't search again (webkit behavior) # Don't go to next entry on duplicate search
if self.text == text and self.search_displayed: if self.text == text and self.search_displayed:
log.webview.debug("Ignoring duplicate search request" log.webview.debug("Ignoring duplicate search request"
" for {}".format(text)) " for {}".format(text))

View File

@ -146,8 +146,14 @@ class WebKitSearch(browsertab.AbstractSearch):
def search(self, text, *, ignore_case='never', reverse=False, def search(self, text, *, ignore_case='never', reverse=False,
result_cb=None): result_cb=None):
self.search_displayed = True # Don't go to next entry on duplicate search
if self.text == text and self.search_displayed:
log.webview.debug("Ignoring duplicate search request"
" for {}".format(text))
return
self.text = text self.text = text
self.search_displayed = True
self._flags = QWebPage.FindWrapsAroundDocument self._flags = QWebPage.FindWrapsAroundDocument
if self._is_case_sensitive(ignore_case): if self._is_case_sensitive(ignore_case):
self._flags |= QWebPage.FindCaseSensitively self._flags |= QWebPage.FindCaseSensitively

View File

@ -52,7 +52,6 @@ Feature: Searching on a page
And I wait for "search didn't find blub" in the log And I wait for "search didn't find blub" in the log
Then the warning "Text 'blub' not found on page!" should be shown Then the warning "Text 'blub' not found on page!" should be shown
@qtwebkit_skip: Supported by default on qtwebkit
Scenario: Searching text duplicates Scenario: Searching text duplicates
When I run :search foo When I run :search foo
And I wait for "search found foo" in the log And I wait for "search found foo" in the log