diff options
| author | Stephen Blott | 2014-11-02 16:39:39 +0000 |
|---|---|---|
| committer | Stephen Blott | 2014-11-02 16:39:39 +0000 |
| commit | 5a31148dcbd657ba13ecec714bad74ca59cac7e1 (patch) | |
| tree | e897ddee894b0711920d2ef7ecc543b8c219f974 | |
| parent | d3a0e5b7e0d9d1cf8cf4e43e5dafde799bfe4c34 (diff) | |
| download | vimium-5a31148dcbd657ba13ecec714bad74ca59cac7e1.tar.bz2 | |
Control-ENTER in text option blurs and saves all options.
| -rw-r--r-- | pages/options.coffee | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/pages/options.coffee b/pages/options.coffee index c85acd9a..ba1635d5 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -38,6 +38,18 @@ class Option bgSettings.clear @field @fetch() + # Static method. + @saveOptions: -> + Option.all.map (option) -> option.save() + $("saveOptions").disabled = true + + # Used by text options. <ctrl-Enter> saves all options. + activateCtrlEnterListener: (element) -> + element.addEventListener "keyup", (event) -> + if event.ctrlKey and event.keyCode == 13 + element.blur() + Option.saveOptions() + # Abstract method; only implemented in sub-classes. # Populate the option's DOM element (@element) with the setting's current value. # populateElement: (value) -> DO_SOMETHING @@ -54,6 +66,7 @@ class TextOption extends Option constructor: (field,enableSaveButton) -> super(field,enableSaveButton) @element.addEventListener "input", enableSaveButton + @activateCtrlEnterListener @element populateElement: (value) -> @element.value = value readValueFromElement: -> @element.value.trim() @@ -61,6 +74,8 @@ class NonEmptyTextOption extends Option constructor: (field,enableSaveButton) -> super(field,enableSaveButton) @element.addEventListener "input", enableSaveButton + @activateCtrlEnterListener @element + populateElement: (value) -> @element.value = value # If the new value is not empty, then return it. Otherwise, restore the default value. readValueFromElement: -> if value = @element.value.trim() then value else @restoreToDefault() @@ -96,7 +111,8 @@ class ExclusionRulesOption extends Option for field in ["pattern", "passKeys"] element = row.querySelector ".#{field}" element.value = rule[field] - for event in [ "keyup", "change" ] + @activateCtrlEnterListener element + for event in [ "input", "change" ] element.addEventListener event, enableSaveButton remove = row.querySelector ".exclusionRemoveButton" @@ -137,10 +153,6 @@ class ExclusionRulesOption extends Option enableSaveButton = -> $("saveOptions").removeAttribute "disabled" -saveOptions = -> - Option.all.map (option) -> option.save() - $("saveOptions").disabled = true - # Display either "linkHintNumbers" or "linkHintCharacters", depending upon "filterLinkHints". maintainLinkHintsView = -> hide = (el) -> el.parentNode.parentNode.style.display = "none" @@ -188,7 +200,7 @@ document.addEventListener "DOMContentLoaded", -> userDefinedLinkHintCss: TextOption } - $("saveOptions").addEventListener "click", saveOptions + $("saveOptions").addEventListener "click", Option.saveOptions $("advancedOptionsLink").addEventListener "click", toggleAdvancedOptions $("showCommands").addEventListener "click", activateHelpDialog $("filterLinkHints").addEventListener "click", maintainLinkHintsView |
