From 722cd3c40f89d93682f08e88b6d4cb46ca70991e Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Wed, 14 Sep 2016 08:02:22 +0100 Subject: 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. --- background_scripts/marks.coffee | 3 +++ content_scripts/vimium_frontend.coffee | 4 ++-- 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 -- cgit v1.2.3