From 73d46031f9c789339701be706ef8fbdea5552cac Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 5 Mar 2017 18:54:23 +0000 Subject: [PATCH] fix window settings support --- plugins/c9.core/settings.js | 8 +++++--- plugins/c9.ide.layout.classic/layout.js | 15 ++++++++------- plugins/c9.ide.terminal/terminal.js | 22 ++++++++++++---------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/plugins/c9.core/settings.js b/plugins/c9.core/settings.js index f3ffcc61..d50ff855 100644 --- a/plugins/c9.core/settings.js +++ b/plugins/c9.core/settings.js @@ -177,7 +177,7 @@ define(function(require, exports, module) { if (!node) return; // Get XML string - var json = util.stableStringify(node, 0, " "); + var json = util.stableStringify(node, null, type == "state" ? "" : 4); if (cache[type] == json) return; // Ignore if same as cache // Set Cache @@ -192,7 +192,7 @@ define(function(require, exports, module) { // Detect whether we're in standalone mode var standalone = !options.hosted; - if (standalone || type == "project") { + if (standalone || type == "project" || skipCloud[type]) { fs.writeFile(PATH[type], json, forceSync, function(err) {}); if (standalone && !saveToCloud[type] || skipCloud[type]) @@ -237,7 +237,7 @@ define(function(require, exports, module) { }); } - if (!c9.debug) { + if (!c9.debug && !testing) { try { emit("read", { model: model, @@ -245,6 +245,8 @@ define(function(require, exports, module) { reset: isReset }); } catch (e) { + console.error("Error loading settings, reseting to defaults"); + console.error(e); fs.writeFile(PATH.project + ".broken", JSON.stringify(json), function() {}); diff --git a/plugins/c9.ide.layout.classic/layout.js b/plugins/c9.ide.layout.classic/layout.js index 9ead8512..aeee80fb 100644 --- a/plugins/c9.ide.layout.classic/layout.js +++ b/plugins/c9.ide.layout.classic/layout.js @@ -61,7 +61,7 @@ define(function(require, exports, module) { }, plugin); plugin.on("newListener", function(type, listener) { - if (type == "eachTheme") + if (type == "eachTheme" && plugin.hasTheme) listener({}); }, plugin); @@ -127,8 +127,6 @@ define(function(require, exports, module) { window.addEventListener("resize", resize, false); window.addEventListener("focus", resize, false); - setGeckoMask(); - plugin.addOther(function() { window.removeEventListener("resize", resize, false); window.removeEventListener("focus", resize, false); @@ -181,9 +179,10 @@ define(function(require, exports, module) { changeTheme(); } function changeTheme() { - if (!oldTheme) return; - emit("eachTheme", { changed: true }); + setGeckoMask(); + + if (!oldTheme) return; var auto = emit("themeChange", { theme: theme, @@ -191,8 +190,6 @@ define(function(require, exports, module) { type: type }) !== false; - setGeckoMask(); - if (noquestion) return; if (auto) @@ -593,6 +590,10 @@ define(function(require, exports, module) { get theme() { return theme; }, + + get hasTheme() { + return !ui.packedThemes || !!removeTheme + }, /** * Returns an AMLElement that can server as a parent. diff --git a/plugins/c9.ide.terminal/terminal.js b/plugins/c9.ide.terminal/terminal.js index fa53cefe..0efbbd21 100644 --- a/plugins/c9.ide.terminal/terminal.js +++ b/plugins/c9.ide.terminal/terminal.js @@ -273,20 +273,22 @@ define(function(require, exports, module) { layout.on("themeChange", function(e) { setSettings(); - var skin = e.oldTheme; - if (!(settings.get("user/terminal/@backgroundColor") == defaults[skin][0] && - settings.get("user/terminal/@foregroundColor") == defaults[skin][1] && - settings.get("user/terminal/@selectionColor") == defaults[skin][2] && - settings.get("user/terminal/@antialiasedfonts") == defaults[skin][3])) + var colors = defaults[e.oldTheme]; + if (!colors) return; + if (!(settings.get("user/terminal/@backgroundColor") == colors[0] && + settings.get("user/terminal/@foregroundColor") == colors[1] && + settings.get("user/terminal/@selectionColor") == colors[2] && + settings.get("user/terminal/@antialiasedfonts") == colors[3])) return false; }); layout.on("themeDefaults", function(e) { - var skin = e.theme; - settings.set("user/terminal/@backgroundColor", defaults[skin][0]); - settings.set("user/terminal/@foregroundColor", defaults[skin][1]); - settings.set("user/terminal/@selectionColor", defaults[skin][2]); - settings.set("user/terminal/@antialiasedfonts", defaults[skin][3]); + var colors = defaults[e.theme]; + if (!colors) return; + settings.set("user/terminal/@backgroundColor", colors[0]); + settings.set("user/terminal/@foregroundColor", colors[1]); + settings.set("user/terminal/@selectionColor", colors[2]); + settings.set("user/terminal/@antialiasedfonts", colors[3]); }, handle); // Settings UI