aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/vimium_frontend.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'content_scripts/vimium_frontend.coffee')
-rw-r--r--content_scripts/vimium_frontend.coffee36
1 files changed, 13 insertions, 23 deletions
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee
index 4dcdfe7d..537dbaa9 100644
--- a/content_scripts/vimium_frontend.coffee
+++ b/content_scripts/vimium_frontend.coffee
@@ -119,7 +119,10 @@ class NormalMode extends KeyHandlerMode
You have asked Vimium to perform #{count} repetitions of the command: #{registryEntry.description}.\n
Are you sure you want to continue?"""
- if registryEntry.topFrame
+ if registryEntry.topFrame and window.isVimiumUIComponent? and window.isVimiumUIComponent
+ # We cannot use "topFrame" commands, most notably the Vomnibar, from within a UI component.
+ HUD.showForDuration "#{registryEntry.command} cannot be used here.", 2000
+ else if registryEntry.topFrame
chrome.runtime.sendMessage
handler: "sendMessageToFrames", message: {name: "runInTopFrame", sourceFrameId: frameId, registryEntry}
else if registryEntry.background
@@ -156,7 +159,7 @@ initializePreDomReady = ->
getScrollPosition: (ignoredA, ignoredB, sendResponse) ->
sendResponse scrollX: window.scrollX, scrollY: window.scrollY if frameId == 0
setScrollPosition: setScrollPosition
- # A frame has received the focus. We don't care here (the Vomnibar/UI-component handles this).
+ # A frame has received the focus. We don't care here (UI components handle this).
frameFocused: ->
checkEnabledAfterURLChange: checkEnabledAfterURLChange
runInTopFrame: ({sourceFrameId, registryEntry}) ->
@@ -626,29 +629,16 @@ enterFindMode = ->
# If we are in the help dialog iframe, HelpDialog is already defined with the necessary functions.
window.HelpDialog ?=
helpUI: null
- container: null
- showing: false
-
- init: ->
- return if @helpUI?
-
- @helpUI = new UIComponent "pages/help_dialog.html", "vimiumHelpDialogFrame", (event) =>
- @hide() if event.data == "hide"
-
- isReady: -> @helpUI
-
- show: (html) ->
- @init()
- return if @showing or !@isReady()
- @showing = true
- @helpUI.activate html
-
- hide: ->
- @showing = false
- @helpUI.hide()
+ isShowing: -> @helpUI?.showing
toggle: (html) ->
- if @showing then @hide() else @show html
+ @helpUI ?= new UIComponent "pages/help_dialog.html", "vimiumHelpDialogFrame", ->
+ if @isShowing()
+ @helpUI.hide()
+ else
+ # On the options page, we allow the help dialog to lose the focus, elsewhere we do not. This allows
+ # users to view the help dialog while typing in the key-mappings input.
+ @helpUI.activate {name: "activate", html, focus: true, allowBlur: window.isVimiumOptionsPage ? false}
initializePreDomReady()
DomUtils.documentReady initializeOnDomReady