Pass keypresses to statusbar correctly

This commit is contained in:
Florian Bruhin 2014-04-24 15:47:38 +02:00
parent b3418cae5d
commit 10d7d887ec
5 changed files with 9 additions and 18 deletions

1
TODO
View File

@ -2,7 +2,6 @@ keyparser foo
============= =============
- Handle keybind to get out of insert mode (e.g. esc) - Handle keybind to get out of insert mode (e.g. esc)
- Pass keypresses to statusbar correctly
- Switch to normal mode if new page loaded - Switch to normal mode if new page loaded
- Add passthrough-keys option to pass through unmapped keys - Add passthrough-keys option to pass through unmapped keys
- Add auto-insert-mode to switch to insert mode if editable element is focused - Add auto-insert-mode to switch to insert mode if editable element is focused

View File

@ -258,7 +258,7 @@ class QuteBrowser(QApplication):
modemanager.manager.entered.connect(status.on_mode_entered) modemanager.manager.entered.connect(status.on_mode_entered)
modemanager.manager.left.connect(status.on_mode_left) modemanager.manager.left.connect(status.on_mode_left)
# FIXME what to do here? # FIXME what to do here?
tabs.keypress.connect(status.keypress) modemanager.manager.key_pressed.connect(status.on_key_pressed)
for obj in [kp["normal"], tabs]: for obj in [kp["normal"], tabs]:
obj.set_cmd_text.connect(cmd.set_cmd_text) obj.set_cmd_text.connect(cmd.set_cmd_text)

View File

@ -68,10 +68,12 @@ class ModeManager(QObject):
arg: Name of the entered mode. arg: Name of the entered mode.
left: Emitted when a mode is left. left: Emitted when a mode is left.
arg: Name of the left mode. arg: Name of the left mode.
key_pressed; A key was pressed.
""" """
entered = pyqtSignal(str) entered = pyqtSignal(str)
left = pyqtSignal(str) left = pyqtSignal(str)
key_pressed = pyqtSignal('QKeyEvent')
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent) super().__init__(parent)
@ -139,6 +141,9 @@ class ModeManager(QObject):
"""Filter all events based on the currently set mode. """Filter all events based on the currently set mode.
Also calls the real keypress handler. Also calls the real keypress handler.
Emit:
key_pressed: When a key was actually pressed.
""" """
typ = evt.type() typ = evt.type()
handler = self._handlers[self.mode] handler = self._handlers[self.mode]
@ -149,12 +154,14 @@ class ModeManager(QObject):
# We're currently in a passthrough mode so we pass everything # We're currently in a passthrough mode so we pass everything
# through.*and* let the passthrough keyhandler know. # through.*and* let the passthrough keyhandler know.
# FIXME what if we leave the passthrough mode right here? # FIXME what if we leave the passthrough mode right here?
self.key_pressed.emit(evt)
if handler is not None: if handler is not None:
handler(evt) handler(evt)
return False return False
elif typ == QEvent.KeyPress: elif typ == QEvent.KeyPress:
# KeyPress in a non-passthrough mode - call handler and filter # KeyPress in a non-passthrough mode - call handler and filter
# event from widgets # event from widgets
self.key_pressed.emit(evt)
if handler is not None: if handler is not None:
handler(evt) handler(evt)
return True return True

View File

@ -158,7 +158,7 @@ class StatusBar(QWidget):
self.txt.errortext = '' self.txt.errortext = ''
@pyqtSlot('QKeyEvent') @pyqtSlot('QKeyEvent')
def keypress(self, e): def on_key_pressed(self, e):
"""Hide temporary error message if a key was pressed. """Hide temporary error message if a key was pressed.
Args: Args:

View File

@ -69,8 +69,6 @@ class TabbedBrowser(TabWidget):
arg 2: y-position in %. arg 2: y-position in %.
hint_strings_updated: Hint strings were updated. hint_strings_updated: Hint strings were updated.
arg: A list of hint strings. arg: A list of hint strings.
keypress: A key was pressed.
arg: The QKeyEvent leading to the keypress.
shutdown_complete: The shuttdown is completed. shutdown_complete: The shuttdown is completed.
quit: The last tab was closed, quit application. quit: The last tab was closed, quit application.
resized: Emitted when the browser window has resized, so the completion resized: Emitted when the browser window has resized, so the completion
@ -87,7 +85,6 @@ class TabbedBrowser(TabWidget):
cur_scroll_perc_changed = pyqtSignal(int, int) cur_scroll_perc_changed = pyqtSignal(int, int)
hint_strings_updated = pyqtSignal(list) hint_strings_updated = pyqtSignal(list)
set_cmd_text = pyqtSignal(str) set_cmd_text = pyqtSignal(str)
keypress = pyqtSignal('QKeyEvent')
shutdown_complete = pyqtSignal() shutdown_complete = pyqtSignal()
quit = pyqtSignal() quit = pyqtSignal()
resized = pyqtSignal('QRect') resized = pyqtSignal('QRect')
@ -356,18 +353,6 @@ class TabbedBrowser(TabWidget):
else: else:
logging.debug('ignoring title change') logging.debug('ignoring title change')
def keyPressEvent(self, e):
"""Extend TabWidget (QWidget)'s keyPressEvent to emit a signal.
Args:
e: The QKeyPressEvent
Emit:
keypress: Always emitted.
"""
self.keypress.emit(e)
super().keyPressEvent(e)
def resizeEvent(self, e): def resizeEvent(self, e):
"""Extend resizeEvent of QWidget to emit a resized signal afterwards. """Extend resizeEvent of QWidget to emit a resized signal afterwards.