aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorStephen Blott2015-01-18 06:27:38 +0000
committerStephen Blott2015-01-18 10:25:31 +0000
commit0e59b99e95e6a4fd3f64fd284e7417ba5f7e22e1 (patch)
tree19fddb33de1e00b8024c4cb5c86dc483169da885 /lib
parent9cb0f2853a155e39270282e6ed224966afffc61e (diff)
downloadvimium-0e59b99e95e6a4fd3f64fd284e7417ba5f7e22e1.tar.bz2
Modes; pre-merge clean up.
Diffstat (limited to 'lib')
-rw-r--r--lib/dom_utils.coffee8
-rw-r--r--lib/handler_stack.coffee18
2 files changed, 17 insertions, 9 deletions
diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee
index 322188b3..e1f1f442 100644
--- a/lib/dom_utils.coffee
+++ b/lib/dom_utils.coffee
@@ -166,6 +166,14 @@ DomUtils =
node = node.parentNode
false
+ # True if element contains the active selection range.
+ isSelected: (element) ->
+ if element.isContentEditable
+ node = document.getSelection()?.anchorNode
+ node and @isDOMDescendant element, node
+ else
+ element.selectionStart? and element.selectionEnd? and element.selectionStart != element.selectionEnd
+
simulateSelect: (element) ->
element.focus()
# When focusing a textbox, put the selection caret at the end of the textbox's contents.
diff --git a/lib/handler_stack.coffee b/lib/handler_stack.coffee
index fddc45db..76d835b7 100644
--- a/lib/handler_stack.coffee
+++ b/lib/handler_stack.coffee
@@ -13,25 +13,24 @@ class HandlerStack
@stopBubblingAndTrue = new Object()
# A handler should return this value to indicate that the event has been consumed, and no further
- # processing should take place.
+ # processing should take place. The event does not propagate to the underlying page.
@stopBubblingAndFalse = new Object()
# A handler should return this value to indicate that bubbling should be restarted. Typically, this is
- # used when, while bubbling an event, a new mode is pushed onto the stack. See `focusInput` for an
- # example.
+ # used when, while bubbling an event, a new mode is pushed onto the stack.
@restartBubbling = new Object()
# Adds a handler to the top of the stack. Returns a unique ID for that handler that can be used to remove it
# later.
push: (handler) ->
- handler.id = ++@counter
handler._name ||= "anon-#{@counter}"
@stack.push handler
- handler.id
+ handler.id = ++@counter
- # Adds a handler to the bottom of the stack. Returns a unique ID for that handler that can be used to remove
- # it later.
+ # As above, except the new handler is added to the bottom of the stack.
unshift: (handler) ->
+ handler._name ||= "anon-#{@counter}"
+ handler._name += "/unshift"
@stack.unshift handler
handler.id = ++@counter
@@ -84,8 +83,9 @@ class HandlerStack
# Debugging.
logResult: (type, event, handler, result) ->
# FIXME(smblott). Badge updating is too noisy, so we filter it out. However, we do need to look at how
- # many badge update events are happening. It seems to be more than necessary.
- return if type == "updateBadge"
+ # many badge update events are happening. It seems to be more than necessary. We also filter out
+ # registerKeyQueue as unnecessarily noisy and not particularly helpful.
+ return if type in [ "updateBadge", "registerKeyQueue" ]
label =
switch result
when @stopBubblingAndTrue then "stop/true"