X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matitaB%2Fmatita%2Fmatitaweb.js;h=4b99a23a286a471ca341f67c8fd4f4da25f3d8be;hb=33e69ace76c39b928f8c38a1130dc54fa2255889;hp=0cf29e3493241df078acf5bd79e4aaa73f67c2f2;hpb=98a02c0402c29eceb2c07b45ab2383983f13cc95;p=helm.git diff --git a/matitaB/matita/matitaweb.js b/matitaB/matita/matitaweb.js index 0cf29e349..4b99a23a2 100644 --- a/matitaB/matita/matitaweb.js +++ b/matitaB/matita/matitaweb.js @@ -114,11 +114,40 @@ function keypress(e) pressmesg('keypress',e); var s = string_of_key(e.charCode); if (s == " ") { - i = unlocked.innerHTML.lastIndexOf('\\',getCursorPos()); + j = getCursorPos(); + i = unlocked.innerHTML.lastIndexOf('\\',j); if (i >= 0) { - window.alert("found " + unlocked.innerHTML.substring(i,getCursorPos())); + match = unlocked.innerHTML.substring(i,j); + pre = unlocked.innerHTML.substring(0,i); + post = unlocked.innerHTML.substring(j); + if (match == '\\to') { + unlocked.innerHTML = pre + "-> " + post; + unlocked.focus(); + if (savedRange != null) { + if (window.getSelection)//non IE and there is already a selection + { + var s = window.getSelection(); + if (s.rangeCount > 0) + s.removeAllRanges(); + s.addRange(savedRange); + } + else + if (document.createRange)//non IE and no selection + { + window.getSelection().addRange(savedRange); + } + else + if (document.selection)//IE + { + savedRange.select(); + } + } + + return suppressdefault(e,true); + } + else return suppressdefault(e,false); } - return suppressdefault(e,true); + else return suppressdefault(e,false); } else { return suppressdefault(e,false); } @@ -609,19 +638,21 @@ function removeElement(id) { element.parentNode.removeChild(element); } +var savedRange; + function getCursorPos() { var cursorPos; if (window.getSelection) { var selObj = window.getSelection(); - var selRange = selObj.getRangeAt(0); + savedRange = selObj.getRangeAt(0); //cursorPos = findNode(selObj.anchorNode.parentNode.childNodes, selObj.anchorNode) + selObj.anchorOffset; cursorPos = findNode(unlocked.childNodes, selObj.anchorNode,0) + selObj.anchorOffset; /* FIXME the following works wrong in Opera when the document is longer than 32767 chars */ return(cursorPos); } else if (document.selection) { - var range = document.selection.createRange(); - var bookmark = range.getBookmark(); + savedRange = document.selection.createRange(); + var bookmark = savedRange.getBookmark(); /* FIXME the following works wrong when the document is longer than 65535 chars */ cursorPos = bookmark.charCodeAt(2) - 11; /* Undocumented function [3] */ return(cursorPos);