Pass keypresses to statusbar correctly
This commit is contained in:
parent
b3418cae5d
commit
10d7d887ec
1
TODO
1
TODO
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user