aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts
diff options
context:
space:
mode:
authorJez Ng2012-10-26 13:27:37 -0400
committerJez Ng2012-10-29 18:28:46 -0400
commitaeb455a577c0a20684f357ff737203b5cb419cd4 (patch)
tree184db85bb1569360854c4c2814634f1c580efe9b /content_scripts
parent76622cd99cf671531cfa21c5d6243f3e4e185116 (diff)
downloadvimium-aeb455a577c0a20684f357ff737203b5cb419cd4.tar.bz2
Implement marks.
Diffstat (limited to 'content_scripts')
-rw-r--r--content_scripts/marks.coffee45
-rw-r--r--content_scripts/vimium_frontend.coffee3
2 files changed, 47 insertions, 1 deletions
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.