From e32a760ef184cbeda3e003767d28fdfbd3ddbdb0 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 19 Jun 2011 15:36:32 +0500 Subject: [PATCH] editor.setSession must update wraplimit --- lib/ace/editor.js | 1 + lib/ace/virtual_renderer.js | 36 +++++++++++++++++++----------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 01256ee3..3901618e 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -192,6 +192,7 @@ var Editor =function(renderer, session) { this.onChangeBackMarker(); this.onChangeBreakpoint(); this.onChangeAnnotation(); + this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); this.renderer.scrollToRow(session.getScrollTopRow()); this.renderer.updateFull(); diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 9d7ce7f8..fe45aedd 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -201,13 +201,15 @@ var VirtualRenderer = function(container, theme) { */ this.onResize = function(force) { var changes = this.CHANGE_SIZE; + var size = this.$size; var height = dom.getInnerHeight(this.container); - if (force || this.$size.height != height) { - this.$size.height = height; + if (force || size.height != height) { + size.height = height; this.scroller.style.height = height + "px"; - this.scrollBar.setHeight(this.scroller.clientHeight); + size.scrollerHeight = this.scroller.clientHeight; + this.scrollBar.setHeight(size.scrollerHeight); if (this.session) { this.scrollToY(this.getScrollTop()); @@ -216,27 +218,27 @@ var VirtualRenderer = function(container, theme) { } var width = dom.getInnerWidth(this.container); - if (force || this.$size.width != width) { - this.$size.width = width; + if (force || size.width != width) { + size.width = width; var gutterWidth = this.showGutter ? this.$gutter.offsetWidth : 0; this.scroller.style.left = gutterWidth + "px"; - this.scroller.style.width = Math.max(0, width - gutterWidth - this.scrollBar.getWidth()) + "px"; + size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBar.getWidth()) + this.scroller.style.width = size.scrollerWidth + "px"; - if (this.session.getUseWrapMode()) { - var availableWidth = this.scroller.clientWidth - this.$padding * 2; - var limit = Math.floor(availableWidth / this.characterWidth) - 1; - if (this.session.adjustWrapLimit(limit) || force) { - changes = changes | this.CHANGE_FULL; - } - } + if (this.session.getUseWrapMode() && this.adjustWrapLimit() || force) + changes = changes | this.CHANGE_FULL; } - this.$size.scrollerWidth = this.scroller.clientWidth; - this.$size.scrollerHeight = this.scroller.clientHeight; this.$loop.schedule(changes); }; + this.adjustWrapLimit = function(){ + var availableWidth = this.$size.scrollerWidth - this.$padding * 2; + var limit = Math.floor(availableWidth / this.characterWidth) - 1; + return this.session.adjustWrapLimit(limit); + }; + this.$onGutterClick = function(e) { var pageX = event.getDocumentX(e); var pageY = event.getDocumentY(e); @@ -420,7 +422,7 @@ var VirtualRenderer = function(container, theme) { this.$textLayer.update(this.layerConfig); else this.$textLayer.scrollLines(this.layerConfig); - + if (this.showGutter) this.$gutterLayer.update(this.layerConfig); this.$markerBack.update(this.layerConfig); @@ -767,7 +769,7 @@ var VirtualRenderer = function(container, theme) { this.setTheme = function(theme) { var _self = this; - + this.$themeValue = theme; if (!theme || typeof theme == "string") { theme = theme || "ace/theme/textmate";