From 0e5b77763f6433137837d328c6edf38c6403bb56 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 28 Jul 2012 16:53:56 +0400 Subject: [PATCH] revert acc3faf42ce69d004656d3b32b1be79b95954c87 since it was not working with folding enabled --- lib/ace/css/editor.css | 6 +++++ lib/ace/virtual_renderer.js | 49 ++++++++++++++----------------------- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index 2b9967a7..f0d31f10 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -27,6 +27,12 @@ z-index: 4; } +.ace_gutter_active_line { + position: absolute; + left: 0; + right: 0; +} + .ace_scroller.horscroll { box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; } diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index d9a0c241..b9abc187 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -102,6 +102,7 @@ var VirtualRenderer = function(container, theme) { this.content.className = "ace_content"; this.scroller.appendChild(this.content); + this.setHighlightGutterLine(true); this.$gutterLayer = new GutterLayer(this.$gutter); this.$gutterLayer.on("changeGutterWidth", this.onResize.bind(this, true)); this.setFadeFoldWidgets(true); @@ -468,38 +469,30 @@ var VirtualRenderer = function(container, theme) { dom.removeCssClass(this.$gutter, "ace_fade-fold-widgets"); }; - this.$highlightGutterLine = true; + this.$highlightGutterLine = false; this.setHighlightGutterLine = function(shouldHighlight) { if (this.$highlightGutterLine == shouldHighlight) return; this.$highlightGutterLine = shouldHighlight; - this.$loop.schedule(this.CHANGE_GUTTER); + if (!this.$gutterLineHighlight) { + this.$gutterLineHighlight = dom.createElement("div"); + this.$gutterLineHighlight.className = "ace_gutter_active_line"; + this.$gutter.appendChild(this.$gutterLineHighlight); + return; + } + + this.$gutterLineHighlight.style.display = shouldHighlight ? "" : "none"; + this.$updateGutterLineHighlight(); }; this.getHighlightGutterLine = function() { return this.$highlightGutterLine; }; - this.$updateGutterLineHighlight = function(gutterReady) { - var i = this.session.selection.lead.row; - if (i == this.$gutterLineHighlight) - return; - - if (!gutterReady) { - var lineEl, ch = this.$gutterLayer.element.children; - var index = this.$gutterLineHighlight - this.layerConfig.firstRow; - if (index >= 0 && (lineEl = ch[index])) - dom.removeCssClass(lineEl, "ace_gutter_active_line"); - - index = i - this.layerConfig.firstRow; - if (index >= 0 && (lineEl = ch[index])) - dom.addCssClass(lineEl, "ace_gutter_active_line"); - } - - this.$gutterLayer.removeGutterDecoration(this.$gutterLineHighlight, "ace_gutter_active_line"); - this.$gutterLayer.addGutterDecoration(i, "ace_gutter_active_line"); - this.$gutterLineHighlight = i; + this.$updateGutterLineHighlight = function() { + this.$gutterLineHighlight.style.top = this.$cursorLayer.$pixelPos.top - this.layerConfig.offset + "px"; + this.$gutterLineHighlight.style.height = this.layerConfig.lineHeight + "px"; }; this.$updatePrintMargin = function() { @@ -693,15 +686,13 @@ var VirtualRenderer = function(container, theme) { // update scrollbar first to not lose scroll position when gutter calls resize this.$updateScrollBar(); this.$textLayer.update(this.layerConfig); - if (this.showGutter) { - if (this.$highlightGutterLine) - this.$updateGutterLineHighlight(true); + if (this.showGutter) this.$gutterLayer.update(this.layerConfig); - } this.$markerBack.update(this.layerConfig); this.$markerFront.update(this.layerConfig); this.$cursorLayer.update(this.layerConfig); this.$moveTextAreaToCursor(); + this.$highlightGutterLine && this.$updateGutterLineHighlight(); return; } @@ -713,15 +704,13 @@ var VirtualRenderer = function(container, theme) { else this.$textLayer.scrollLines(this.layerConfig); - if (this.showGutter) { - if (this.$highlightGutterLine) - this.$updateGutterLineHighlight(true); + if (this.showGutter) this.$gutterLayer.update(this.layerConfig); - } this.$markerBack.update(this.layerConfig); this.$markerFront.update(this.layerConfig); this.$cursorLayer.update(this.layerConfig); this.$moveTextAreaToCursor(); + this.$highlightGutterLine && this.$updateGutterLineHighlight(); return; } @@ -744,7 +733,7 @@ var VirtualRenderer = function(container, theme) { if (changes & this.CHANGE_CURSOR) { this.$cursorLayer.update(this.layerConfig); this.$moveTextAreaToCursor(); - this.$highlightGutterLine && this.$updateGutterLineHighlight(false); + this.$highlightGutterLine && this.$updateGutterLineHighlight(); } if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {