aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-01-06 10:52:13 +0000
committerStephen Blott2015-01-06 11:14:59 +0000
commitb0f56ca439af45b62b23efd8c19c3838945f21f4 (patch)
tree49eac8592cc1de0d2c33cd2030b551b09f3990d2
parent3594bad00aec580bc837e2b2cc6d4051da149da0 (diff)
downloadvimium-b0f56ca439af45b62b23efd8c19c3838945f21f4.tar.bz2
Modes; yet more minor tweeks.
-rw-r--r--content_scripts/mode.coffee6
-rw-r--r--content_scripts/mode_find.coffee3
-rw-r--r--content_scripts/mode_insert.coffee4
3 files changed, 10 insertions, 3 deletions
diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee
index b3cca56c..b81a4ede 100644
--- a/content_scripts/mode.coffee
+++ b/content_scripts/mode.coffee
@@ -67,6 +67,8 @@ class Mode
console.log @count, "create:", @name
@handlers = []
+ @exitHandlers = []
+
@push
keydown: @keydown
keypress: @keypress
@@ -78,9 +80,13 @@ class Mode
push: (handlers) ->
@handlers.push handlerStack.push handlers
+ onExit: (handler) ->
+ @exitHandlers.push handler
+
exit: ->
if @modeIsActive
console.log @count, "exit:", @name
+ handler() for handler in @exitHandlers
handlerStack.remove handlerId for handlerId in @handlers
Mode.modes = Mode.modes.filter (mode) => mode != @
Mode.updateBadge()
diff --git a/content_scripts/mode_find.coffee b/content_scripts/mode_find.coffee
index 0937c510..85cdc6c5 100644
--- a/content_scripts/mode_find.coffee
+++ b/content_scripts/mode_find.coffee
@@ -10,7 +10,8 @@ class PostFindMode extends InsertModeBlocker
constructor: (findModeAnchorNode) ->
element = document.activeElement
- super PostFindMode, element, {name: "post-find"}
+ super element,
+ name: "post-find"
return @exit() unless element and findModeAnchorNode
diff --git a/content_scripts/mode_insert.coffee b/content_scripts/mode_insert.coffee
index 2b0ebb45..24442928 100644
--- a/content_scripts/mode_insert.coffee
+++ b/content_scripts/mode_insert.coffee
@@ -87,9 +87,9 @@ class InsertModeTrigger extends Mode
# mode on focusable elements.
# If @element is provided, then don't suppress focus events, and suppress keydown events only on @element.
class InsertModeBlocker extends SingletonMode
- constructor: (singleton=InsertModeBlocker, @element=null, options={}) ->
+ constructor: (@element=null, options={}) ->
options.name ||= "insert-blocker"
- super singleton, options
+ super InsertModeBlocker, options
unless @element?
@push