TinyMCE 3.5.8 update; some fixes

This commit is contained in:
Zach Prezkuta 2013-01-27 14:26:43 -07:00
parent c9cce9873d
commit d39a2e8a9d
48 changed files with 2213 additions and 2054 deletions

File diff suppressed because one or more lines are too long

View file

@ -440,9 +440,9 @@
}
function fixDeletingFirstCharOfList(ed, e) {
function listElements(list, li) {
function listElements(li) {
var elements = [];
var walker = new tinymce.dom.TreeWalker(li, list);
var walker = new tinymce.dom.TreeWalker(li.firstChild, li);
for (var node = walker.current(); node; node = walker.next()) {
if (ed.dom.is(node, 'ol,ul,li')) {
elements.push(node);
@ -454,9 +454,11 @@
if (e.keyCode == tinymce.VK.BACKSPACE) {
var li = getLi();
if (li) {
var list = ed.dom.getParent(li, 'ol,ul');
if (list && list.firstChild === li) {
var elements = listElements(list, li);
var list = ed.dom.getParent(li, 'ol,ul'),
rng = ed.selection.getRng();
if (list && list.firstChild === li && rng.startOffset == 0) {
var elements = listElements(li);
elements.unshift(li);
ed.execCommand("Outdent", false, elements);
ed.undoManager.add();
return Event.cancel(e);
@ -474,7 +476,7 @@
ed.dom.remove(li, true);
var textNodes = tinymce.grep(prevLi.childNodes, function(n){ return n.nodeType === 3 });
if (textNodes.length === 1) {
var textNode = textNodes[0]
var textNode = textNodes[0];
ed.selection.setCursorLocation(textNode, textNode.length);
}
ed.undoManager.add();
@ -722,7 +724,8 @@
} else {
actions = {
defaultAction: convertListItemToParagraph,
elements: this.selectedBlocks()
elements: this.selectedBlocks(),
processEvenIfEmpty: true
};
}
this.process(actions);
@ -826,7 +829,7 @@
function processElement(element) {
dom.removeClass(element, '_mce_act_on');
if (!element || element.nodeType !== 1 || selectedBlocks.length > 1 && isEmptyElement(element)) {
if (!element || element.nodeType !== 1 || ! actions.processEvenIfEmpty && selectedBlocks.length > 1 && isEmptyElement(element)) {
return;
}
element = findItemToOperateOn(element, dom);
@ -838,7 +841,7 @@
}
function recurse(element) {
t.splitSafeEach(element.childNodes, processElement);
t.splitSafeEach(element.childNodes, processElement, true);
}
function brAtEdgeOfSelection(container, offset) {
@ -889,9 +892,11 @@
}
},
splitSafeEach: function(elements, f) {
if (tinymce.isGecko && (/Firefox\/[12]\.[0-9]/.test(navigator.userAgent) ||
/Firefox\/3\.[0-4]/.test(navigator.userAgent))) {
splitSafeEach: function(elements, f, forceClassBase) {
if (forceClassBase ||
(tinymce.isGecko &&
(/Firefox\/[12]\.[0-9]/.test(navigator.userAgent) ||
/Firefox\/3\.[0-4]/.test(navigator.userAgent)))) {
this.classBasedEach(elements, f);
} else {
each(elements, f);
@ -932,8 +937,7 @@
},
selectedBlocks: function() {
var ed = this.ed
var selectedBlocks = ed.selection.getSelectedBlocks();
var ed = this.ed, selectedBlocks = ed.selection.getSelectedBlocks();
return selectedBlocks.length == 0 ? [ ed.dom.getRoot() ] : selectedBlocks;
},