diff options
| author | ilya | 2011-02-11 12:16:07 -0800 |
|---|---|---|
| committer | ilya | 2011-02-11 12:16:07 -0800 |
| commit | 546638dd268c4c4338079cb87f0183bd706fea05 (patch) | |
| tree | 6d7b9761e212c36c9ffcdc7e72af699f0b327ef1 | |
| parent | 7820ae2cd614015a1d57aeba90d8f24b2f9c7db2 (diff) | |
| download | vimium-546638dd268c4c4338079cb87f0183bd706fea05.tar.bz2 | |
Fix a bug where you can't save empty fields if there's a non-empty default. Also made the option saving code more robust to similar scenarios
| -rw-r--r-- | options.html | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/options.html b/options.html index bfa01450..f52cb6ec 100644 --- a/options.html +++ b/options.html @@ -80,7 +80,9 @@ var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings; var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters", - "userDefinedLinkHintCss", "keyMappings"]; + "userDefinedLinkHintCss", "keyMappings"]; + + var canBeEmptyFields = ["excludedUrls", "keyMappings", "userDefinedLinkHintCss"]; var postSaveHooks = { keyMappings: function (value) { @@ -118,10 +120,17 @@ var fieldValue = $(fieldName).value.trim(); var defaultFieldValue = (defaultSettings[fieldName] != null) ? defaultSettings[fieldName].toString() : ""; + + // Don't save to storage if it's equal to the default if (fieldValue == defaultFieldValue) delete localStorage[fieldName]; - else + // ..or if it's empty and not a field that we allow to be empty. + else if (!fieldValue && canBeEmptyFields.indexOf(fieldName) == -1) { + delete localStorage[fieldName]; + fieldValue = defaultFieldValue; + } else localStorage[fieldName] = fieldValue; + $(fieldName).value = fieldValue; $(fieldName).setAttribute("savedValue", fieldValue); @@ -133,7 +142,12 @@ // Restores select box state to saved value from localStorage. function populateOptions() { for (var i = 0; i < editableFields.length; i++) { - $(editableFields[i]).value = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || ""; + // If it's null or undefined, let's go to the default. We want to allow empty strings in certain cases. + if (localStorage[editableFields[i]] != "" && !localStorage[editableFields[i]]) { + $(editableFields[i]).value = defaultSettings[editableFields[i]] || ""; + } else { + $(editableFields[i]).value = localStorage[editableFields[i]]; + } $(editableFields[i]).setAttribute("savedValue", $(editableFields[i]).value); } } |
