summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-06-30 14:39:14 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-06-30 14:39:14 +0200
commit7b630361789e6edfdaa0496af650db6521d37187 (patch)
treec9753d813faec91d053138bad660dcf5ec9de7b5
parenta3ec252d095656ce2a1132cea0fad00f7eb564b3 (diff)
downloadqutebrowser-7b630361789e6edfdaa0496af650db6521d37187.tar.gz
qutebrowser-7b630361789e6edfdaa0496af650db6521d37187.zip
Revert "Fix bad keyutils merge"
This reverts commit 127a4bf7561a97ac31c23ccfd6120bf4c5769cc5.
-rw-r--r--qutebrowser/keyinput/keyutils.py30
1 files changed, 19 insertions, 11 deletions
diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py
index 64dccc68a..38eb563e9 100644
--- a/qutebrowser/keyinput/keyutils.py
+++ b/qutebrowser/keyinput/keyutils.py
@@ -39,7 +39,9 @@ from qutebrowser.qt import machinery
from qutebrowser.qt.core import Qt, QEvent
from qutebrowser.qt.gui import QKeySequence, QKeyEvent
if machinery.IS_QT6:
- from qutebrowser.qt.core import QKeyCombination
+ # FIXME:qt6 (lint) how come pylint isn't picking this up with both backends
+ # installed?
+ from qutebrowser.qt.core import QKeyCombination # pylint: disable=no-name-in-module
else:
QKeyCombination = None # QKeyCombination was added in Qt 6
@@ -349,7 +351,7 @@ def _unset_modifier_bits(
https://github.com/python/cpython/issues/105497
"""
if machinery.IS_QT5:
- return Qt.KeyboardModifiers(modifiers & ~mask) # can lose type if it's 0
+ return cast(_ModifierType, modifiers & ~mask)
else:
return Qt.KeyboardModifier(modifiers.value & ~mask.value)
@@ -369,14 +371,11 @@ class KeyInfo:
def __post_init__(self) -> None:
"""Run some validation on the key/modifier values."""
- # This changed with Qt 6, and e.g. to_qt() relies on this.
- if machinery.IS_QT5:
- modifier_classes = (Qt.KeyboardModifier, Qt.KeyboardModifiers)
- elif machinery.IS_QT6:
- modifier_classes = Qt.KeyboardModifier
- assert isinstance(self.key, Qt.Key), self.key
- assert isinstance(self.modifiers, modifier_classes), self.modifiers
-
+ # This is mainly useful while porting from Qt 5 to 6.
+ # FIXME:qt6 do we want to remove or keep this (and fix the remaining
+ # issues) when done?
+ # assert isinstance(self.key, Qt.Key), self.key
+ # assert isinstance(self.modifiers, Qt.KeyboardModifier), self.modifiers
_assert_plain_key(self.key)
_assert_plain_modifier(self.modifiers)
@@ -491,7 +490,16 @@ class KeyInfo:
if machinery.IS_QT5:
return int(self.key) | int(self.modifiers)
else:
- return QKeyCombination(self.modifiers, self.key)
+ try:
+ # FIXME:qt6 We might want to consider only supporting KeyInfo to be
+ # instanciated with a real Qt.Key, not with ints. See __post_init__.
+ key = Qt.Key(self.key)
+ except ValueError as e:
+ # WORKAROUND for
+ # https://www.riverbankcomputing.com/pipermail/pyqt/2022-April/044607.html
+ raise InvalidKeyError(e)
+
+ return QKeyCombination(self.modifiers, key)
def with_stripped_modifiers(self, modifiers: Qt.KeyboardModifier) -> "KeyInfo":
mods = _unset_modifier_bits(self.modifiers, modifiers)