From 44fa4d72d01b8e286478005d12f796501ac082b2 Mon Sep 17 00:00:00 2001 From: gorhill Date: Mon, 26 Jan 2015 14:07:55 -0500 Subject: [PATCH] This fixes scrolling not being pinned on Firefox --- src/js/devtool-log.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/js/devtool-log.js b/src/js/devtool-log.js index f2a8e67b2..e7075521b 100644 --- a/src/js/devtool-log.js +++ b/src/js/devtool-log.js @@ -125,6 +125,10 @@ var renderLogEntry = function(entry) { /******************************************************************************/ var renderLogBuffer = function(buffer) { + if ( buffer.length === 0 ) { + return; + } + // Preserve scroll position var height = tbody.offsetHeight; @@ -132,8 +136,26 @@ var renderLogBuffer = function(buffer) { for ( var i = 0; i < n; i++ ) { renderLogEntry(buffer[i]); } + + var yDelta = tbody.offsetHeight - height; + if ( yDelta === 0 ) { + return; + } + + // Chromium: + // body.scrollTop = good value + // body.parentNode.scrollTop = 0 if ( body.scrollTop !== 0 ) { - body.scrollTop += tbody.offsetHeight - height; + body.scrollTop += yDelta; + return; + } + + // Firefox: + // body.scrollTop = 0 + // body.parentNode.scrollTop = good value + var parentNode = body.parentNode; + if ( parentNode && parentNode.scrollTop !== 0 ) { + parentNode.scrollTop += yDelta; } };