From fb91ea9e428d836f1293a862a929a4d29a4f4968 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 7 Aug 2012 14:40:18 +0400 Subject: [PATCH 1/4] add two more test/demos --- demo/requirejs+build.html | 43 +++++++++++ demo/scrollable-page.html | 150 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 193 insertions(+) create mode 100644 demo/requirejs+build.html create mode 100644 demo/scrollable-page.html diff --git a/demo/requirejs+build.html b/demo/requirejs+build.html new file mode 100644 index 00000000..4a494063 --- /dev/null +++ b/demo/requirejs+build.html @@ -0,0 +1,43 @@ + + + + + + Editor + + + + +
function foo(items) {
+    var i;
+    for (i = 0; i < items.length; i++) {
+        alert("Ace Rocks " + items[i]);
+    }
+}
+ + + + + + + diff --git a/demo/scrollable-page.html b/demo/scrollable-page.html new file mode 100644 index 00000000..308208ed --- /dev/null +++ b/demo/scrollable-page.html @@ -0,0 +1,150 @@ + + + + + + Editor + + + +
+ + scroll down ⇓ + +
+
function foo(items) {
+    var i;
+    for (i = 0; i < items.length; i++) {
+        alert("Ace Rocks " + items[i]);
+    }
+
+}
+
+
+ press F11 to switch to fullscreen mode +
+ + + + + +
+ + + + + + From 88ff6cf50bac068523d55cb9cf4a82a4d008c219 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 7 Aug 2012 14:41:13 +0400 Subject: [PATCH 2/4] add page for keeping track of performance --- tool/perf-test.html | 357 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100644 tool/perf-test.html diff --git a/tool/perf-test.html b/tool/perf-test.html new file mode 100644 index 00000000..74603400 --- /dev/null +++ b/tool/perf-test.html @@ -0,0 +1,357 @@ + + + + + + + Ace Profile util + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+
+ +
+ + + + + + + + + From 6e513610b365aa62a0b230c66171ac9b182a29b0 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 7 Aug 2012 19:02:17 +0400 Subject: [PATCH 3/4] do not force reflow while updating the gutter --- lib/ace/css/editor.css | 1 - lib/ace/layer/gutter.js | 14 ++++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index f0d31f10..04cfff28 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -131,7 +131,6 @@ .ace_gutter .ace_layer { position: relative; - min-width: 40px; width: auto; text-align: right; pointer-events: auto; diff --git a/lib/ace/layer/gutter.js b/lib/ace/layer/gutter.js index 2bf3bc53..4b67989c 100644 --- a/lib/ace/layer/gutter.js +++ b/lib/ace/layer/gutter.js @@ -149,17 +149,15 @@ var Gutter = function(parentEl) { i++; } - if (this.session.$useWrapMode) - html.push( - "
", - this.session.getLength() - 1, - "
" - ); - this.element = dom.setInnerHtml(this.element, html.join("")); this.element.style.height = config.minHeight + "px"; - var gutterWidth = this.element.offsetWidth; + if (this.session.$useWrapMode) + i = this.session.getLength(); + + var gutterWidth = ("" + --i).length * config.characterWidth; + var padding = this.$padding || this.$computePadding(); + gutterWidth += padding.left + padding.right; if (gutterWidth !== this.gutterWidth) { this.gutterWidth = gutterWidth; this._emit("changeGutterWidth", gutterWidth); From 5fc87d9489ccb59b3aa03dafa9d6ccbe36fbb03c Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 7 Aug 2012 14:46:23 +0400 Subject: [PATCH 4/4] fix gutter not updating when out of screen changeLines is scheduled because of this setAnnotations was not working when background tokenizer was active --- lib/ace/virtual_renderer.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 6a6dae4b..407cd77f 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -720,12 +720,10 @@ var VirtualRenderer = function(container, theme) { this.$gutterLayer.update(this.layerConfig); } else if (changes & this.CHANGE_LINES) { - if (this.$updateLines()) { - this.$updateScrollBar(); - if (this.showGutter) - this.$gutterLayer.update(this.layerConfig); - } - } else if (changes & this.CHANGE_GUTTER) { + if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.showGutter) + this.$gutterLayer.update(this.layerConfig); + } + else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { if (this.showGutter) this.$gutterLayer.update(this.layerConfig); }