summaryrefslogtreecommitdiff
path: root/qutebrowser/keyinput/modeman.py
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2017-09-19 22:18:02 +0200
committerFlorian Bruhin <git@the-compiler.org>2017-09-19 22:21:45 +0200
commit3a5241b642da666e4517a32e0eb945254d86a6da (patch)
tree6bd07ffd2378ea6dd7013afd61408449f6b11f5c /qutebrowser/keyinput/modeman.py
parent72267503634e7c042d52a1c518acc455090538b4 (diff)
downloadqutebrowser-3a5241b642da666e4517a32e0eb945254d86a6da.tar.gz
qutebrowser-3a5241b642da666e4517a32e0eb945254d86a6da.zip
Start using attrs
Closes #1073
Diffstat (limited to 'qutebrowser/keyinput/modeman.py')
-rw-r--r--qutebrowser/keyinput/modeman.py23
1 files changed, 10 insertions, 13 deletions
diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py
index 504ccc916..6a6dd5459 100644
--- a/qutebrowser/keyinput/modeman.py
+++ b/qutebrowser/keyinput/modeman.py
@@ -21,6 +21,7 @@
import functools
+import attr
from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QObject, QEvent
from PyQt5.QtWidgets import QApplication
@@ -31,6 +32,7 @@ from qutebrowser.utils import usertypes, log, objreg, utils
from qutebrowser.misc import objects
+@attr.s(frozen=True)
class KeyEvent:
"""A small wrapper over a QKeyEvent storing its data.
@@ -44,18 +46,13 @@ class KeyEvent:
text: A string (QKeyEvent::text).
"""
- def __init__(self, keyevent):
- self.key = keyevent.key()
- self.text = keyevent.text()
+ key = attr.ib()
+ text = attr.ib()
- def __repr__(self):
- return utils.get_repr(self, key=self.key, text=self.text)
-
- def __eq__(self, other):
- return self.key == other.key and self.text == other.text
-
- def __hash__(self):
- return hash((self.key, self.text))
+ @classmethod
+ def from_event(cls, event):
+ """Initialize a KeyEvent from a QKeyEvent."""
+ return cls(event.key(), event.text())
class NotInModeError(Exception):
@@ -179,7 +176,7 @@ class ModeManager(QObject):
filter_this = True
if not filter_this:
- self._releaseevents_to_pass.add(KeyEvent(event))
+ self._releaseevents_to_pass.add(KeyEvent.from_event(event))
if curmode != usertypes.KeyMode.insert:
focus_widget = QApplication.instance().focusWidget()
@@ -201,7 +198,7 @@ class ModeManager(QObject):
True if event should be filtered, False otherwise.
"""
# handle like matching KeyPress
- keyevent = KeyEvent(event)
+ keyevent = KeyEvent.from_event(event)
if keyevent in self._releaseevents_to_pass:
self._releaseevents_to_pass.remove(keyevent)
filter_this = False