summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-06-29 17:12:26 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-06-29 21:10:45 +0200
commitba694fe0010f17249f36f64da185926bcb23f204 (patch)
treea4baec73655ba768118e4104480764c951ad2008
parentf2c308c6c1dde02575d6d09fe4973fd0be9b52ed (diff)
downloadqutebrowser-ba694fe0010f17249f36f64da185926bcb23f204.tar.gz
qutebrowser-ba694fe0010f17249f36f64da185926bcb23f204.zip
qt6 mypy: Fix qt5 mypy regressions
-rw-r--r--qutebrowser/browser/browsertab.py7
-rw-r--r--qutebrowser/keyinput/eventfilter.py15
-rw-r--r--qutebrowser/keyinput/modeman.py7
-rw-r--r--qutebrowser/misc/nativeeventfilter.py14
4 files changed, 31 insertions, 12 deletions
diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py
index 27b696e37..eae58f7ed 100644
--- a/qutebrowser/browser/browsertab.py
+++ b/qutebrowser/browser/browsertab.py
@@ -27,6 +27,7 @@ import dataclasses
from typing import (cast, TYPE_CHECKING, Any, Callable, Iterable, List, Optional,
Sequence, Set, Type, Union, Tuple)
+from qutebrowser.qt import machinery
from qutebrowser.qt.core import (pyqtSignal, pyqtSlot, QUrl, QObject, QSizeF, Qt,
QEvent, QPoint, QRect)
from qutebrowser.qt.gui import QKeyEvent, QIcon, QPixmap
@@ -1322,7 +1323,11 @@ class AbstractTab(QWidget):
if pic.isNull():
return None
- return cast(QPixmap, pic) # FIXME:v4 cast needed for QtWebKit
+ if machinery.IS_QT6:
+ # FIXME:v4 cast needed for QtWebKit
+ pic = cast(QPixmap, pic)
+
+ return pic
def __repr__(self) -> str:
try:
diff --git a/qutebrowser/keyinput/eventfilter.py b/qutebrowser/keyinput/eventfilter.py
index a808c4dd8..b0b3ae188 100644
--- a/qutebrowser/keyinput/eventfilter.py
+++ b/qutebrowser/keyinput/eventfilter.py
@@ -21,6 +21,7 @@
from typing import cast
+from qutebrowser.qt import machinery
from qutebrowser.qt.core import pyqtSlot, QObject, QEvent
from qutebrowser.qt.gui import QKeyEvent, QWindow
@@ -87,29 +88,31 @@ class EventFilter(QObject):
Return:
True if the event should be filtered, False if it's passed through.
"""
+ ev_type = event.type()
+ if machinery.IS_QT6:
+ ev_type = cast(QEvent.Type, ev_type)
+
if self._log_qt_events:
try:
source = repr(obj)
except AttributeError: # might not be fully initialized yet
source = type(obj).__name__
- evtype = debug.qenum_key(QEvent, cast(QEvent.Type, event.type()))
- log.misc.debug(f"{source} got event: {evtype}")
+ ev_type_str = debug.qenum_key(QEvent, ev_type)
+ log.misc.debug(f"{source} got event: {ev_type_str}")
if not isinstance(obj, QWindow):
# We already handled this same event at some point earlier, so
# we're not interested in it anymore.
return False
- typ = cast(QEvent.Type, event.type())
-
- if typ not in self._handlers:
+ if ev_type not in self._handlers:
return False
if not self._activated:
return False
- handler = self._handlers[typ]
+ handler = self._handlers[ev_type]
try:
return handler(cast(QKeyEvent, event))
except:
diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py
index 927c93512..dd849ebb6 100644
--- a/qutebrowser/keyinput/modeman.py
+++ b/qutebrowser/keyinput/modeman.py
@@ -23,6 +23,7 @@ import functools
import dataclasses
from typing import Mapping, Callable, MutableMapping, Union, Set, cast
+from qutebrowser.qt import machinery
from qutebrowser.qt.core import pyqtSlot, pyqtSignal, Qt, QObject, QEvent
from qutebrowser.qt.gui import QKeyEvent, QKeySequence
@@ -467,7 +468,11 @@ class ModeManager(QObject):
QEvent.Type.ShortcutOverride:
functools.partial(self._handle_keypress, dry_run=True),
}
- handler = handlers[cast(QEvent.Type, event.type())]
+ ev_type = event.type()
+ if machinery.IS_QT6:
+ ev_type = cast(QEvent.Type, ev_type)
+
+ handler = handlers[ev_type]
return handler(cast(QKeyEvent, event))
@cmdutils.register(instance='mode-manager', scope='window')
diff --git a/qutebrowser/misc/nativeeventfilter.py b/qutebrowser/misc/nativeeventfilter.py
index 3bb9d4bbb..dad22ef7d 100644
--- a/qutebrowser/misc/nativeeventfilter.py
+++ b/qutebrowser/misc/nativeeventfilter.py
@@ -27,7 +27,7 @@ import enum
import ctypes
import ctypes.util
-from qutebrowser.qt import sip
+from qutebrowser.qt import sip, machinery
from qutebrowser.qt.core import QAbstractNativeEventFilter, QByteArray, qVersion
from qutebrowser.misc import objects
@@ -105,6 +105,12 @@ class xcb_query_extension_reply_t(ctypes.Structure): # noqa: N801
# pylint: enable=invalid-name
+if machinery.IS_QT6:
+ _POINTER_RET_T = sip.voidptr
+else:
+ _POINTER_RET_T = int
+
+
class NativeEventFilter(QAbstractNativeEventFilter):
"""Event filter for XCB messages to work around Qt 6.5.1 crash."""
@@ -113,8 +119,8 @@ class NativeEventFilter(QAbstractNativeEventFilter):
#
# Tuple because PyQt uses the second value as the *result out-pointer, which
# according to the Qt documentation is only used on Windows.
- _PASS_EVENT_RET = (False, cast(sip.voidptr, 0))
- _FILTER_EVENT_RET = (True, cast(sip.voidptr, 0))
+ _PASS_EVENT_RET = (False, cast(_POINTER_RET_T, 0))
+ _FILTER_EVENT_RET = (True, cast(_POINTER_RET_T, 0))
def __init__(self) -> None:
super().__init__()
@@ -147,7 +153,7 @@ class NativeEventFilter(QAbstractNativeEventFilter):
def nativeEventFilter(
self, evtype: Union[bytes, QByteArray], message: sip.voidptr
- ) -> Tuple[bool, sip.voidptr]:
+ ) -> Tuple[bool, _POINTER_RET_T]:
"""Handle XCB events."""
# We're only installed when the platform plugin is xcb
assert evtype == b"xcb_generic_event_t", evtype