Changeset 8861


Ignore:
Timestamp:
03/05/07 10:41:46 (5 years ago)
Author:
sys
Message:

Debuggage implémentation ctrlC / ctrlX dans champs textes pour la gestion des espaces inséccables.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Xul_Cms/chrome/content/scenaricms/widgets/sctab/texteditor.xbl.xml

    r8746 r8861  
    8383                                this.fDraftTextBox.style.color="#666666"; 
    8484                                 
    85                                 //Controller copie de XEDInputController. 
     85                                //Controller copie de XEDInputController (nécessaire pour préservaion des espaces inséccables dans le copier/coller). 
    8686                                var vController = { 
    8787                                        fInput : this.fEditorBox.inputField, 
     
    102102                return; 
    103103        } 
    104         //ut.debug("XEDInputController!!!!!!!"+pCmd); 
    105104        //On copie 
    106105        var vSel = vEditor.selection; 
     106        if(vSel.isCollapsed) return; 
    107107        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; 
    115109        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                        } 
    121127                } 
    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(); 
    135144                } 
    136                 vResult += vEndNode.data.substringData(0, vEndOffs); 
     145                if(vCurrNode == vEndNode) { 
     146                        if(vEndNode.nodeType==3) vResult += vEndNode.substringData(0, vRange.endOffset); 
     147                } 
    137148        } 
    138149         
  • trunk/Xul_XedLib/chrome/content/scenarixedlib/core/xed.js

    r8616 r8861  
    21232123        //xed.debug("XEDInputController!!!!!!!"+pCmd); 
    21242124        //On copie 
     2125        //On copie 
    21252126        var vSel = vEditor.selection; 
     2127        if(vSel.isCollapsed) return; 
    21262128        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; 
    21342130        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         } 
    21442131         
    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); 
    21482136        } 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                } 
    21562169        } 
    21572170         
Note: See TracChangeset for help on using the changeset viewer.