From 5885bc779bed46dfcff4b1e82968151448569f9f Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Tue, 19 Aug 2014 18:15:13 +0100 Subject: Move the vomnibar to an iframe --- content_scripts/vimium_frontend.coffee | 2 ++ 1 file changed, 2 insertions(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 137b9d1a..0a835de9 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -121,6 +121,8 @@ initializePreDomReady = -> getActiveState: -> { enabled: isEnabledForUrl, passKeys: passKeys } setState: setState currentKeyQueue: (request) -> keyQueue = request.keyQueue + vomnibarShow: -> Vomnibar.show() + vomnibarClose: -> Vomnibar.close() chrome.runtime.onMessage.addListener (request, sender, sendResponse) -> # In the options page, we will receive requests from both content and background scripts. ignore those -- cgit v1.2.3 From 1c33590eb994403ec8520c1c02bfb4fe63831745 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 8 Dec 2014 01:15:06 +0000 Subject: Detect port disconnects (ie. extension is disabled) and disable frontend --- content_scripts/vimium_frontend.coffee | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 469afe71..f7bd805d 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -57,6 +57,16 @@ settings = @port = chrome.runtime.connect({ name: "settings" }) @port.onMessage.addListener(@receiveMessage) + # If the port is closed, the background page has gone away (since we never close it ourselves). Stub the + # settings object so we don't keep trying to connect to the extension even though it's gone away. + @port.onDisconnect.addListener => + @port = null + _get = @get # @get doesn't depend on @port, so we can continue to support it to try and reduce errors. + for own property, value of this + @[property] = (->) if "function" == typeof value + @get = _get + + get: (key) -> @values[key] set: (key, value) -> @@ -109,6 +119,13 @@ initializePreDomReady = -> # Send the key to the key handler in the background page. keyPort = chrome.runtime.connect({ name: "keyDown" }) + # If the port is closed, the background page has gone away (since we never close it ourselves). Disable all + # our event listeners, and stub out chrome.runtime.sendMessage/connect (to prevent errors). + # TODO(mrmr1993): Do some actual cleanup to free resources, hide UI, etc. + keyPort.onDisconnect.addListener -> + isEnabledForUrl = false + chrome.runtime.sendMessage = -> + chrome.runtime.connect = -> requestHandlers = hideUpgradeNotification: -> HUD.hideUpgradeNotification() -- cgit v1.2.3 From fa06a27b906a83c01ded4e0fe3b96e8e51a1a52d Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sat, 13 Dec 2014 17:18:52 +0000 Subject: Simplify settings port cleanup logic --- content_scripts/vimium_frontend.coffee | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index f7bd805d..62247c5c 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -61,10 +61,9 @@ settings = # settings object so we don't keep trying to connect to the extension even though it's gone away. @port.onDisconnect.addListener => @port = null - _get = @get # @get doesn't depend on @port, so we can continue to support it to try and reduce errors. for own property, value of this - @[property] = (->) if "function" == typeof value - @get = _get + # @get doesn't depend on @port, so we can continue to support it to try and reduce errors. + @[property] = (->) if "function" == typeof value and property != "get" get: (key) -> @values[key] -- cgit v1.2.3 From 82413203d258fafc0fc8da0d9b2daf760b46017b Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 19 May 2014 15:40:40 +0100 Subject: Implement cursor hiding on scroll This begins to address #662, by hiding the cursor when the page is scrolled to prevent a distracting cursor and accidentally triggering hover effects. --- content_scripts/vimium_frontend.coffee | 54 ++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 469afe71..98e9a172 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -183,6 +183,7 @@ initializeOnDomReady = -> # Tell the background page we're in the dom ready state. chrome.runtime.connect({ name: "domReady" }) + CursorHider.init() registerFrame = -> # Don't register frameset containers; focusing them is no use. @@ -1067,6 +1068,59 @@ Tween = value = (elapsed / state.duration) * (state.to - state.from) + state.from state.onUpdate(value) +CursorHider = + # + # Hides the cursor when the browser scrolls, and prevent mouse from hovering while invisible + # + cursorHidden: false + hoverBlockElement: undefined + + hideCursor: -> + unless @cursorHidden + @hoverBlockElement.style.display = "block" + @cursorHidden = true + + showCursor: -> + if @cursorHidden + @hoverBlockElement.style.display = "none" + @cursorHidden = false + + onMouseMove: (event) -> + CursorHider.showCursor() + + onScroll: -> + CursorHider.hideCursor() + + # Ignore next mousemove, caused by the scrolling, so the mouse doesn't re-show straight away. + window.removeEventListener "mousemove", CursorHider.onMouseMove + window.addEventListener "mousemove", -> + window.addEventListener "mousemove", CursorHider.onMouseMove + window.removeEventListener "mousemove", arguments.callee + + init: -> + # cover the element entirely by a div with cursor: none + @hoverBlockElement = document.createElement("div") + @hoverBlockElement.style.position = "fixed" + @hoverBlockElement.style.width = "104%" + @hoverBlockElement.style.height = "104%" + @hoverBlockElement.style.zIndex = "2147483647" # Maximum value of z-index + @hoverBlockElement.style.left = "0px" + @hoverBlockElement.style.top = "0px" + @hoverBlockElement.style.opacity = "0.0" + @hoverBlockElement.style.display = "none" + @hoverBlockElement.style.cursor = "none" + @hoverBlockElement.style.border = "none" + @hoverBlockElement.style.margin = "-2% -2% -2% -2%" + document.body.appendChild(@hoverBlockElement) + + window.addEventListener "mousemove", @onMouseMove + window.addEventListener "scroll", @onScroll + + deinit: -> + window.removeEventListener "mousemove", @onMouseMove + window.removeEventListener "scroll", @onScroll + @showCursor() + initializePreDomReady() window.addEventListener("DOMContentLoaded", registerFrame) window.addEventListener("unload", unregisterFrame) -- cgit v1.2.3 From 70dcf4131a83a51e503d929438ba9eb887cbf0bd Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 14 Dec 2014 09:58:30 +0000 Subject: Use cursor: none and pointer-events: none to hide the cursor on scroll --- content_scripts/vimium_frontend.coffee | 40 ++++++++++------------------------ 1 file changed, 11 insertions(+), 29 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 98e9a172..f6a60c9c 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1072,23 +1072,15 @@ CursorHider = # # Hides the cursor when the browser scrolls, and prevent mouse from hovering while invisible # - cursorHidden: false - hoverBlockElement: undefined + cursorHideStyle: null + cursorHideTimeout: 5000 + showCursor: -> @cursorHideStyle.remove() hideCursor: -> - unless @cursorHidden - @hoverBlockElement.style.display = "block" - @cursorHidden = true + document.head.appendChild @cursorHideStyle unless @cursorHideStyle.parentElement - showCursor: -> - if @cursorHidden - @hoverBlockElement.style.display = "none" - @cursorHidden = false - - onMouseMove: (event) -> - CursorHider.showCursor() - - onScroll: -> + onMouseMove: (event) -> CursorHider.showCursor() + onScroll: (event) -> CursorHider.hideCursor() # Ignore next mousemove, caused by the scrolling, so the mouse doesn't re-show straight away. @@ -1098,21 +1090,11 @@ CursorHider = window.removeEventListener "mousemove", arguments.callee init: -> - # cover the element entirely by a div with cursor: none - @hoverBlockElement = document.createElement("div") - @hoverBlockElement.style.position = "fixed" - @hoverBlockElement.style.width = "104%" - @hoverBlockElement.style.height = "104%" - @hoverBlockElement.style.zIndex = "2147483647" # Maximum value of z-index - @hoverBlockElement.style.left = "0px" - @hoverBlockElement.style.top = "0px" - @hoverBlockElement.style.opacity = "0.0" - @hoverBlockElement.style.display = "none" - @hoverBlockElement.style.cursor = "none" - @hoverBlockElement.style.border = "none" - @hoverBlockElement.style.margin = "-2% -2% -2% -2%" - document.body.appendChild(@hoverBlockElement) - + @cursorHideStyle = document.createElement("style") + @cursorHideStyle.innerHTML = """ + body * {pointer-events: none !important; cursor: none !important;} + body {cursor: none !important;} + """ window.addEventListener "mousemove", @onMouseMove window.addEventListener "scroll", @onScroll -- cgit v1.2.3 From 9b9cee761f4c718f08dec92c46027a7effe39991 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 14 Dec 2014 11:19:36 +0000 Subject: Remove unused code in CursorHider --- content_scripts/vimium_frontend.coffee | 6 ------ 1 file changed, 6 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index f6a60c9c..23e320c0 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1073,7 +1073,6 @@ CursorHider = # Hides the cursor when the browser scrolls, and prevent mouse from hovering while invisible # cursorHideStyle: null - cursorHideTimeout: 5000 showCursor: -> @cursorHideStyle.remove() hideCursor: -> @@ -1098,11 +1097,6 @@ CursorHider = window.addEventListener "mousemove", @onMouseMove window.addEventListener "scroll", @onScroll - deinit: -> - window.removeEventListener "mousemove", @onMouseMove - window.removeEventListener "scroll", @onScroll - @showCursor() - initializePreDomReady() window.addEventListener("DOMContentLoaded", registerFrame) window.addEventListener("unload", unregisterFrame) -- cgit v1.2.3 From aa190905bff04bd83438960779ce912b048b1f5f Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 14 Dec 2014 11:51:42 +0000 Subject: Use a boolean to track whether we are scrolling in CursorHider --- content_scripts/vimium_frontend.coffee | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 23e320c0..30d76523 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1073,21 +1073,21 @@ CursorHider = # Hides the cursor when the browser scrolls, and prevent mouse from hovering while invisible # cursorHideStyle: null + isScrolling: false showCursor: -> @cursorHideStyle.remove() hideCursor: -> document.head.appendChild @cursorHideStyle unless @cursorHideStyle.parentElement - onMouseMove: (event) -> CursorHider.showCursor() + onMouseMove: (event) -> + if CursorHider.isScrolling # This event was caused by scrolling, don't show the cursor. + CursorHider.isScrolling = false + else + CursorHider.showCursor() onScroll: (event) -> + CursorHider.isScrolling = true CursorHider.hideCursor() - # Ignore next mousemove, caused by the scrolling, so the mouse doesn't re-show straight away. - window.removeEventListener "mousemove", CursorHider.onMouseMove - window.addEventListener "mousemove", -> - window.addEventListener "mousemove", CursorHider.onMouseMove - window.removeEventListener "mousemove", arguments.callee - init: -> @cursorHideStyle = document.createElement("style") @cursorHideStyle.innerHTML = """ -- cgit v1.2.3 From 69c117102eb419baa649cccc770bffea5177b1e1 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 14 Dec 2014 11:57:19 +0000 Subject: Check if cursorHideStyle is in the document before remove()-ing it --- content_scripts/vimium_frontend.coffee | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 30d76523..639a4041 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1075,7 +1075,8 @@ CursorHider = cursorHideStyle: null isScrolling: false - showCursor: -> @cursorHideStyle.remove() + showCursor: -> + @cursorHideStyle.remove() if @cursorHideStyle.parentElement hideCursor: -> document.head.appendChild @cursorHideStyle unless @cursorHideStyle.parentElement -- cgit v1.2.3 From 9c677fc91cd2641c709bb1afe03466c92b0ee0ea Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 14 Dec 2014 15:36:15 +0000 Subject: Minor refactoring of CursorHider. --- content_scripts/vimium_frontend.coffee | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index aeb74dcd..9478a7d5 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1089,23 +1089,20 @@ Tween = CursorHider = # # Hides the cursor when the browser scrolls, and prevent mouse from hovering while invisible + # NOTE(smblott) onScroll and onMouseMove events come in pairs. # cursorHideStyle: null isScrolling: false - showCursor: -> - @cursorHideStyle.remove() if @cursorHideStyle.parentElement - hideCursor: -> - document.head.appendChild @cursorHideStyle unless @cursorHideStyle.parentElement - - onMouseMove: (event) -> - if CursorHider.isScrolling # This event was caused by scrolling, don't show the cursor. - CursorHider.isScrolling = false - else - CursorHider.showCursor() onScroll: (event) -> CursorHider.isScrolling = true - CursorHider.hideCursor() + unless CursorHider.cursorHideStyle.parentElement + document.head.appendChild CursorHider.cursorHideStyle + + onMouseMove: (event) -> + if CursorHider.cursorHideStyle.parentElement and not CursorHider.isScrolling + CursorHider.cursorHideStyle.remove() + CursorHider.isScrolling = false init: -> @cursorHideStyle = document.createElement("style") -- cgit v1.2.3 From 886e94e5c1563483702208675c5d12735f007938 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 14 Dec 2014 15:58:22 +0000 Subject: FRAMESET frames should not be registered. Somewhere along the road, this got goofed up. This reverts to the intended behaviour. --- content_scripts/vimium_frontend.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 9478a7d5..fc65f6c0 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -205,7 +205,7 @@ initializeOnDomReady = -> registerFrame = -> # Don't register frameset containers; focusing them is no use. - if document.body.tagName != "FRAMESET" + if document.body.tagName.toLowerCase() != "frameset" chrome.runtime.sendMessage handler: "registerFrame" frameId: frameId -- cgit v1.2.3 From 932652086c9ad601c92ef4aae250f9e0b6ad51a6 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Wed, 17 Dec 2014 14:51:25 +0000 Subject: Ensure we only init CursorHider once --- content_scripts/vimium_frontend.coffee | 1 + 1 file changed, 1 insertion(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index e4680ff7..78014490 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1124,6 +1124,7 @@ CursorHider = CursorHider.isScrolling = false init: -> + return unless @cursorHideStyle? @cursorHideStyle = document.createElement("style") @cursorHideStyle.innerHTML = """ body * {pointer-events: none !important; cursor: none !important;} -- cgit v1.2.3 From 6ceb3bcc612cd4478187610cf61a82a8f95534ac Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Wed, 17 Dec 2014 15:37:57 +0000 Subject: Revert 932652086c9ad601c92ef4aae250f9e0b6ad51a6. --- content_scripts/vimium_frontend.coffee | 1 - 1 file changed, 1 deletion(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 78014490..e4680ff7 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1124,7 +1124,6 @@ CursorHider = CursorHider.isScrolling = false init: -> - return unless @cursorHideStyle? @cursorHideStyle = document.createElement("style") @cursorHideStyle.innerHTML = """ body * {pointer-events: none !important; cursor: none !important;} -- cgit v1.2.3 From 3b25fd52431130aa5c3e9359075574458c307ef2 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Wed, 17 Dec 2014 15:49:57 +0000 Subject: Disable CursorHider pending fix for #1345. --- content_scripts/vimium_frontend.coffee | 2 ++ 1 file changed, 2 insertions(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index e4680ff7..6dd244de 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1124,6 +1124,8 @@ CursorHider = CursorHider.isScrolling = false init: -> + # NOTE(smblott) CursorHider is currently disabled pending a fix for #1345. + return @cursorHideStyle = document.createElement("style") @cursorHideStyle.innerHTML = """ body * {pointer-events: none !important; cursor: none !important;} -- cgit v1.2.3 From 2424b8ecc1eeb3b1728f7d4a30db77fccdc8fa05 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Wed, 17 Dec 2014 14:39:52 +0000 Subject: Ensure cursor is hidden on scroll --- content_scripts/vimium_frontend.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 6dd244de..fcf5dac1 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1129,7 +1129,7 @@ CursorHider = @cursorHideStyle = document.createElement("style") @cursorHideStyle.innerHTML = """ body * {pointer-events: none !important; cursor: none !important;} - body {cursor: none !important;} + body, html {cursor: none !important;} """ window.addEventListener "mousemove", @onMouseMove window.addEventListener "scroll", @onScroll -- cgit v1.2.3 From 107cef3ecd0bdbcaba157b53cc3d20ff5e06b94f Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Wed, 17 Dec 2014 20:21:33 +0000 Subject: Disable cursor hiding for Chrome versions < 39.0.2171.71 There is a bug for earlier versions of Chrome which leaves `pointer-events: none` stuck enabled for Google+ after a certain amount of scrolling. --- content_scripts/vimium_frontend.coffee | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index fcf5dac1..6f099e54 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1107,7 +1107,8 @@ Tween = CursorHider = # - # Hides the cursor when the browser scrolls, and prevent mouse from hovering while invisible + # Hides the cursor when the browser scrolls, and prevent mouse from hovering while invisible. + # Disabled for Chrome versions less than 39.0.2171.71 due to a browser error. # NOTE(smblott) onScroll and onMouseMove events come in pairs. # cursorHideStyle: null @@ -1124,8 +1125,10 @@ CursorHider = CursorHider.isScrolling = false init: -> - # NOTE(smblott) CursorHider is currently disabled pending a fix for #1345. - return + # Disable for Chrome versions less than 39.0.2171.71 due to a browser error. + chromeVersion = navigator.appVersion.match(/Chrome\/(.*?) /)?[1] || "" + return if 0 <= Utils.compareVersions "39.0.2171.71", chromeVersion + @cursorHideStyle = document.createElement("style") @cursorHideStyle.innerHTML = """ body * {pointer-events: none !important; cursor: none !important;} -- cgit v1.2.3 From 226cfb8011e83e48b9c723ebc891ad0e9a7c82ec Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Fri, 19 Dec 2014 05:38:29 +0000 Subject: Tidy cursor hider, move haveChromeVersion to utils. --- content_scripts/vimium_frontend.coffee | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 6f099e54..21a05de6 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1107,9 +1107,7 @@ Tween = CursorHider = # - # Hides the cursor when the browser scrolls, and prevent mouse from hovering while invisible. - # Disabled for Chrome versions less than 39.0.2171.71 due to a browser error. - # NOTE(smblott) onScroll and onMouseMove events come in pairs. + # Hide the cursor when the browser scrolls, and prevent mouse from hovering while invisible. # cursorHideStyle: null isScrolling: false @@ -1125,9 +1123,9 @@ CursorHider = CursorHider.isScrolling = false init: -> - # Disable for Chrome versions less than 39.0.2171.71 due to a browser error. - chromeVersion = navigator.appVersion.match(/Chrome\/(.*?) /)?[1] || "" - return if 0 <= Utils.compareVersions "39.0.2171.71", chromeVersion + # Disable cursor hiding for Chrome versions less than 39.0.2171.71 due to a suspected browser error. + # See #1345 and #1348. + return unless Utils.haveChromeVersion "39.0.2171.71" @cursorHideStyle = document.createElement("style") @cursorHideStyle.innerHTML = """ -- cgit v1.2.3 From 7a99764137d600dc65e76da5093e91d2ecd5eaeb Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Fri, 19 Dec 2014 06:37:14 +0000 Subject: Disable cursor hider. See #1359. There appear to be common cases where the cursor hider doesn't hide the cursor. So the UX is inconsistent. We need to consider whether this is fixable or acceptable. --- content_scripts/vimium_frontend.coffee | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 21a05de6..8d8a67e4 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1123,6 +1123,10 @@ CursorHider = CursorHider.isScrolling = false init: -> + # Temporarily disabled pending consideration of #1359 (in particular, whether cursor hiding is too fragile + # as to provide a consistent UX). + return + # Disable cursor hiding for Chrome versions less than 39.0.2171.71 due to a suspected browser error. # See #1345 and #1348. return unless Utils.haveChromeVersion "39.0.2171.71" -- cgit v1.2.3 From d7597f407ea7932b1f985160c3f688801d035fcc Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Wed, 29 Oct 2014 21:34:32 +0000 Subject: Reintroduce 2c7bebb5f2c873850c2b2d82013cab4eb3d4913c --- content_scripts/vimium_frontend.coffee | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 2de612d4..90ac227a 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -436,15 +436,13 @@ onKeydown = (event) -> keyChar = "<" + keyChar + ">" if (isInsertMode() && KeyboardUtils.isEscape(event)) - # Note that we can't programmatically blur out of Flash embeds from Javascript. - if (!isEmbed(event.srcElement)) + if isEditable(event.srcElement) or isEmbed(event.srcElement) # Remove focus so the user can't just get himself back into insert mode by typing in the same input # box. - if (isEditable(event.srcElement)) - event.srcElement.blur() - exitInsertMode() - DomUtils.suppressEvent event - KeydownEvents.push event + event.srcElement.blur() + exitInsertMode() + DomUtils.suppressEvent event + handledKeydownEvents.push event else if (findMode) if (KeyboardUtils.isEscape(event)) -- cgit v1.2.3 From 99d784ff593378be41b5e6eb87867826fee9e921 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 22 Dec 2014 16:56:29 +0000 Subject: Add comment regarding .blur() on embeds. Including embeds for .blur() etc. here is experimental. It appears to be the right thing to do for most common use cases. However, it could also cripple flash-based sites and games. See discussion in #1211 and #1194. --- content_scripts/vimium_frontend.coffee | 3 +++ 1 file changed, 3 insertions(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index eacba682..071e87a6 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -458,6 +458,9 @@ onKeydown = (event) -> if isEditable(event.srcElement) or isEmbed(event.srcElement) # Remove focus so the user can't just get himself back into insert mode by typing in the same input # box. + # NOTE(smblott, 2014/12/22) Including embeds for .blur() etc. here is experimental. It appears to be + # the right thing to do for most common use cases. However, it could also cripple flash-based sites and + # games. See discussion in #1211 and #1194. event.srcElement.blur() exitInsertMode() DomUtils.suppressEvent event -- cgit v1.2.3 From d20caa49075c0605ec2196416a5633d5e205b615 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 28 Dec 2014 19:53:06 +0000 Subject: Add an example test for UIComponent --- content_scripts/vimium_frontend.coffee | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 1f116f88..245e481a 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -181,6 +181,8 @@ window.addEventListener "focus", -> initializeOnDomReady = -> enterInsertModeIfElementIsFocused() if isEnabledForUrl + testUIComponentSetup() + # Tell the background page we're in the dom ready state. chrome.runtime.connect({ name: "domReady" }) @@ -920,6 +922,10 @@ exitFindMode = -> window.showHelpDialog = (html, fid) -> return if (isShowingHelpDialog || !document.body || fid != frameId) + + testUIComponent.show() + testUIComponent.postMessage "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" + isShowingHelpDialog = true container = document.createElement("div") container.id = "vimiumHelpDialogContainer" @@ -966,6 +972,9 @@ window.showHelpDialog = (html, fid) -> hideHelpDialog = (clickEvent) -> + + testUIComponent.hide() + isShowingHelpDialog = false helpDialog = document.getElementById("vimiumHelpDialogContainer") if (helpDialog) @@ -1086,6 +1095,12 @@ Tween = value = (elapsed / state.duration) * (state.to - state.from) + state.from state.onUpdate(value) +testUIComponent = null +testUIComponentSetup = -> + testUIComponent = new UIComponent "pages/test_ui_component.html", "testUIComponent" + testUIComponent.setHideStyle "display: none;" + testUIComponent.setShowStyle "display: block;" + initializePreDomReady() window.addEventListener("DOMContentLoaded", registerFrame) window.addEventListener("unload", unregisterFrame) -- cgit v1.2.3 From 71af7f016f51e3c8b9c1fcfba46cb8289c91e030 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 29 Dec 2014 08:12:59 +0000 Subject: IFrame framework; develop demo. --- content_scripts/vimium_frontend.coffee | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 245e481a..5c166ff0 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -923,9 +923,6 @@ exitFindMode = -> window.showHelpDialog = (html, fid) -> return if (isShowingHelpDialog || !document.body || fid != frameId) - testUIComponent.show() - testUIComponent.postMessage "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" - isShowingHelpDialog = true container = document.createElement("div") container.id = "vimiumHelpDialogContainer" @@ -972,9 +969,6 @@ window.showHelpDialog = (html, fid) -> hideHelpDialog = (clickEvent) -> - - testUIComponent.hide() - isShowingHelpDialog = false helpDialog = document.getElementById("vimiumHelpDialogContainer") if (helpDialog) @@ -1101,6 +1095,10 @@ testUIComponentSetup = -> testUIComponent.setHideStyle "display: none;" testUIComponent.setShowStyle "display: block;" +window.activateTestUIComponent = -> + testUIComponent.show() + testUIComponent.postMessage "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" + initializePreDomReady() window.addEventListener("DOMContentLoaded", registerFrame) window.addEventListener("unload", unregisterFrame) -- cgit v1.2.3 From 4e3ef0b401cfb4682a17a1ee88058ed76d64be20 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 29 Dec 2014 10:29:09 +0000 Subject: Small changes to UIComponent --- content_scripts/vimium_frontend.coffee | 1 - 1 file changed, 1 deletion(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 5c166ff0..a505a84a 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -922,7 +922,6 @@ exitFindMode = -> window.showHelpDialog = (html, fid) -> return if (isShowingHelpDialog || !document.body || fid != frameId) - isShowingHelpDialog = true container = document.createElement("div") container.id = "vimiumHelpDialogContainer" -- cgit v1.2.3 From 0433dd338258dc39466593e0bce5fa3253f8d6d5 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 29 Dec 2014 10:38:25 +0000 Subject: Allow message passing directly from UIComponent.show --- content_scripts/vimium_frontend.coffee | 2 -- 1 file changed, 2 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index a505a84a..beb6c528 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1091,8 +1091,6 @@ Tween = testUIComponent = null testUIComponentSetup = -> testUIComponent = new UIComponent "pages/test_ui_component.html", "testUIComponent" - testUIComponent.setHideStyle "display: none;" - testUIComponent.setShowStyle "display: block;" window.activateTestUIComponent = -> testUIComponent.show() -- cgit v1.2.3 From f53af786275c98ce08f51936b165d799a41de024 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 29 Dec 2014 10:39:44 +0000 Subject: Update test for UIComponent --- content_scripts/vimium_frontend.coffee | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index beb6c528..502ecaef 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1093,8 +1093,7 @@ testUIComponentSetup = -> testUIComponent = new UIComponent "pages/test_ui_component.html", "testUIComponent" window.activateTestUIComponent = -> - testUIComponent.show() - testUIComponent.postMessage "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" + testUIComponent.show "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" initializePreDomReady() window.addEventListener("DOMContentLoaded", registerFrame) -- cgit v1.2.3 From 4af43db2e65af772787ab55c44604f4760eaee3d Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 29 Dec 2014 10:46:42 +0000 Subject: Update UIComponent test --- content_scripts/vimium_frontend.coffee | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 502ecaef..a0623d32 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1091,6 +1091,13 @@ Tween = testUIComponent = null testUIComponentSetup = -> testUIComponent = new UIComponent "pages/test_ui_component.html", "testUIComponent" + testUIComponent.addEventListener "message", (event) -> + if event.data == "hide" + @hide() + window.focus() + false + else + true window.activateTestUIComponent = -> testUIComponent.show "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" -- cgit v1.2.3 From a6dc63fd7c49926e6ad32174621b32eeb3fd9283 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 29 Dec 2014 11:30:41 +0000 Subject: Update UIComponent test --- content_scripts/vimium_frontend.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index a0623d32..3f898b74 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1100,7 +1100,7 @@ testUIComponentSetup = -> true window.activateTestUIComponent = -> - testUIComponent.show "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" + testUIComponent.activate "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" initializePreDomReady() window.addEventListener("DOMContentLoaded", registerFrame) -- cgit v1.2.3 From 0524bdc3f76279e8930bfe4b1b42d93e0e9bf6e4 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 29 Dec 2014 14:22:53 +0000 Subject: Refactor UIComponent, etc., and demo. - Simplify component API. - Iframe flashes on re-focus. - Probably some other stuff which I've forgotten. --- content_scripts/vimium_frontend.coffee | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 3f898b74..8fcb16ed 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1090,17 +1090,17 @@ Tween = testUIComponent = null testUIComponentSetup = -> - testUIComponent = new UIComponent "pages/test_ui_component.html", "testUIComponent" - testUIComponent.addEventListener "message", (event) -> + testUIComponent = new UIComponent "pages/test_ui_component.html", "testUIComponent", (event) -> if event.data == "hide" @hide() window.focus() - false else - true + # ... And we can get data back! + console.log event.data window.activateTestUIComponent = -> - testUIComponent.activate "version: #{chrome.runtime.getManifest().version}; random number: #{Math.random()}" + chrome.storage.local.get "vimiumSecret", ({vimiumSecret: secret}) -> + testUIComponent.activate [chrome.runtime.getManifest().version, secret, Math.random(), ].join "
" initializePreDomReady() window.addEventListener("DOMContentLoaded", registerFrame) -- cgit v1.2.3 From 2dc855abaeeda8ad74c3179f7224858860672338 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 29 Dec 2014 17:32:03 +0000 Subject: Remove UI component demo. --- content_scripts/vimium_frontend.coffee | 1 + 1 file changed, 1 insertion(+) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 114786e8..2de08c39 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -198,6 +198,7 @@ window.addEventListener "focus", -> # initializeOnDomReady = -> enterInsertModeIfElementIsFocused() if isEnabledForUrl + # Tell the background page we're in the dom ready state. chrome.runtime.connect({ name: "domReady" }) CursorHider.init() -- cgit v1.2.3 From 57418a9ad6104c487b67fcfd27ec8503858e5a14 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 29 Dec 2014 18:55:06 +0000 Subject: Use UIComponent for Vomnibar iframe --- content_scripts/vimium_frontend.coffee | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 2de08c39..ae275f0c 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -139,8 +139,6 @@ initializePreDomReady = -> getActiveState: -> { enabled: isEnabledForUrl, passKeys: passKeys } setState: setState currentKeyQueue: (request) -> keyQueue = request.keyQueue - vomnibarShow: -> Vomnibar.show() - vomnibarClose: -> Vomnibar.close() chrome.runtime.onMessage.addListener (request, sender, sendResponse) -> # In the options page, we will receive requests from both content and background scripts. ignore those @@ -202,6 +200,7 @@ initializeOnDomReady = -> # Tell the background page we're in the dom ready state. chrome.runtime.connect({ name: "domReady" }) CursorHider.init() + Vomnibar.init() registerFrame = -> # Don't register frameset containers; focusing them is no use. -- cgit v1.2.3 From fc2201b996e47ca06090e10e4ebfcd9f4b345fde Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 4 Jan 2015 06:43:06 +0000 Subject: Catch undefined reference to handledKeydownEvents. --- content_scripts/vimium_frontend.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index ae275f0c..351a2690 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -463,7 +463,7 @@ onKeydown = (event) -> event.srcElement.blur() exitInsertMode() DomUtils.suppressEvent event - handledKeydownEvents.push event + KeydownEvents.push event else if (findMode) if (KeyboardUtils.isEscape(event)) -- cgit v1.2.3