diff --git a/js/ui/components/telepathyClient.js b/js/ui/components/telepathyClient.js index 11ca19351..7aa6a84ff 100644 --- a/js/ui/components/telepathyClient.js +++ b/js/ui/components/telepathyClient.js @@ -780,16 +780,18 @@ const ChatNotification = new Lang.Class({ this.emit('unfocused'); })); - this._oldMaxScrollAdjustment = 0; this._createScrollArea(); this._lastGroup = null; this._lastGroupActor = null; + // Keep track of the bottom position for the current adjustment and + // force a scroll to the bottom if things change while we were at the + // bottom + this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value; this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) { - let currentValue = adjustment.value + adjustment.page_size; - if (currentValue == this._oldMaxScrollAdjustment) + if (adjustment.value == this._oldMaxScrollValue) this.scrollTo(St.Side.BOTTOM); - this._oldMaxScrollAdjustment = adjustment.upper; + this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size); })); this._inputHistory = new History.HistoryManager({ entry: this._responseEntry.clutter_text });