diff options
| author | Stephen Blott | 2015-01-21 11:34:56 +0000 |
|---|---|---|
| committer | Stephen Blott | 2015-01-21 12:27:52 +0000 |
| commit | 0ec38c1050b00845abaa2faa9f56d04c9d2b8992 (patch) | |
| tree | 9a6c25e2178905a8c094bfbf25c428d129de33fc /content_scripts/mode_edit.coffee | |
| parent | 6f73864899e1c802fd504dec1dcd1644d513d97d (diff) | |
| download | vimium-0ec38c1050b00845abaa2faa9f56d04c9d2b8992.tar.bz2 | |
Edit mode: initial framework.
Diffstat (limited to 'content_scripts/mode_edit.coffee')
| -rw-r--r-- | content_scripts/mode_edit.coffee | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/content_scripts/mode_edit.coffee b/content_scripts/mode_edit.coffee new file mode 100644 index 00000000..32f2e796 --- /dev/null +++ b/content_scripts/mode_edit.coffee @@ -0,0 +1,33 @@ + +class EditMode extends Mode + @activeElements = [] + + constructor: (options = {}) -> + defaults = + name: "edit" + exitOnEscape: true + keydown: (event) => if @isActive() then @handleKeydown event else @continueBubbling + keypress: (event) => if @isActive() then @handleKeypress event else @continueBubbling + keyup: (event) => if @isActive() then @handleKeyup event else @continueBubbling + + @element = document.activeElement + if @element and DomUtils.isEditable @element + super extend defaults, options + + handleKeydown: (event) -> @suppressEvent + handleKeypress: (event) -> @suppressEvent + handleKeyup: (event) -> @suppressEvent + + isActive: -> + document.activeElement and DomUtils.isDOMDescendant @element, document.activeElement + + exit: (event, target) -> + super() + @element.blur() if target? and DomUtils.isDOMDescendant @element, target + EditMode.activeElements = EditMode.activeElements.filter (element) => element != @element + + updateBadge: (badge) -> + badge.badge = "E" if @isActive() + +root = exports ? window +root.EditMode = EditMode |
