41 var r1 = document.createRange() ;r1.setStart(userSelection.anchorNode, userSelection.anchorOffset) ;r1.collapse(true) ; |
41 var r1 = document.createRange() ;r1.setStart(userSelection.anchorNode, userSelection.anchorOffset) ;r1.collapse(true) ; |
42 var r2 = document.createRange() ;r2.setEnd(userSelection.focusNode, userSelection.focusOffset) ;r2.collapse(false) ; |
42 var r2 = document.createRange() ;r2.setEnd(userSelection.focusNode, userSelection.focusOffset) ;r2.collapse(false) ; |
43 var leftToRight = (r2.compareBoundaryPoints(2, r1) == 1) ; // 2 is for END_TO_END |
43 var leftToRight = (r2.compareBoundaryPoints(2, r1) == 1) ; // 2 is for END_TO_END |
44 // CY.log("leftToRight : " + leftToRight) ; |
44 // CY.log("leftToRight : " + leftToRight) ; |
45 startNode = (leftToRight) ? userSelection.anchorNode.parentNode : userSelection.focusNode.parentNode ; |
45 startNode = (leftToRight) ? userSelection.anchorNode.parentNode : userSelection.focusNode.parentNode ; |
|
46 // GIB: when selecting amath, we should go up in the dom to find the accurate start/end Nodes |
|
47 if (startNode.nodeName == 'mi' || startNode.nodeName == 'mo') { |
|
48 startNode = startNode.parentElement.parentElement.parentElement.parentElement; |
|
49 } |
46 innerStartNode = (leftToRight) ? userSelection.anchorNode : userSelection.focusNode ; |
50 innerStartNode = (leftToRight) ? userSelection.anchorNode : userSelection.focusNode ; |
47 endNode = (leftToRight) ? userSelection.focusNode.parentNode : userSelection.anchorNode.parentNode; |
51 endNode = (leftToRight) ? userSelection.focusNode.parentNode : userSelection.anchorNode.parentNode; |
|
52 // GIB: when selecting amath, we should go up in the dom to find the accurate start/end Nodes |
|
53 if (endNode.nodeName == 'mi' || endNode.nodeName == 'mo') { |
|
54 endNode = endNode.parentElement.parentElement.parentElement.parentElement; |
|
55 } |
48 innerEndNode = (leftToRight) ? userSelection.focusNode : userSelection.anchorNode; |
56 innerEndNode = (leftToRight) ? userSelection.focusNode : userSelection.anchorNode; |
49 |
57 |
50 startOffset = (leftToRight) ? userSelection.anchorOffset : userSelection.focusOffset; |
58 startOffset = (leftToRight) ? userSelection.anchorOffset : userSelection.focusOffset; |
51 endOffset = (leftToRight) ? userSelection.focusOffset : userSelection.anchorOffset ; |
59 endOffset = (leftToRight) ? userSelection.focusOffset : userSelection.anchorOffset ; |
52 |
60 |