aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content_scripts/mode_key_handler.coffee11
-rw-r--r--pages/help_dialog.coffee10
-rw-r--r--pages/options.coffee2
3 files changed, 18 insertions, 5 deletions
diff --git a/content_scripts/mode_key_handler.coffee b/content_scripts/mode_key_handler.coffee
index bafdfd56..b6f384ce 100644
--- a/content_scripts/mode_key_handler.coffee
+++ b/content_scripts/mode_key_handler.coffee
@@ -37,12 +37,17 @@ class KeyHandlerMode extends Mode
onKeydown: (event) ->
keyChar = KeyboardUtils.getKeyCharString event
isEscape = KeyboardUtils.isEscape event
- if isEscape and @countPrefix == 0 and @keyState.length == 1
- @continueBubbling
- else if isEscape
+ if isEscape and (@countPrefix != 0 or @keyState.length != 1)
@keydownEvents[event.keyCode] = true
@reset()
false # Suppress event.
+ # If the help dialog loses the focus, then Escape should hide it; see point 2 in #2045.
+ else if isEscape and HelpDialog?.showing
+ @keydownEvents[event.keyCode] = true
+ HelpDialog.hide()
+ false # Suppress event.
+ else if isEscape
+ @continueBubbling
else if @isMappedKey keyChar
@keydownEvents[event.keyCode] = true
@handleKeyChar keyChar
diff --git a/pages/help_dialog.coffee b/pages/help_dialog.coffee
index e16fd5d3..997ea915 100644
--- a/pages/help_dialog.coffee
+++ b/pages/help_dialog.coffee
@@ -27,11 +27,19 @@ HelpDialog =
HelpDialog.toggleAdvancedCommands, false)
document.documentElement.addEventListener "click", (event) =>
- @hide() unless @dialogElement.contains event.target
+ # Normally, we hide the help dialog on "click". On the options page though, we do not. This allows the
+ # user to view the help page while typing command names into the key mappings input; see #2045.
+ @hide() unless @isVimiumOptionsPage() or @dialogElement.contains event.target
, false
isReady: -> true
+ isVimiumOptionsPage: ->
+ try
+ window.top.isVimiumOptionsPage
+ catch
+ false
+
show: (html) ->
for own placeholder, htmlString of html
@dialogElement.querySelector("#help-dialog-#{placeholder}").innerHTML = htmlString
diff --git a/pages/options.coffee b/pages/options.coffee
index 6070400e..c708efa7 100644
--- a/pages/options.coffee
+++ b/pages/options.coffee
@@ -322,4 +322,4 @@ document.addEventListener "DOMContentLoaded", ->
# Exported for tests.
root = exports ? window
-root.Options = Options
+extend root, {Options, isVimiumOptionsPage: true}