Changeset 8861
Legend:
- Unmodified
- Added
- Removed
-
trunk/Xul_Cms/chrome/content/scenaricms/widgets/sctab/texteditor.xbl.xml
r8746 r8861 83 83 this.fDraftTextBox.style.color="#666666"; 84 84 85 //Controller copie de XEDInputController .85 //Controller copie de XEDInputController (nécessaire pour préservaion des espaces inséccables dans le copier/coller). 86 86 var vController = { 87 87 fInput : this.fEditorBox.inputField, … … 102 102 return; 103 103 } 104 //ut.debug("XEDInputController!!!!!!!"+pCmd);105 104 //On copie 106 105 var vSel = vEditor.selection; 106 if(vSel.isCollapsed) return; 107 107 var vRange = vSel.getRangeAt(0); 108 var vCurrNode = vRange.startContainer; 109 var vStartOffs = vRange.startOffset; 110 if(vCurrNode.nodeType!=3) { 111 vCurrNode = vCurrNode.fisrtChild; 112 if(vCurrNode.nodeType!=3) return; 113 vStartOffs = 0; 114 } 108 var vStartNode = vRange.startContainer; 115 109 var vEndNode = vRange.endContainer; 116 var vEndOffs = vRange.endOffset; 117 if(vEndNode.nodeType!=3) { 118 vEndNode = vEndNode.lastChild; 119 while(vEndNode && vEndNode.nodeType!=3) { 120 vEndNode = vEndNode.previsouSibling; 110 111 var vResult = ""; 112 113 if(vStartNode == vEndNode) { 114 vResult = vStartNode.substringData(vRange.startOffset, vRange.endOffset - vRange.startOffset); 115 } else { 116 var vTw = vStartNode.ownerDocument.createTreeWalker(vRange.commonAncestorContainer, NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_CDATA_SECTION, null, true); 117 var vCurrNode = vTw.currentNode; 118 while(vCurrNode && vCurrNode != vStartNode) vCurrNode = vTw.nextNode(); 119 120 if(vCurrNode == vStartNode) { 121 if(vStartNode.nodeType==3) { 122 vResult += vStartNode.substringData(vRange.startOffset, vStartNode.length - vRange.startOffset); 123 vCurrNode = vTw.nextNode(); 124 } else { 125 vCurrNode = vTw.currentNode = vStartNode.childNodes.item(vRange.startOffset); 126 } 121 127 } 122 if(!vEndNode) return; 123 vEndOffs = vEndNode.length; 124 } 125 126 var vResult; 127 if(vCurrNode == vEndNode) { 128 vResult = vCurrNode.substringData(vStartOffs, vEndOffs - vStartOffs); 129 } else { 130 vResult = vCurrNode.substringData(vStartOffs, vCurrNode.length - vStartOffs); 131 vCurrNode = vCurrNode.nextSibling; 132 while(vCurr != vEndNode) { 133 vResult += vCurrNode.data; 134 vCurrNode = vCurrNode.nextSibling; 128 129 var vStopNode = vEndNode; 130 if(vEndNode.nodeType==1) vStopNode = vEndNode.childNodes.item(vRange.endOffset); 131 132 while(vCurrNode && vCurrNode != vStopNode) { 133 if(vCurrNode.nodeType==3) { 134 vResult += vCurrNode.data; 135 } else { 136 switch(vCurrNode.localName) { 137 case "br" : 138 case "div" : 139 case "p" : 140 vResult += ut.isWin ? "\r\n" : "\n"; 141 } 142 } 143 vCurrNode = vTw.nextNode(); 135 144 } 136 vResult += vEndNode.data.substringData(0, vEndOffs); 145 if(vCurrNode == vEndNode) { 146 if(vEndNode.nodeType==3) vResult += vEndNode.substringData(0, vRange.endOffset); 147 } 137 148 } 138 149 -
trunk/Xul_XedLib/chrome/content/scenarixedlib/core/xed.js
r8616 r8861 2123 2123 //xed.debug("XEDInputController!!!!!!!"+pCmd); 2124 2124 //On copie 2125 //On copie 2125 2126 var vSel = vEditor.selection; 2127 if(vSel.isCollapsed) return; 2126 2128 var vRange = vSel.getRangeAt(0); 2127 var vCurrNode = vRange.startContainer; 2128 var vStartOffs = vRange.startOffset; 2129 if(vCurrNode.nodeType!=3) { 2130 vCurrNode = vCurrNode.fisrtChild; 2131 if(vCurrNode.nodeType!=3) return; 2132 vStartOffs = 0; 2133 } 2129 var vStartNode = vRange.startContainer; 2134 2130 var vEndNode = vRange.endContainer; 2135 var vEndOffs = vRange.endOffset;2136 if(vEndNode.nodeType!=3) {2137 vEndNode = vEndNode.lastChild;2138 while(vEndNode && vEndNode.nodeType!=3) {2139 vEndNode = vEndNode.previsouSibling;2140 }2141 if(!vEndNode) return;2142 vEndOffs = vEndNode.length;2143 }2144 2131 2145 var vResult; 2146 if(vCurrNode == vEndNode) { 2147 vResult = vCurrNode.substringData(vStartOffs, vEndOffs - vStartOffs); 2132 var vResult = ""; 2133 2134 if(vStartNode == vEndNode && vStartNode.nodeType==3) { 2135 vResult = vStartNode.substringData(vRange.startOffset, vRange.endOffset - vRange.startOffset); 2148 2136 } else { 2149 vResult = vCurrNode.substringData(vStartOffs, vCurrNode.length - vStartOffs); 2150 vCurrNode = vCurrNode.nextSibling; 2151 while(vCurr != vEndNode) { 2152 vResult += vCurrNode.data; 2153 vCurrNode = vCurrNode.nextSibling; 2154 } 2155 vResult += vEndNode.data.substringData(0, vEndOffs); 2137 var vTw = vStartNode.ownerDocument.createTreeWalker(vRange.commonAncestorContainer, NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_CDATA_SECTION, null, true); 2138 var vCurrNode = vTw.currentNode; 2139 while(vCurrNode && vCurrNode != vStartNode) vCurrNode = vTw.nextNode(); 2140 2141 if(vCurrNode == vStartNode) { 2142 if(vStartNode.nodeType==3) { 2143 vResult += vStartNode.substringData(vRange.startOffset, vStartNode.length - vRange.startOffset); 2144 vCurrNode = vTw.nextNode(); 2145 } else { 2146 vCurrNode = vTw.currentNode = vStartNode.childNodes.item(vRange.startOffset); 2147 } 2148 } 2149 2150 var vStopNode = vEndNode; 2151 if(vEndNode.nodeType==1) vStopNode = vEndNode.childNodes.item(vRange.endOffset); 2152 2153 while(vCurrNode && vCurrNode != vStopNode) { 2154 if(vCurrNode.nodeType==3) { 2155 vResult += vCurrNode.data; 2156 } else { 2157 switch(vCurrNode.localName) { 2158 case "br" : 2159 case "div" : 2160 case "p" : 2161 vResult += ut.isWin ? "\r\n" : "\n"; 2162 } 2163 } 2164 vCurrNode = vTw.nextNode(); 2165 } 2166 if(vCurrNode == vEndNode) { 2167 if(vEndNode.nodeType==3) vResult += vEndNode.substringData(0, vRange.endOffset); 2168 } 2156 2169 } 2157 2170
Note: See TracChangeset
for help on using the changeset viewer.