r1662 - in branches/bxe_2_0: js mozile
[email protected] Fri, 27 Apr 2007 18:08:17 +0200 (CEST)
| Newsgroups | gmane.editors.bitflux.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: chregu
Date: Fri Apr 27 18:08:17 2007
New Revision: 1662
Log:
first implementation on onempty callbacks
Modified:
branches/bxe_2_0/js/bxeFunctions.js
branches/bxe_2_0/mozile/mozCE.js
branches/bxe_2_0/mozile/mozilekb.js
Modified: branches/bxe_2_0/js/bxeFunctions.js
==============================================================================
--- branches/bxe_2_0/js/bxeFunctions.js (original)
+++ branches/bxe_2_0/js/bxeFunctions.js Fri Apr 27 18:08:17 2007
@@ -2624,4 +2624,54 @@
if (bxe_lastCursorPositionFocusNode) {
sel.extend(bxe_lastCursorPositionFocusNode, bxe_lastCursorPositionFocusOffset);
}
-}
\ No newline at end of file
+}
+
+
+function bxe_checkEmpty(xmlnode, makeDefault) {
+ if (!makeDefault && xmlnode.vdom.bxeOnempty) {
+ var par = xmlnode.parentNode;
+ if (xmlnode.vdom.bxeOnemptyType == "function") {
+ if (eval(xmlnode.vdom.bxeOnempty + "(xmlnode)")) {
+ bxe_checkEmptyParent(par);
+ return true;
+ }
+ }
+ else if (xmlnode.vdom.bxeOnemptyType == "delete") {
+ par.removeChild(xmlnode);
+ bxe_checkEmptyParent(par);
+ return true;
+ }
+ }
+ if (xmlnode.vdom.bxeDefaultcontent || xmlnode.vdom.bxeTabletype == "table-cell" || xmlnode.vdom.bxeTabletype == "table-col" ) {
+ xmlnode.makeDefaultNodes();
+ } else {
+ xmlnode.parentNode.removeChild(xmlnode);
+ }
+/* old way....
+ if (!makeDefault && (! (xmlnode.vdom.bxeTabletype == "table-cell" || xmlnode.vdom.bxeTabletype == "table-col" ))){
+ //FIXME ondelete
+ xmlnode.parentNode.removeChild(xmlnode);
+ } else {
+ xmlnode.makeDefaultNodes();
+ }*/
+}
+
+function bxe_checkEmptyParent(par) {
+ par._node.betterNormalize();
+ if (par._node.childNodes.length == 0) {
+ bxe_checkEmpty(par);
+ }
+}
+
+/* example function for onEmpty Function callback with
+<bxe:onempty type="function">bxe_empty_para</bxe:onempty>
+can be removed later
+*/
+
+function bxe_empty_para(e) {
+ e.setContent("content via callback function");
+ e._node.setAttribute("__bxe_defaultcontent","true");
+ bxe_Transform(false,false,e);
+ return true;
+}
+/* end example function */
\ No newline at end of file
Modified: branches/bxe_2_0/mozile/mozCE.js
==============================================================================
--- branches/bxe_2_0/mozile/mozCE.js (original)
+++ branches/bxe_2_0/mozile/mozCE.js Fri Apr 27 18:08:17 2007
@@ -214,23 +214,12 @@
} else {
var parpar = par.parentNode;
var nextSibling = par.nextSibling;
- if (par.XMLNode.vdom.bxeOnempty && par.XMLNode.vdom.bxeOnemptyType == "function") {
- if (eval(par.XMLNode.vdom.bxeOnempty + "(par.XMLNode)")) {
- return true;
- }
- }
- if (!makeDefault && (! (par.XMLNode.vdom.bxeTabletype == "table-cell" || par.XMLNode.vdom.bxeTabletype == "table-col" ))){
- //FIXME ondelete
- parpar.removeChild(par);
- } else {
- par.XMLNode.makeDefaultNodes();
- }
-
+ bxe_checkEmpty(par.XMLNode,makeDefault);
}
if (!parpar.XMLNode.isNodeValid(true,2,true)) {
var _new = parpar.insertBefore(parpar.ownerDocument.createElementNS(par.namespaceURI,par.localName),nextSibling);
_new.XMLNode = _new.getXMLNode();
- _new.XMLNode.makeDefaultNodes();
+ bxe_checkEmpty(_new.XMLNode,makeDefault);
}
parpar.normalize();
var _h = par.XMLNode._htmlnode;
@@ -423,7 +412,7 @@
xmlnode.removeChild(textNode);
xmlnode.betterNormalize();
if (xmlnode.childNodes.length == 0) {
- xmlnode.XMLNode.makeDefaultNodes();
+ bxe_checkEmpty(xmlnode);
}
} else {
delete textNode;
Modified: branches/bxe_2_0/mozile/mozilekb.js
==============================================================================
--- branches/bxe_2_0/mozile/mozilekb.js (original)
+++ branches/bxe_2_0/mozile/mozilekb.js Fri Apr 27 18:08:17 2007
@@ -299,6 +299,7 @@
// BACKSPACE AND DELETE (DOM_VK_BACK_SPACE, DOM_VK_DELETE)
if((event.keyCode == 8) || (event.keyCode == 46)) {
try {
+
return bxe_deleteEventKey(sel,(event.keyCode == 46));
} catch (e) {
dump(e + "\n");
@@ -495,7 +496,7 @@
if(!cssr.collapsed)
{
//if !collapsed, get the editable Range, it has a saner check, the getRangeAt(0) does not always work
- bxe_deleteEventKey(sel,false);
+ bxe_deleteEventKey(sel,false,false,true);
sel = window.getSelection();
//sel.selectEditableRange(cssr);
@@ -585,7 +586,7 @@
// sel.anchorNode.parentNode.updateXMLNode();
}
-function bxe_deleteEventKey(sel, backspace, noTransform) {
+function bxe_deleteEventKey(sel, backspace, noTransform,makeDefault) {
if (sel.isCollapsed) {
sel.deleteSelection(backspace);
return true;
@@ -623,7 +624,7 @@
} else {
if (_par.childNodes.length == 1) {
_par.removeChild(_par.firstChild);
- _par.XMLNode.makeDefaultNodes();
+ bxe_checkEmpty(_par.XMLNode,makeDefault);
} else {
_par.replaceChild(_par.ownerDocument.createTextNode(" "),xmlnode);
}
@@ -650,8 +651,7 @@
try {
if (_par.childNodes.length == 1 && _par.firstChild.nodeValue.strip().length == 0) {
_par.removeChild(_par.firstChild);
- _par.XMLNode.makeDefaultNodes();
-
+ bxe_checkEmpty(_par.XMLNode,makeDefault);
}
} catch(e) {
//console.log(e);
--
Bx-editor-cvs mailing list
[email protected]
http://lists.bitflux.ch/cgi-bin/listinfo/bx-editor-cvs