aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/mode_find.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'content_scripts/mode_find.coffee')
-rw-r--r--content_scripts/mode_find.coffee15
1 files changed, 11 insertions, 4 deletions
diff --git a/content_scripts/mode_find.coffee b/content_scripts/mode_find.coffee
index ff9506e7..bba457b6 100644
--- a/content_scripts/mode_find.coffee
+++ b/content_scripts/mode_find.coffee
@@ -60,14 +60,15 @@ class FindMode extends Mode
matchCount: 0
hasResults: false
- constructor: (@options = {}) ->
+ constructor: (options = {}) ->
+ console.log "constructor", @options
# Save the selection, so findInPlace can restore it.
@initialRange = getCurrentRange()
FindMode.query = rawQuery: ""
- if @options.returnToViewport
+ if options.returnToViewport
@scrollX = window.scrollX
@scrollY = window.scrollY
- super
+ super extend options,
name: "find"
indicator: false
exitOnClick: true
@@ -84,7 +85,10 @@ class FindMode extends Mode
selection.removeAllRanges()
selection.addRange range
- findInPlace: ->
+ findInPlace: (query) ->
+ # If requested, restore the scroll position (so that failed searches leave the scroll position unchanged).
+ @checkReturnToViewPort()
+ FindMode.updateQuery query
# Restore the selection. That way, we're always searching forward from the same place, so we find the right
# match as the user adds matching characters, or removes previously-matched characters. See #1434.
@restoreSelection()
@@ -192,6 +196,9 @@ class FindMode extends Mode
@restoreDefaultSelectionHighlight: -> document.body.classList.remove("vimiumFindMode")
+ checkReturnToViewPort: ->
+ window.scrollTo @scrollX, @scrollY if @options.returnToViewport
+
getCurrentRange = ->
selection = getSelection()
if selection.type == "None"