diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 81da3fb28..27183b765 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -230,9 +230,16 @@ class WebEngineScroller(browsertab.AbstractScroller): # shutting down a tab return assert isinstance(jsret, dict), jsret - self._pos_perc = (jsret['perc']['x'], jsret['perc']['y']) self._pos_px = QPoint(jsret['px']['x'], jsret['px']['y']) - self._at_bottom = jsret['at_bottom'] + + dx = jsret['scroll']['width'] - jsret['inner']['width'] + perc_x = 0 if dx == 0 else 100 / dx * jsret['px']['x'] + dy = jsret['scroll']['height'] - jsret['inner']['height'] + perc_y = 0 if dy == 0 else 100 / dy * jsret['px']['y'] + + self._at_bottom = dy == jsret['scroll']['height'] + self._pos_perc = perc_x, perc_y + self.perc_changed.emit(*self._pos_perc) js_code = javascript.assemble('scroll', 'pos') diff --git a/qutebrowser/javascript/scroll.js b/qutebrowser/javascript/scroll.js index 69e8adf9c..fa0f311b3 100644 --- a/qutebrowser/javascript/scroll.js +++ b/qutebrowser/javascript/scroll.js @@ -61,26 +61,17 @@ window._qutebrowser.scroll = (function() { funcs.pos = function() { var elem = document.documentElement; - var dx = elem.scrollWidth - window.innerWidth; - var dy = elem.scrollHeight - window.innerHeight; - var perc_x, perc_y; - - if (dx === 0) { - perc_x = 0; - } else { - perc_x = 100 / dx * window.scrollX; - } - - if (dy === 0) { - perc_y = 0; - } else { - perc_y = 100 / dy * window.scrollY; - } var pos = { - "perc": {"x": perc_x, "y": perc_y}, "px": {"x": window.scrollX, "y": window.scrollY}, - "at_bottom": dy === window.scrollY, + "scroll": { + "width": elem.scrollWidth, + "height": elem.scrollHeight, + }, + "inner": { + "width": window.innerWidth, + "height": window.innerHeight, + }, }; // console.log(JSON.stringify(pos));