diff --git a/plugins/c9.fs/fs.cache.xml.js b/plugins/c9.fs/fs.cache.xml.js
index 60f0480a..aac5ba76 100644
--- a/plugins/c9.fs/fs.cache.xml.js
+++ b/plugins/c9.fs/fs.cache.xml.js
@@ -227,6 +227,11 @@ define(function(require, exports, module) {
// Modify
+ function confirmStatus(node) {
+ if (node.status === "predicted")
+ node.status = node.isFolder ? "pending" : "loaded";
+ }
+
function afterHandler(e) {
if (e.error) e.undo && e.undo();
else e.confirm && e.confirm();
@@ -261,8 +266,7 @@ define(function(require, exports, module) {
});
};
e.confirm = function () {
- if (node.status === "predicted")
- node.status = isFolder ? "pending" : "loaded";
+ confirmStatus(node);
};
node.status = "predicted";
}
@@ -355,9 +359,7 @@ define(function(require, exports, module) {
createNode(newPath, null, node); // Move node
recurPathUpdate(node, oldPath, newPath);
}
-
- if (node.status === "predicted")
- node.status = "pending";
+ confirmStatus(node);
};
node.status = "predicted";
}, plugin);
@@ -390,8 +392,7 @@ define(function(require, exports, module) {
});
};
e.confirm = function() {
- if (node.status === "predicted")
- node.status = "pending";
+ confirmStatus(node);
};
node.status = "predicted";
}, plugin);
@@ -430,10 +431,8 @@ define(function(require, exports, module) {
removeSingleNode({ path: to });
};
e.confirm = function() {
- if (toNode.status === "predicted")
- toNode.status = e.status;
+ confirmStatus(node);
};
- e._status = node.status == "predicted" ? "pending" : e.status;
toNode.status = "predicted";
}
diff --git a/plugins/c9.ide.behaviors/tabs.js b/plugins/c9.ide.behaviors/tabs.js
index 474e5025..9299c88e 100644
--- a/plugins/c9.ide.behaviors/tabs.js
+++ b/plugins/c9.ide.behaviors/tabs.js
@@ -256,12 +256,14 @@ define(function(require, exports, module) {
menus.addItemByPath("Window/Tabs/~", new apf.label({
class: "splits",
- caption: ""
- + ""
- + ""
- + ""
- + ""
- + "",
+ caption: [
+ ["span", { class: "nosplit" }],
+ ["span", { class: "twovsplit" }],
+ ["span", { class: "twohsplit" }],
+ ["span", { class: "foursplit" }],
+ ["span", { class: "threeleft" }],
+ ["span", { class: "threeright" }],
+ ],
onclick: function(e) {
var span = e.htmlEvent.target;
if (!span || span.tagName != "SPAN") return;
diff --git a/plugins/c9.ide.ui/lib_apf.js b/plugins/c9.ide.ui/lib_apf.js
index 7ce68c9a..896593e7 100644
--- a/plugins/c9.ide.ui/lib_apf.js
+++ b/plugins/c9.ide.ui/lib_apf.js
@@ -13796,7 +13796,12 @@ apf.label = function(struct, tagName) {
*/
this.$supportedProperties.push("caption", "for", "textalign");
this.$propHandlers["caption"] = function(value) {
- this.$caption.textContent = value;
+ if (typeof value == "string")
+ this.$caption.textContent = value;
+ else if (Array.isArray(value)) {
+ this.$caption.textContent = "";
+ apf.buildDom(value, this.$caption);
+ }
};
this.$propHandlers["for"] = function(value) {
forElement = typeof value == "string" ? self[value] : value;
diff --git a/plugins/c9.vfs.standalone/www/ide.offline.html b/plugins/c9.vfs.standalone/www/ide.offline.html
index 18d7dc92..711aec9f 100644
--- a/plugins/c9.vfs.standalone/www/ide.offline.html
+++ b/plugins/c9.vfs.standalone/www/ide.offline.html
@@ -251,8 +251,10 @@
var parts = ("/.c9/metadata" + path).split("/")
var name = "!" + parts.pop();
var parent = findNode(parts.join("/"), true);
- if (sync)
+ if (sync) {
parent[name] = JSON.stringify(value);
+ return cb();
+ }
setTimeout(function() {
parent[name] = JSON.stringify(value);
cb();
@@ -405,6 +407,9 @@