r1589 - branches/bxe_2_0/mozile
[email protected] Fri, 27 Oct 2006 15:42:49 +0200 (CEST)
| Newsgroups | gmane.editors.bitflux.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: chregu
Date: Fri Oct 27 15:42:48 2006
New Revision: 1589
Modified:
branches/bxe_2_0/mozile/mozCE.js
branches/bxe_2_0/mozile/mozilekb.js
Log:
hopefully improved selection/delete code
Modified: branches/bxe_2_0/mozile/mozCE.js
==============================================================================
--- branches/bxe_2_0/mozile/mozCE.js (original)
+++ branches/bxe_2_0/mozile/mozCE.js Fri Oct 27 15:42:48 2006
@@ -336,6 +336,8 @@
else
{
+ //TESTME
+ this.fixFocus();
var xmlnode = bxe_getXMLNodeByHTMLNode(this.anchorNode.parentNode);
@@ -382,6 +384,7 @@
// merge nodes
} else {
+
textNode.splitText(this.focusOffset);
}
textNode = textNode.splitText(this.anchorOffset);
@@ -410,7 +413,12 @@
}
}
if (textNode.parentNode == xmlnode) {
+
xmlnode.removeChild(textNode);
+ xmlnode.betterNormalize();
+ if (xmlnode.childNodes.length == 0) {
+ xmlnode.XMLNode.makeDefaultNodes();
+ }
} else {
delete textNode;
}
@@ -1074,8 +1082,7 @@
var docfrag = bxe_config.xmldoc.createDocumentFragment();
this.fixFocus();
if (this.anchorNode != this.focusNode) {
- var xmlnode = bxe_getXMLNodeByHTMLNode(this.anchorNode.parentNode);
-
+ var xmlnode = bxe_getXMLNodeByHTMLNodeRecursive(this.anchorNode.parentNode);
if (xmlnode.betterNormalize) {
xmlnode.betterNormalize();
Modified: branches/bxe_2_0/mozile/mozilekb.js
==============================================================================
--- branches/bxe_2_0/mozile/mozilekb.js (original)
+++ branches/bxe_2_0/mozile/mozilekb.js Fri Oct 27 15:42:48 2006
@@ -536,6 +536,25 @@
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);
+
+ sel = window.getSelection();
+ //sel.selectEditableRange(cssr);
+ cssr = sel.getRangeAt(0);
+ var _node = sel.anchorNode.parentNode;
+ if (_node.getAttribute("__bxe_defaultcontent") == "true") {
+ _node.firstChild.nodeValue = " ";
+ _node.XMLNode._node.firstChild.nodeValue = " ";
+ sel = window.getSelection();
+
+ sel.collapse(_node.firstChild,0);
+ cssr = sel.getRangeAt(0);
+ par = cssr.startContainer.parentNode;
+ bxid = par.getAttribute("__bxe_id");
+ }
+
+
+ /*
cssr = sel.getEditableRange();
var backspace = false;
if (!sel.isCollapsed && sel.anchorNode.nodeType == 3 && sel.anchorOffset == 0) {
@@ -557,10 +576,9 @@
sel.deleteSelection(backspace);
} else {
sel.deleteSelection(backspace);
- //sel.anchorNode.parentNode.updateXMLNode();
sel = window.getSelection();
cssr = sel.getEditableRange();
- }
+ }*/
}
var startC = cssr.startContainer;
@@ -619,37 +637,42 @@
// sel.anchorNode.parentNode.updateXMLNode();
}
-function bxe_deleteEventKey(sel, backspace) {
-
+function bxe_deleteEventKey(sel, backspace, noTransform) {
+ if (sel.isCollapsed) {
+ sel.deleteSelection(backspace);
+ return true;
+ }
+ sel.fixFocus();
//switch focus and anchor, if focus is before anchor
- if ((!sel.isCollapsed && sel.focusNode.nodeType == 3 && sel.focusNode.compareDocumentPosition(sel.anchorNode) & 4) ||
- (sel.focusNode == sel.anchorNode && sel.focusOffset < sel.anchorOffset) ) {
- var n = sel.anchorNode;
- var o = sel.anchorOffset;
- sel.collapse(sel.focusNode, sel.focusOffset)
- sel.extend(n,o);
+
+ if (sel.anchorOffset >= sel.anchorNode.nodeValue.strip().length) {
+ var _pos = sel.focusOffset;
+ sel.collapse(sel.focusNode,0);
+ sel.extend(sel.focusNode,_pos);
+
}
- if (sel.isCollapsed) {
- sel.deleteSelection(backspace);
- } else if (!sel.isCollapsed && sel.anchorNode.nodeType == 3 && sel.anchorOffset == 0) {
+ if (sel.anchorNode.nodeType == 3 && sel.anchorOffset == 0) {
// if only one textnode and fully selected
if (sel.anchorNode == sel.focusNode) {
-
if (sel.focusOffset == sel.anchorNode.nodeValue.strip().length) {
var xmlnode = bxe_getXMLNodeByHTMLNode(sel.anchorNode);
//xmlnode.parentNode.appendChild(xmlnode.ownerDocument.createTextNode(" "));
var _par = xmlnode.parentNode;
if (_par) {
+
_par.removeChild(xmlnode);
_par.XMLNode.makeDefaultNodes();
+
+
} else {
bxe_deleteWholeSelection(sel,backspace);
sel = window.getSelection();
sel.deleteSelection(false);
}
} else {
+
bxe_history_snapshot();
sel.deleteSelection(backspace);
@@ -674,10 +697,14 @@
}
bxe_Transform();
+
} else {
bxe_history_snapshot();
sel.deleteSelection(backspace);
- bxe_Transform();
+
+ if (!noTransform) {
+ bxe_Transform();
+ }
}
return true;
--
Bx-editor-cvs mailing list
[email protected]
http://lists.bitflux.ch/cgi-bin/listinfo/bx-editor-cvs