diff options
author | Florian Bruhin <me@the-compiler.org> | 2023-06-08 16:37:26 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2023-06-08 16:37:26 +0200 |
commit | 65c14730e3608fa48ac5a3fbfec49ffb99e7f4af (patch) | |
tree | e7009a8eea9ada2a063382060ae05706afe5dcfc | |
parent | 63b4b95fd3e2c40c859ad17b90eab50b3bacc000 (diff) | |
download | qutebrowser-65c14730e3608fa48ac5a3fbfec49ffb99e7f4af.tar.gz qutebrowser-65c14730e3608fa48ac5a3fbfec49ffb99e7f4af.zip |
mypy: Improve Qt 5 typing in keyutils
Adjust _ModifierType to consider PyQt5's separate enum/flag classes,
which lets us get rid of some type ignores
-rw-r--r-- | qutebrowser/keyinput/keyutils.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py index 9a0deffc5..2d3e11864 100644 --- a/qutebrowser/keyinput/keyutils.py +++ b/qutebrowser/keyinput/keyutils.py @@ -74,11 +74,12 @@ except ValueError: # https://www.riverbankcomputing.com/pipermail/pyqt/2022-April/044607.html _NIL_KEY = 0 -_ModifierType = Qt.KeyboardModifier if machinery.IS_QT6: _KeyInfoType = QKeyCombination + _ModifierType = Qt.KeyboardModifier else: _KeyInfoType = int + _ModifierType = Union[Qt.KeyboardModifiers, Qt.KeyboardModifier] _SPECIAL_NAMES = { @@ -487,7 +488,7 @@ class KeyInfo: def with_stripped_modifiers(self, modifiers: Qt.KeyboardModifier) -> "KeyInfo": mods = self.modifiers & ~modifiers - return KeyInfo(key=self.key, modifiers=mods) # type: ignore[arg-type] + return KeyInfo(key=self.key, modifiers=mods) def is_special(self) -> bool: """Check whether this key requires special key syntax.""" @@ -662,7 +663,7 @@ class KeySequence: _assert_plain_modifier(cast(Qt.KeyboardModifier, ev.modifiers())) key = _remap_unicode(key, ev.text()) - modifiers = ev.modifiers() + modifiers: _ModifierType = ev.modifiers() if key == _NIL_KEY: raise KeyParseError(None, "Got nil key!") @@ -687,10 +688,10 @@ class KeySequence: # In addition, Shift also *is* relevant when other modifiers are # involved. Shift-Ctrl-X should not be equivalent to Ctrl-X. shift_modifier = Qt.KeyboardModifier.ShiftModifier - if (modifiers == shift_modifier and # type: ignore[comparison-overlap] + if (modifiers == shift_modifier and _is_printable(key) and not ev.text().isupper()): - modifiers = Qt.KeyboardModifier.NoModifier # type: ignore[assignment] + modifiers = Qt.KeyboardModifier.NoModifier # On macOS, swap Ctrl and Meta back # |