diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index 86af0162e..93c3d00d1 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -112,7 +112,7 @@ class HintLabel(QLabel): def _move_to_elem(self): """Reposition the label to its element.""" no_js = config.get('hints', 'find-implementation') != 'javascript' - rect = self.elem.rect_on_view(adjust_zoom=False, no_js=no_js) + rect = self.elem.rect_on_view(no_js=no_js) self.move(rect.x(), rect.y()) @pyqtSlot() diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 5a0dacf6d..766c1d9e1 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -161,8 +161,7 @@ class AbstractWebElement(collections.abc.MutableMapping): # FIXME:qtwebengine get rid of this? raise NotImplementedError - def rect_on_view(self, *, elem_geometry=None, adjust_zoom=True, - no_js=False): + def rect_on_view(self, *, elem_geometry=None, no_js=False): """Get the geometry of the element relative to the webview. Uses the getClientRects() JavaScript method to obtain the collection of @@ -178,8 +177,6 @@ class AbstractWebElement(collections.abc.MutableMapping): elem_geometry: The geometry of the element, or None. Calling QWebElement::geometry is rather expensive so we want to avoid doing it twice. - adjust_zoom: Whether to adjust the element position based on the - current zoom level. no_js: Fall back to the Python implementation """ raise NotImplementedError diff --git a/qutebrowser/browser/webengine/webengineelem.py b/qutebrowser/browser/webengine/webengineelem.py index 982aa898a..0e586ce10 100644 --- a/qutebrowser/browser/webengine/webengineelem.py +++ b/qutebrowser/browser/webengine/webengineelem.py @@ -120,8 +120,7 @@ class WebEngineElement(webelem.AbstractWebElement): log.stub() return None - def rect_on_view(self, *, elem_geometry=None, adjust_zoom=True, - no_js=False): + def rect_on_view(self, *, elem_geometry=None, no_js=False): """Get the geometry of the element relative to the webview. Uses the getClientRects() JavaScript method to obtain the collection of @@ -137,8 +136,6 @@ class WebEngineElement(webelem.AbstractWebElement): elem_geometry: The geometry of the element, or None. Calling QWebElement::geometry is rather expensive so we want to avoid doing it twice. - adjust_zoom: Whether to adjust the element position based on the - current zoom level. no_js: Fall back to the Python implementation """ log.stub() diff --git a/qutebrowser/browser/webkit/webkitelem.py b/qutebrowser/browser/webkit/webkitelem.py index e320a7e12..667636f90 100644 --- a/qutebrowser/browser/webkit/webkitelem.py +++ b/qutebrowser/browser/webkit/webkitelem.py @@ -148,7 +148,7 @@ class WebKitElement(webelem.AbstractWebElement): return None return WebKitElement(elem) - def _rect_on_view_js(self, adjust_zoom): + def _rect_on_view_js(self): """Javascript implementation for rect_on_view.""" # FIXME:qtwebengine maybe we can reuse this? rects = self._elem.evaluateJavaScript("this.getClientRects()") @@ -169,7 +169,7 @@ class WebKitElement(webelem.AbstractWebElement): if width > 1 and height > 1: # fix coordinates according to zoom level zoom = self._elem.webFrame().zoomFactor() - if not config.get('ui', 'zoom-text-only') and adjust_zoom: + if not config.get('ui', 'zoom-text-only'): rect["left"] *= zoom rect["top"] *= zoom width *= zoom @@ -197,18 +197,9 @@ class WebKitElement(webelem.AbstractWebElement): rect.translate(frame.geometry().topLeft()) rect.translate(frame.scrollPosition() * -1) frame = frame.parentFrame() - # We deliberately always adjust the zoom here, even with - # adjust_zoom=False - if elem_geometry is None: - zoom = self._elem.webFrame().zoomFactor() - if not config.get('ui', 'zoom-text-only'): - rect.moveTo(rect.left() / zoom, rect.top() / zoom) - rect.setWidth(rect.width() / zoom) - rect.setHeight(rect.height() / zoom) return rect - def rect_on_view(self, *, elem_geometry=None, adjust_zoom=True, - no_js=False): + def rect_on_view(self, *, elem_geometry=None, no_js=False): """Get the geometry of the element relative to the webview. Uses the getClientRects() JavaScript method to obtain the collection of @@ -224,8 +215,6 @@ class WebKitElement(webelem.AbstractWebElement): elem_geometry: The geometry of the element, or None. Calling QWebElement::geometry is rather expensive so we want to avoid doing it twice. - adjust_zoom: Whether to adjust the element position based on the - current zoom level. no_js: Fall back to the Python implementation """ # FIXME:qtwebengine can we get rid of this with @@ -235,7 +224,7 @@ class WebKitElement(webelem.AbstractWebElement): # First try getting the element rect via JS, as that's usually more # accurate if elem_geometry is None and not no_js: - rect = self._rect_on_view_js(adjust_zoom) + rect = self._rect_on_view_js() if rect is not None: return rect diff --git a/tests/unit/browser/webkit/test_webkitelem.py b/tests/unit/browser/webkit/test_webkitelem.py index 9c88b35fe..7ca961f16 100644 --- a/tests/unit/browser/webkit/test_webkitelem.py +++ b/tests/unit/browser/webkit/test_webkitelem.py @@ -755,20 +755,14 @@ class TestRectOnView: @pytest.mark.parametrize('js_rect', [None, {}]) @pytest.mark.parametrize('zoom_text_only', [True, False]) - @pytest.mark.parametrize('adjust_zoom', [True, False]) - def test_zoomed(self, stubs, config_stub, js_rect, zoom_text_only, - adjust_zoom): + def test_zoomed(self, stubs, config_stub, js_rect, zoom_text_only): """Make sure the coordinates are adjusted when zoomed.""" config_stub.data = {'ui': {'zoom-text-only': zoom_text_only}} geometry = QRect(10, 10, 4, 4) frame = stubs.FakeWebFrame(QRect(0, 0, 100, 100), zoom=0.5) elem = get_webelem(geometry, frame, js_rect_return=js_rect, zoom_text_only=zoom_text_only) - rect = elem.rect_on_view(adjust_zoom=adjust_zoom) - if zoom_text_only or (js_rect is None and adjust_zoom): - assert rect == QRect(10, 10, 4, 4) - else: - assert rect == QRect(20, 20, 8, 8) + assert elem.rect_on_view() == QRect(10, 10, 4, 4) class TestGetChildFrames: