aboutsummaryrefslogtreecommitdiffstats
path: root/options.html
diff options
context:
space:
mode:
Diffstat (limited to 'options.html')
-rw-r--r--options.html54
1 files changed, 20 insertions, 34 deletions
diff --git a/options.html b/options.html
index 1724f51b..f1194554 100644
--- a/options.html
+++ b/options.html
@@ -79,12 +79,12 @@
<script type="text/javascript">
$ = function(id) { return document.getElementById(id); };
- currentlyShowingDialog = null;
-
var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings;
var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters",
- "userDefinedLinkHintCss", "keyMappings", "filterLinkHints"];
+ "userDefinedLinkHintCss", "keyMappings", "filterLinkHints"];
+
+ var canBeEmptyFields = ["excludedUrls", "keyMappings", "userDefinedLinkHintCss"];
var postSaveHooks = {
keyMappings: function (value) {
@@ -106,8 +106,8 @@
$("advancedOptions").addEventListener("click", openAdvancedOptions, false);
$("showCommands").addEventListener("click", function () {
- showDialog("vimiumCommandListingContainer",
- chrome.extension.getBackgroundPage().helpDialogHtml(true, true, "Command Listing"));
+ showHelpDialog(
+ chrome.extension.getBackgroundPage().helpDialogHtml(true, true, "Command Listing"), frameId);
}, false);
}
@@ -141,12 +141,18 @@
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;
- field.setAttribute("savedValue", fieldValue);
+ $(fieldName).value = fieldValue;
+ $(fieldName).setAttribute("savedValue", fieldValue);
if (postSaveHooks[fieldName]) { postSaveHooks[fieldName](fieldValue); }
}
@@ -156,9 +162,13 @@
// Restores select box state to saved value from localStorage.
function populateOptions() {
for (var i = 0; i < editableFields.length; i++) {
- var val = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || "";
- var field = $(editableFields[i]);
- setFieldValue($(editableFields[i]), val);
+ // 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]]) {
+ var val = defaultSettings[editableFields[i]] || "";
+ } else {
+ var val = localStorage[editableFields[i]];
+ }
+ setFieldValue($(editableFields[i]), val);
}
onDataLoaded();
}
@@ -187,30 +197,6 @@
elements[i].style.display = (elements[i].style.display == "table-row") ? "none" : "table-row";
event.preventDefault();
}
-
- function showDialog(dialogId, dialogHtml) {
- if (currentlyShowingDialog)
- return false;
-
- currentlyShowingDialog = dialogId;
- var container = document.createElement("div");
- container.id = currentlyShowingDialog;
- container.innerHTML = dialogHtml;
- container.getElementsByClassName("closeButton")[0].addEventListener("click", hideDialog, false);
- container.getElementsByClassName("optionsPage")[0].style.display = 'none';
- document.body.appendChild(container);
- var dialog = document.getElementById("vimiumHelpDialog");
- dialog.style.top = Math.max((window.innerHeight - dialog.clientHeight) / 2.0, 20) + "px";
- }
-
- function hideDialog() {
- var dialog = document.getElementById(currentlyShowingDialog);
- if (dialog)
- dialog.parentNode.removeChild(dialog);
-
- currentlyShowingDialog = null;
- }
-
</script>
</head>