Editor: correctly determine when to save the window size
This commit is contained in:
parent
a19190b033
commit
3429db0ee1
31
edit.js
31
edit.js
|
@ -3,7 +3,7 @@
|
|||
var styleId = null;
|
||||
var dirty = {}; // only the actually dirty items here
|
||||
var editors = []; // array of all CodeMirror instances
|
||||
var isSeparateWindow; // used currrently to determine if the window size/pos should be remembered
|
||||
var saveSizeOnClose;
|
||||
|
||||
// direct & reverse mapping of @-moz-document keywords and internal property names
|
||||
var propertyToCss = {urls: "url", urlPrefixes: "url-prefix", domains: "domain", regexps: "regexp"};
|
||||
|
@ -397,13 +397,26 @@ document.addEventListener("wheel", function(event) {
|
|||
}
|
||||
});
|
||||
|
||||
chrome.tabs.query({currentWindow: true}, function(tabs) {
|
||||
isSeparateWindow = tabs.length == 1;
|
||||
});
|
||||
if (prefs.getPref("openEditInWindow")) {
|
||||
chrome.tabs.query({currentWindow: true}, function(tabs) {
|
||||
var windowId = tabs[0].windowId;
|
||||
if (tabs.length == 1 && window.history.length == 1) {
|
||||
sessionStorageHash("saveSizeOnClose").set(windowId, true);
|
||||
saveSizeOnClose = true;
|
||||
} else {
|
||||
saveSizeOnClose = sessionStorageHash("saveSizeOnClose").value[windowId];
|
||||
}
|
||||
chrome.tabs.onRemoved.addListener(function(tabId, info) {
|
||||
if (info.windowId == windowId && info.isWindowClosing) {
|
||||
sessionStorageHash("saveSizeOnClose").unset(windowId);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
window.onbeforeunload = function() {
|
||||
if (isSeparateWindow) {
|
||||
prefs.setPref('windowPosition', {
|
||||
if (saveSizeOnClose) {
|
||||
prefs.setPref("windowPosition", {
|
||||
left: screenLeft,
|
||||
top: screenTop,
|
||||
width: outerWidth,
|
||||
|
@ -876,11 +889,9 @@ function saveComplete(style) {
|
|||
|
||||
// Go from new style URL to edit style URL
|
||||
if (location.href.indexOf("id=") == -1) {
|
||||
// give the code above a moment before we kill the page
|
||||
setTimeout(function() {location.href = "edit.html?id=" + style.id;}, 200);
|
||||
} else {
|
||||
updateTitle();
|
||||
history.replaceState({}, document.title, "edit.html?id=" + style.id);
|
||||
}
|
||||
updateTitle();
|
||||
}
|
||||
|
||||
function showMozillaFormat() {
|
||||
|
|
17
storage.js
17
storage.js
|
@ -161,6 +161,7 @@ var prefs = {
|
|||
|
||||
// defaults
|
||||
"openEditInWindow": false, // new editor opens in a own browser window
|
||||
"windowPosition": {}, // detached window position
|
||||
"show-badge": true, // display text on popup menu icon
|
||||
"disableAll": false, // boss key
|
||||
|
||||
|
@ -171,7 +172,7 @@ var prefs = {
|
|||
|
||||
"manage.onlyEnabled": false, // display only enabled styles
|
||||
"manage.onlyEdited": false, // display only styles created locally
|
||||
|
||||
|
||||
"editor.options": null, // CodeMirror.defaults.*
|
||||
"editor.lineWrapping": true, // word wrap
|
||||
"editor.smartIndent": true, // "smart" indent
|
||||
|
@ -242,3 +243,17 @@ function getCodeMirrorThemes(callback) {
|
|||
});
|
||||
});
|
||||
}
|
||||
|
||||
function sessionStorageHash(name) {
|
||||
var hash = {
|
||||
value: {},
|
||||
set: function(k, v) { this.value[k] = v; this.updateStorage(); },
|
||||
unset: function(k) { delete this.value[k]; this.updateStorage(); },
|
||||
updateStorage: function() {
|
||||
sessionStorage[this.name] = JSON.stringify(this.value);
|
||||
}
|
||||
};
|
||||
try { hash.value = JSON.parse(sessionStorage[name]); } catch(e) {}
|
||||
Object.defineProperty(hash, "name", {value: name});
|
||||
return hash;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user