fix ie issue to convert document to screen coordinates

This commit is contained in:
Fabian Jakobs 2010-05-05 10:50:38 +02:00
commit 05fd6df8fe
3 changed files with 20 additions and 7 deletions

View file

@ -115,11 +115,10 @@
</div> </div>
<script type="text/editor" id="jstext">function foo(items) { <script type="text/editor" id="jstext">function foo(items) {
for (var i=0; i<items.length; i++) { for (var i=0; i<items.length; i++) {
alert(items[i] + "juhu"; alert(items[i] + "juhu";
} }
} }</script>
</script>
<script type="text/editor" id="csstext">.text-layer { <script type="text/editor" id="csstext">.text-layer {
font-family: Monaco, "Courier New", monospace; font-family: Monaco, "Courier New", monospace;

View file

@ -228,7 +228,7 @@ ace.VirtualRenderer = function(container) {
var screenColumn = 0; var screenColumn = 0;
var remaining = docColumn; var remaining = docColumn;
var line = this.doc.getLine(row).split(/\t/g); var line = this.doc.getLine(row).split("\t");
for (var i=0; i<line.length; i++) { for (var i=0; i<line.length; i++) {
var len = line[i].length; var len = line[i].length;
if (remaining > len) { if (remaining > len) {
@ -240,6 +240,7 @@ ace.VirtualRenderer = function(container) {
break; break;
} }
} }
return screenColumn; return screenColumn;
}; };
@ -249,7 +250,7 @@ ace.VirtualRenderer = function(container) {
var docColumn = 0; var docColumn = 0;
var remaining = screenColumn; var remaining = screenColumn;
var line = this.doc.getLine(row).split(/\t/g); var line = this.doc.getLine(row).split("\t");
for (var i=0; i<line.length; i++) { for (var i=0; i<line.length; i++) {
var len = line[i].length; var len = line[i].length;
if (remaining >= len + tabSize) { if (remaining >= len + tabSize) {

View file

@ -25,6 +25,19 @@ var VirtualRendererTest = new TestCase("VirtualRendererTest", {
assertEquals(15, renderer.$documentToScreenColumn(0, 13)); assertEquals(15, renderer.$documentToScreenColumn(0, 13));
}, },
"test: convert document to scrren coordinates with leading tabs": function() {
var el = document.createElement("div");
var renderer = new ace.VirtualRenderer(el);
var doc = new ace.Document("\t\t123");
doc.setTabSize(4);
renderer.setDocument(doc);
assertEquals(0, renderer.$documentToScreenColumn(0, 0));
assertEquals(4, renderer.$documentToScreenColumn(0, 1));
assertEquals(8, renderer.$documentToScreenColumn(0, 2));
assertEquals(9, renderer.$documentToScreenColumn(0, 3));
},
"test: convert screen to document coordinates" : function() { "test: convert screen to document coordinates" : function() {
var el = document.createElement("div"); var el = document.createElement("div");
var renderer = new ace.VirtualRenderer(el); var renderer = new ace.VirtualRenderer(el);