From aeb455a577c0a20684f357ff737203b5cb419cd4 Mon Sep 17 00:00:00 2001 From: Jez Ng Date: Fri, 26 Oct 2012 13:27:37 -0400 Subject: Implement marks. --- content_scripts/marks.coffee | 45 ++++++++++++++++++++++++++++++++++ content_scripts/vimium_frontend.coffee | 3 ++- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 content_scripts/marks.coffee (limited to 'content_scripts') diff --git a/content_scripts/marks.coffee b/content_scripts/marks.coffee new file mode 100644 index 00000000..e280a3b1 --- /dev/null +++ b/content_scripts/marks.coffee @@ -0,0 +1,45 @@ +root = window.Marks = {} + +root.activateCreateMode = -> + handlerStack.push keydown: (e) -> + keyChar = KeyboardUtils.getKeyChar(event) + return unless keyChar isnt "" + + if /[A-Z]/.test keyChar + chrome.extension.sendRequest { + handler: 'createMark', + markName: keyChar + scrollX: window.scrollX, + scrollY: window.scrollY + }, -> HUD.showForDuration "Created global mark '#{keyChar}'", 1000 + else if /[a-z]/.test keyChar + [baseLocation, sep, hash] = window.location.href.split '#' + localStorage["vimiumMark|#{baseLocation}|#{keyChar}"] = JSON.stringify + scrollX: window.scrollX, + scrollY: window.scrollY + HUD.showForDuration "Created local mark '#{keyChar}'", 1000 + + @remove() + + false + +root.activateGotoMode = -> + handlerStack.push keydown: (e) -> + keyChar = KeyboardUtils.getKeyChar(event) + return unless keyChar isnt "" + + if /[A-Z]/.test keyChar + chrome.extension.sendRequest + handler: 'gotoMark' + markName: keyChar + else if /[a-z]/.test keyChar + [baseLocation, sep, hash] = window.location.href.split '#' + markString = localStorage["vimiumMark|#{baseLocation}|#{keyChar}"] + if markString? + mark = JSON.parse markString + window.scrollTo mark.scrollX, mark.scrollY + HUD.showForDuration "Jumped to local mark '#{keyChar}'", 1000 + + @remove() + + false diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 026b0c15..5493d6dc 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -108,6 +108,7 @@ initializePreDomReady = -> requestHandlers = hideUpgradeNotification: -> HUD.hideUpgradeNotification() showUpgradeNotification: (request) -> HUD.showUpgradeNotification(request.version) + showHUDforDuration: (request) -> HUD.showForDuration request.text, request.duration toggleHelpDialog: (request) -> toggleHelpDialog(request.dialogHtml, request.frameId) focusFrame: (request) -> if (frameId == request.frameId) then focusThisFrame(request.highlight) refreshCompletionKeys: refreshCompletionKeys @@ -203,7 +204,7 @@ executePageCommand = (request) -> setScrollPosition = (scrollX, scrollY) -> if (scrollX > 0 || scrollY > 0) - DomUtils.documentReady(-> window.scrollBy(scrollX, scrollY)) + DomUtils.documentReady(-> window.scrollTo(scrollX, scrollY)) # # Called from the backend in order to change frame focus. -- cgit v1.2.3