r1575 - branches/bxe_2_0/mozile

[email protected] Tue, 24 Oct 2006 23:04:53 +0200 (CEST)
Newsgroups gmane.editors.bitflux.cvs
Message-ID <[email protected]>
Author: chregu
Date: Tue Oct 24 23:04:52 2006
New Revision: 1575

Modified:
   branches/bxe_2_0/mozile/mozilekb.js
Log:
improve cut

Modified: branches/bxe_2_0/mozile/mozilekb.js
==============================================================================
--- branches/bxe_2_0/mozile/mozilekb.js	(original)
+++ branches/bxe_2_0/mozile/mozilekb.js	Tue Oct 24 23:04:52 2006
@@ -493,7 +493,12 @@
 		}
 		do {
 			if (node.userModifiable && node.XMLNode &&  node.XMLNode.canHaveText) {
-				sel.collapse(node.firstChild,0);
+				try {
+					sel.collapse(node.firstChild,0);
+				} catch (e) {
+					node.appendChild(node.ownerDocument.createTextNode(" "));
+					sel.collapse(node.firstChild,0);
+				}
 				bxe_updateXPath(node);
 				return true;
 				break;
@@ -618,14 +623,16 @@
 	var n = sel.focusNode;
 	var o = sel.focusOffset;
 	sel.collapse(sel.anchorNode,1)
-	sel.extend(n,o);
-	sel.deleteSelection(backspace);
+	try {
+		sel.extend(n,o);
+		sel.deleteSelection(backspace);
+	} catch (e) {
+	}
 //	sel.anchorNode.parentNode.updateXMLNode();
 }
 
 function bxe_deleteEventKey(sel, backspace) {
 
-
 		//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) ) {
@@ -636,52 +643,52 @@
 		}
 		if (sel.isCollapsed) {
 			sel.deleteSelection(backspace);
-		}
-		else if (!sel.isCollapsed && sel.anchorNode.nodeType == 3 && sel.anchorOffset == 0) {
-			if (sel.anchorNode == sel.focusNode && 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();
-					bxe_Transform();
+		} else if (!sel.isCollapsed && 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();
+						bxe_Transform();
+					} else {
+						bxe_deleteWholeSelection(sel,backspace);
+						sel = window.getSelection();
+						sel.deleteSelection(false);
+					}
 				} else {
-					bxe_deleteWholeSelection(sel,backspace);
-					sel = window.getSelection();
-					sel.deleteSelection(false);
+					bxe_history_snapshot();
+					sel.deleteSelection(backspace);
+
 				}
-			} else {
-				
+			} else  {
 				var xmlnode = bxe_getXMLNodeByHTMLNode(sel.anchorNode);
 				var _par = xmlnode.parentNode;
-				bxe_deleteWholeSelection(sel,backspace);
 				
 				sel = window.getSelection();
+				bxe_deleteWholeSelection(sel,backspace);
 				
 				sel.deleteSelection(false);
 				try {
 					if (_par.childNodes.length == 1 && _par.firstChild.nodeValue.strip().length == 0) {
 						_par.removeChild(_par.firstChild);
 						_par.XMLNode.makeDefaultNodes();
-						bxe_Transform();
+						
 					}
 				} catch(e) {
+					
 				}
+				
 			}
 		} else {
 			bxe_history_snapshot();
-			cssr = sel.getEditableRange();
-			
-			var _conode = cssr.commonAncestorContainer;
 			sel.deleteSelection(backspace);
-			if (sel.anchorNode.nodeType == 3) {
-				var n  = sel.anchorNode.parentNode;
-			} else {
-				var n = sel.anchorNode;
-			}
-			var i = 0;
+
 			
 		}
 		return true;
-- 
Bx-editor-cvs mailing list
[email protected]
http://lists.bitflux.ch/cgi-bin/listinfo/bx-editor-cvs