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)
- Pass keypresses to statusbar correctly
- Switch to normal mode if new page loaded
- Add passthrough-keys option to pass through unmapped keys
- 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.left.connect(status.on_mode_left)
# 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]:
obj.set_cmd_text.connect(cmd.set_cmd_text)

View File

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

View File

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

View File

@ -69,8 +69,6 @@ class TabbedBrowser(TabWidget):
arg 2: y-position in %.
hint_strings_updated: Hint strings were updated.
arg: A list of hint strings.
keypress: A key was pressed.
arg: The QKeyEvent leading to the keypress.
shutdown_complete: The shuttdown is completed.
quit: The last tab was closed, quit application.
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)
hint_strings_updated = pyqtSignal(list)
set_cmd_text = pyqtSignal(str)
keypress = pyqtSignal('QKeyEvent')
shutdown_complete = pyqtSignal()
quit = pyqtSignal()
resized = pyqtSignal('QRect')
@ -356,18 +353,6 @@ class TabbedBrowser(TabWidget):
else:
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):
"""Extend resizeEvent of QWidget to emit a resized signal afterwards.