summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/webelem.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/browser/webelem.py')
-rw-r--r--qutebrowser/browser/webelem.py49
1 files changed, 24 insertions, 25 deletions
diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py
index 05b0eadb3..a79af7c02 100644
--- a/qutebrowser/browser/webelem.py
+++ b/qutebrowser/browser/webelem.py
@@ -21,13 +21,12 @@
from typing import cast, TYPE_CHECKING, Iterator, Optional, Set, Union
import collections.abc
-
-from PyQt5.QtCore import QUrl, Qt, QEvent, QTimer, QRect, QPoint
-from PyQt5.QtGui import QMouseEvent
+from qutebrowser.qt import QtGui
from qutebrowser.config import config
from qutebrowser.keyinput import modeman
from qutebrowser.utils import log, usertypes, utils, qtutils, objreg
+from qutebrowser.qt import QtCore
if TYPE_CHECKING:
from qutebrowser.browser import browsertab
@@ -46,7 +45,7 @@ class OrphanedError(Error):
"""Raised when a webelement's parent has vanished."""
-def css_selector(group: str, url: QUrl) -> str:
+def css_selector(group: str, url: QtCore.QUrl) -> str:
"""Get a CSS selector for the given group/URL."""
selectors = config.instance.get('hints.selectors', url)
if group not in selectors:
@@ -98,7 +97,7 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
"""Check if this element has a valid frame attached."""
raise NotImplementedError
- def geometry(self) -> QRect:
+ def geometry(self) -> QtCore.QRect:
"""Get the geometry for this element."""
raise NotImplementedError
@@ -144,8 +143,8 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
"""Insert the given text into the element."""
raise NotImplementedError
- def rect_on_view(self, *, elem_geometry: QRect = None,
- no_js: bool = False) -> QRect:
+ def rect_on_view(self, *, elem_geometry: QtCore.QRect = None,
+ no_js: bool = False) -> QtCore.QRect:
"""Get the geometry of the element relative to the webview.
Args:
@@ -281,7 +280,7 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
"""Remove target from link."""
raise NotImplementedError
- def resolve_url(self, baseurl: QUrl) -> Optional[QUrl]:
+ def resolve_url(self, baseurl: QtCore.QUrl) -> Optional[QtCore.QUrl]:
"""Resolve the URL in the element's src/href attribute.
Args:
@@ -300,7 +299,7 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
else:
return None
- url = QUrl(text)
+ url = QtCore.QUrl(text)
if not url.isValid():
return None
if url.isRelative():
@@ -317,7 +316,7 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
"""Return True if clicking this element needs user interaction."""
raise NotImplementedError
- def _mouse_pos(self) -> QPoint:
+ def _mouse_pos(self) -> QtCore.QPoint:
"""Get the position to click/hover."""
# Click the center of the largest square fitting into the top/left
# corner of the rectangle, this will help if part of the <a> element
@@ -338,7 +337,7 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
raise NotImplementedError
def _click_fake_event(self, click_target: usertypes.ClickTarget,
- button: Qt.MouseButton = Qt.LeftButton) -> None:
+ button: QtCore.Qt.MouseButton = QtCore.Qt.LeftButton) -> None:
"""Send a fake click event to the element."""
pos = self._mouse_pos()
@@ -346,28 +345,28 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
"target {}".format(self, pos, click_target))
target_modifiers = {
- usertypes.ClickTarget.normal: Qt.NoModifier,
- usertypes.ClickTarget.window: Qt.AltModifier | Qt.ShiftModifier,
- usertypes.ClickTarget.tab: Qt.ControlModifier,
- usertypes.ClickTarget.tab_bg: Qt.ControlModifier,
+ usertypes.ClickTarget.normal: QtCore.Qt.NoModifier,
+ usertypes.ClickTarget.window: QtCore.Qt.AltModifier | QtCore.Qt.ShiftModifier,
+ usertypes.ClickTarget.tab: QtCore.Qt.ControlModifier,
+ usertypes.ClickTarget.tab_bg: QtCore.Qt.ControlModifier,
}
if config.val.tabs.background:
- target_modifiers[usertypes.ClickTarget.tab] |= Qt.ShiftModifier
+ target_modifiers[usertypes.ClickTarget.tab] |= QtCore.Qt.ShiftModifier
else:
- target_modifiers[usertypes.ClickTarget.tab_bg] |= Qt.ShiftModifier
+ target_modifiers[usertypes.ClickTarget.tab_bg] |= QtCore.Qt.ShiftModifier
- modifiers = cast(Qt.KeyboardModifiers, target_modifiers[click_target])
+ modifiers = cast(QtCore.Qt.KeyboardModifiers, target_modifiers[click_target])
events = [
- QMouseEvent(QEvent.MouseMove, pos, Qt.NoButton, Qt.NoButton, Qt.NoModifier),
- QMouseEvent(QEvent.MouseButtonPress, pos, button, button, modifiers),
- QMouseEvent(QEvent.MouseButtonRelease, pos, button, Qt.NoButton, modifiers),
+ QtGui.QMouseEvent(QtCore.QEvent.MouseMove, pos, QtCore.Qt.NoButton, QtCore.Qt.NoButton, QtCore.Qt.NoModifier),
+ QtGui.QMouseEvent(QtCore.QEvent.MouseButtonPress, pos, button, button, modifiers),
+ QtGui.QMouseEvent(QtCore.QEvent.MouseButtonRelease, pos, button, QtCore.Qt.NoButton, modifiers),
]
for evt in events:
self._tab.send_event(evt)
- QTimer.singleShot(0, self._move_text_cursor)
+ QtCore.QTimer.singleShot(0, self._move_text_cursor)
def _click_editable(self, click_target: usertypes.ClickTarget) -> None:
"""Fake a click on an editable input field."""
@@ -445,11 +444,11 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
def hover(self) -> None:
"""Simulate a mouse hover over the element."""
pos = self._mouse_pos()
- event = QMouseEvent(QEvent.MouseMove, pos, Qt.NoButton, Qt.NoButton,
- Qt.NoModifier)
+ event = QtGui.QMouseEvent(QtCore.QEvent.MouseMove, pos, QtCore.Qt.NoButton, QtCore.Qt.NoButton,
+ QtCore.Qt.NoModifier)
self._tab.send_event(event)
def right_click(self) -> None:
"""Simulate a right-click on the element."""
self._click_fake_event(usertypes.ClickTarget.normal,
- button=Qt.RightButton)
+ button=QtCore.Qt.RightButton)