aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorilya2011-02-11 12:16:07 -0800
committerilya2011-02-11 12:16:07 -0800
commit546638dd268c4c4338079cb87f0183bd706fea05 (patch)
tree6d7b9761e212c36c9ffcdc7e72af699f0b327ef1
parent7820ae2cd614015a1d57aeba90d8f24b2f9c7db2 (diff)
downloadvimium-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.html20
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);
}
}