From af7c37031862ad5edbf3a70b118d5af3a7a83587 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 15 Nov 2013 15:53:09 +0400 Subject: [PATCH 1/2] fix #1680 Autocomplete box doesn't work with horizontal scrolling --- lib/ace/autocomplete.js | 2 +- lib/ace/autocomplete/popup.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/ace/autocomplete.js b/lib/ace/autocomplete.js index 5b9312f8..822e56fb 100644 --- a/lib/ace/autocomplete.js +++ b/lib/ace/autocomplete.js @@ -78,7 +78,7 @@ var Autocomplete = function() { var rect = editor.container.getBoundingClientRect(); pos.top += rect.top - renderer.layerConfig.offset; - pos.left += rect.left; + pos.left += rect.left - editor.renderer.scrollLeft; pos.left += renderer.$gutterLayer.gutterWidth; this.popup.show(pos, lineHeight); diff --git a/lib/ace/autocomplete/popup.js b/lib/ace/autocomplete/popup.js index 76deb274..ca40cad1 100644 --- a/lib/ace/autocomplete/popup.js +++ b/lib/ace/autocomplete/popup.js @@ -250,6 +250,7 @@ var AcePopup = function(parentNode) { popup.show = function(pos, lineHeight, topdownOnly) { var el = this.container; var screenHeight = window.innerHeight; + var screenWidth = window.innerWidth; var renderer = this.renderer; // var maxLines = Math.min(renderer.$maxLines, this.session.getLength()); var maxH = renderer.$maxLines * lineHeight * 1.4; @@ -265,10 +266,15 @@ var AcePopup = function(parentNode) { popup.isTopdown = true; } - el.style.left = pos.left + "px"; el.style.display = ""; this.renderer.$textLayer.checkForSizeChanges(); - + + var left = pos.left; + if (left + el.offsetWidth > screenWidth) + left = screenWidth - el.offsetWidth; + + el.style.left = left + "px"; + this._signal("show"); lastMouseEvent = null; popup.isOpen = true; From 5ed4e3ededb0522b51d91bbad682a0f59f0324ce Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 3 Dec 2013 23:11:54 +0400 Subject: [PATCH 2/2] reset scroll position --- lib/ace/autocomplete.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/ace/autocomplete.js b/lib/ace/autocomplete.js index 822e56fb..c4fd7060 100644 --- a/lib/ace/autocomplete.js +++ b/lib/ace/autocomplete.js @@ -69,6 +69,7 @@ var Autocomplete = function() { var renderer = editor.renderer; if (!keepPopupPosition) { + this.popup.setRow(0); this.popup.setFontSize(editor.getFontSize()); var lineHeight = renderer.layerConfig.lineHeight;