fix logic for hiding double dividers

pull/39/head^2
nightwing 2015-03-04 15:49:46 +04:00
rodzic 15d09c4d6a
commit 1c37728d8b
1 zmienionych plików z 12 dodań i 10 usunięć

Wyświetl plik

@ -211,28 +211,27 @@ define(function(require, exports, module) {
var editor = emit("getEditor"); var editor = emit("getEditor");
var nodes = this.childNodes; var nodes = this.childNodes;
for (var start = 0, a, fn, cmd, n, i = nodes.length - 1; i >= 0; i--) { for (var n, prev, i = nodes.length - 1; i >= 0; i--) {
cmd = (n = nodes[i]).command; var cmd = (n = nodes[i]).command;
if (start == i && !n.visible)
start = i + 1;
if (!n.visible) continue; if (!n.visible) continue;
// prevent dividers two consecutive dividers and dividers // prevent dividers two consecutive dividers and dividers
// at bottom and top // at bottom and top
if (n.localName == "divider") { if (n.localName == "divider") {
if (i === start || i == nodes.length -1 if (!prev || prev.localName == "divider")
|| nodes[i - 1].localName == "divider")
n.hide(); n.hide();
else else
n.show(); n.show();
prev = n;
continue; continue;
} }
prev = n;
var c = cmd && commands.commands[cmd]; var c = cmd && commands.commands[cmd];
fn = c && c.isAvailable; var fn = c && c.isAvailable;
a = (!n.isAvailable || n.isAvailable(editor)) var a = (!n.isAvailable || n.isAvailable(editor))
&& (!fn || fn(editor)); && (!fn || fn(editor));
if (!cmd) if (!cmd)
@ -242,6 +241,9 @@ define(function(require, exports, module) {
n[a ? "enable" : "disable"](); n[a ? "enable" : "disable"]();
} }
if (prev && prev.localName == "divider") {
prev.hide();
}
} }
toggleIframes(e); toggleIframes(e);