aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2016-09-14 08:02:22 +0100
committerStephen Blott2016-09-14 08:02:22 +0100
commit722cd3c40f89d93682f08e88b6d4cb46ca70991e (patch)
tree07ffd924c9ccb12bcc13149cab757729b17fedc3
parentfd20405ddf27365cfaf69e16289b2fc6d39c2a5e (diff)
downloadvimium-722cd3c40f89d93682f08e88b6d4cb46ca70991e.tar.bz2
Require exact match when we will be scrolling.
If the user is jumping to a scroll position within a tab, then we need an exact match on the URL (because otherwise the scroll position doesn't really have a meaning). Otherwise we only require a prefix match, a la #2250.
-rw-r--r--background_scripts/marks.coffee3
-rw-r--r--content_scripts/vimium_frontend.coffee4
2 files changed, 5 insertions, 2 deletions
diff --git a/background_scripts/marks.coffee b/background_scripts/marks.coffee
index 29029b4d..daf28748 100644
--- a/background_scripts/marks.coffee
+++ b/background_scripts/marks.coffee
@@ -63,6 +63,9 @@ Marks =
# The tab we're trying to find no longer exists. We either find another tab with a matching URL and use it,
# or we create a new tab.
focusOrLaunch: (markInfo, req) ->
+ # If we're not going to be scrolling to a particular position in the tab, then we choose all tabs with a
+ # matching URL prefix. Otherwise, we require an exact match.
+ query = if markInfo.scrollX == markInfo.scrollY == 0 then "#{markInfo.url}*" else markInfo.url
chrome.tabs.query { url: "#{markInfo.url}*" }, (tabs) =>
if 0 < tabs.length
# We have at least one matching tab. Pick one and go to it.
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee
index f11c8f4b..aea1b6ac 100644
--- a/content_scripts/vimium_frontend.coffee
+++ b/content_scripts/vimium_frontend.coffee
@@ -257,8 +257,8 @@ Frame =
window.removeEventListener "hashchange", onFocus
setScrollPosition = ({ scrollX, scrollY }) ->
- if DomUtils.isTopFrame()
- DomUtils.documentReady ->
+ DomUtils.documentReady ->
+ if DomUtils.isTopFrame()
window.focus()
document.body.focus()
if 0 < scrollX or 0 < scrollY