aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--background_scripts/marks.coffee22
-rw-r--r--content_scripts/marks.coffee21
-rw-r--r--content_scripts/vimium_frontend.coffee7
3 files changed, 19 insertions, 31 deletions
diff --git a/background_scripts/marks.coffee b/background_scripts/marks.coffee
index 7cdbbf74..8fe30b2f 100644
--- a/background_scripts/marks.coffee
+++ b/background_scripts/marks.coffee
@@ -23,9 +23,8 @@ Marks =
@saveMark markInfo
else
# The front-end frame hasn't provided the scroll position (because it's not the top frame within its
- # tab). We need to ask the top frame what its scroll position is. (With the frame Id set to 0, below,
- # the request will only be handled by the top frame within the tab.)
- chrome.tabs.sendMessage sender.tab.id, name: "getScrollPosition", frameId: 0, (response) =>
+ # tab). We need to ask the top frame what its scroll position is.
+ chrome.tabs.sendMessage sender.tab.id, name: "getScrollPosition", (response) =>
@saveMark extend markInfo, scrollX: response.scrollX, scrollY: response.scrollY
saveMark: (markInfo) ->
@@ -42,13 +41,7 @@ Marks =
key = @getLocationKey req.markName
chrome.storage.sync.get key, (items) =>
markInfo = items[key]
- if not markInfo
- # The mark is not defined.
- chrome.tabs.sendMessage sender.tab.id,
- name: "showHUDforDuration",
- text: "Global mark not set: '#{req.markName}'."
- duration: 1000
- else if markInfo.vimiumSecret != vimiumSecret
+ if markInfo.vimiumSecret != vimiumSecret
# This is a different Vimium instantiation, so markInfo.tabId is definitely out of date.
@focusOrLaunch markInfo, req
else
@@ -64,13 +57,8 @@ Marks =
# Focus an existing tab and scroll to the given position within it.
gotoPositionInTab: ({ tabId, scrollX, scrollY, markName }) ->
- chrome.tabs.update tabId, { selected: true }, ->
- chrome.tabs.sendMessage tabId,
- { name: "setScrollPosition", scrollX: scrollX, scrollY: scrollY }, ->
- chrome.tabs.sendMessage tabId,
- name: "showHUDforDuration",
- text: "Jumped to global mark '#{markName}'."
- duration: 1000
+ chrome.tabs.update tabId, {selected: true}, ->
+ chrome.tabs.sendMessage tabId, {name: "setScrollPosition", scrollX, scrollY}
# 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.
diff --git a/content_scripts/marks.coffee b/content_scripts/marks.coffee
index ba0467b0..808f0a1d 100644
--- a/content_scripts/marks.coffee
+++ b/content_scripts/marks.coffee
@@ -60,20 +60,25 @@ Marks =
suppressAllKeyboardEvents: true
keypress: (event) =>
@exit =>
- keyChar = String.fromCharCode event.charCode
- if @isGlobalMark event, keyChar
- chrome.runtime.sendMessage
- handler: 'gotoMark'
- markName: keyChar
+ markName = String.fromCharCode event.charCode
+ if @isGlobalMark event, markName
+ # This key must match @getLocationKey() in the back end.
+ key = "vimiumGlobalMark|#{markName}"
+ chrome.storage.sync.get key, (items) ->
+ if key of items
+ chrome.runtime.sendMessage handler: 'gotoMark', markName: markName
+ HUD.showForDuration "Jumped to global mark '#{markName}'", 1000
+ else
+ HUD.showForDuration "Global mark not set '#{markName}'", 1000
else
- markString = @localRegisters[keyChar] ? localStorage[@getLocationKey keyChar]
+ markString = @localRegisters[markName] ? localStorage[@getLocationKey markName]
if markString?
@setPreviousPosition()
position = JSON.parse markString
window.scrollTo position.scrollX, position.scrollY
- @showMessage "Jumped to local mark", keyChar
+ @showMessage "Jumped to local mark", markName
else
- @showMessage "Local mark not set", keyChar
+ @showMessage "Local mark not set", markName
root = exports ? window
root.Marks = Marks
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee
index 79459b76..8acea3fc 100644
--- a/content_scripts/vimium_frontend.coffee
+++ b/content_scripts/vimium_frontend.coffee
@@ -144,10 +144,9 @@ initializePreDomReady = ->
checkIfEnabledForUrl()
requestHandlers =
- showHUDforDuration: handleShowHUDforDuration
toggleHelpDialog: (request) -> if frameId == request.frameId then HelpDialog.toggle request.dialogHtml
focusFrame: (request) -> if (frameId == request.frameId) then focusThisFrame request
- getScrollPosition: -> scrollX: window.scrollX, scrollY: window.scrollY
+ getScrollPosition: -> if frameId == 0 then scrollX: window.scrollX, scrollY: window.scrollY
setScrollPosition: setScrollPosition
# A frame has received the focus. We don't care here (the Vomnibar/UI-component handles this).
frameFocused: ->
@@ -220,10 +219,6 @@ Frame =
isEnabledForUrl = false
window.removeEventListener "focus", onFocus
-handleShowHUDforDuration = ({ text, duration }) ->
- if DomUtils.isTopFrame()
- DomUtils.documentReady -> HUD.showForDuration text, duration
-
setScrollPosition = ({ scrollX, scrollY }) ->
if DomUtils.isTopFrame()
DomUtils.documentReady ->