Fix statusbar text when entering insert mode via hints.
Before, hints cleaned the statusbar text delayed, clearing the "==== INSERT MODE ====" in the statusbar. Now we only reset the text if it wasn't changed.
This commit is contained in:
parent
3e904f4c52
commit
71796e9528
@ -392,6 +392,8 @@ class Application(QApplication):
|
||||
self.messagebridge.s_error.connect(status.disp_error)
|
||||
self.messagebridge.s_info.connect(status.disp_temp_text)
|
||||
self.messagebridge.s_set_text.connect(status.set_text)
|
||||
self.messagebridge.s_maybe_reset_text.connect(
|
||||
status.txt.maybe_reset_text)
|
||||
self.messagebridge.s_set_cmd_text.connect(cmd.set_cmd_text)
|
||||
self.messagebridge.s_question.connect(
|
||||
status.prompt.prompter.ask_question, Qt.DirectConnection)
|
||||
|
@ -157,8 +157,9 @@ class HintManager(QObject):
|
||||
for elem in self._context.elems.values():
|
||||
if not elem.label.isNull():
|
||||
elem.label.removeFromDocument()
|
||||
text = self.HINT_TEXTS[self._context.target]
|
||||
message.instance().maybe_reset_text(text)
|
||||
self._context = None
|
||||
message.instance().set_text('')
|
||||
|
||||
def _hint_strings(self, elems):
|
||||
"""Calculate the hint strings for elems.
|
||||
|
@ -136,6 +136,8 @@ class MessageBridge(QObject):
|
||||
args: See s_error.
|
||||
s_set_text: Set a persistent text in the statusbar.
|
||||
arg: The text to set.
|
||||
s_maybe_reset_text: Reset the text if it hasn't been changed yet.
|
||||
arg: The expected text.
|
||||
s_set_cmd_text: Pre-set a text for the commandline prompt.
|
||||
arg: The text to set.
|
||||
|
||||
@ -150,6 +152,7 @@ class MessageBridge(QObject):
|
||||
s_error = pyqtSignal(str, bool)
|
||||
s_info = pyqtSignal(str, bool)
|
||||
s_set_text = pyqtSignal(str)
|
||||
s_maybe_reset_text = pyqtSignal(str)
|
||||
s_set_cmd_text = pyqtSignal(str)
|
||||
s_question = pyqtSignal(usertypes.Question, bool)
|
||||
|
||||
@ -215,6 +218,14 @@ class MessageBridge(QObject):
|
||||
log.misc.debug(text)
|
||||
self._emit_later(self.s_set_text, text)
|
||||
|
||||
def maybe_reset_text(self, text):
|
||||
"""Reset the text in the statusbar if it matches an expected text.
|
||||
|
||||
Args:
|
||||
text: The expected text.
|
||||
"""
|
||||
self._emit_later(self.s_maybe_reset_text, str(text))
|
||||
|
||||
def ask(self, question, blocking):
|
||||
"""Ask a question to the user.
|
||||
|
||||
|
@ -23,7 +23,7 @@ from PyQt5.QtCore import pyqtSlot
|
||||
|
||||
from qutebrowser.config import config
|
||||
from qutebrowser.widgets.statusbar import textbase
|
||||
from qutebrowser.utils import usertypes
|
||||
from qutebrowser.utils import usertypes, log
|
||||
|
||||
|
||||
class Text(textbase.TextBase):
|
||||
@ -54,6 +54,8 @@ class Text(textbase.TextBase):
|
||||
which: Which text to set, a self.Text instance.
|
||||
text: The text to set.
|
||||
"""
|
||||
log.statusbar.debug("Setting {} text to '{}'.".format(
|
||||
which.name, text))
|
||||
if which is self.Text.normal:
|
||||
self._normaltext = text
|
||||
elif which is self.Text.temp:
|
||||
@ -64,6 +66,15 @@ class Text(textbase.TextBase):
|
||||
raise ValueError("Invalid value {} for which!".format(which))
|
||||
self._update_text()
|
||||
|
||||
@pyqtSlot(str)
|
||||
def maybe_reset_text(self, text):
|
||||
"""Clear a normal text if it still matches an expected text."""
|
||||
if self._normaltext == text:
|
||||
log.misc.debug("Resetting: '{}'".format(text))
|
||||
self.set_text(self.Text.normal, '')
|
||||
else:
|
||||
log.misc.debug("Ignoring reset: '{}'".format(text))
|
||||
|
||||
def _update_text(self):
|
||||
"""Update QLabel text when needed."""
|
||||
if self._temptext:
|
||||
|
Loading…
Reference in New Issue
Block a user