Hide prompts correctly
We now make sure to hide prompts everywhere when the prompt mode was left. We also make sure to hide the prompt widget before deleting, as it might be deleted later.
This commit is contained in:
parent
293a388ac6
commit
9cf5d645f0
@ -272,11 +272,6 @@ class PromptContainer(QWidget):
|
|||||||
Args:
|
Args:
|
||||||
question: A Question object or None.
|
question: A Question object or None.
|
||||||
"""
|
"""
|
||||||
item = self._layout.takeAt(0)
|
|
||||||
assert self._layout.count() == 0
|
|
||||||
if item is not None:
|
|
||||||
item.widget().deleteLater()
|
|
||||||
|
|
||||||
if question is None:
|
if question is None:
|
||||||
self._prompt = None
|
self._prompt = None
|
||||||
self.hide()
|
self.hide()
|
||||||
@ -318,13 +313,16 @@ class PromptContainer(QWidget):
|
|||||||
def _on_global_mode_left(self, mode):
|
def _on_global_mode_left(self, mode):
|
||||||
"""Leave prompt/yesno mode in this window if it was left elsewhere.
|
"""Leave prompt/yesno mode in this window if it was left elsewhere.
|
||||||
|
|
||||||
PromptQueue takes care of getting rid of the question if a mode was
|
This ensures no matter where a prompt was answered, we leave the prompt
|
||||||
left, but if that happens in a different window, this window will still
|
mode and dispose of the prompt object in every window.
|
||||||
be stuck in prompt mode. Here we make sure to leave that if it was left
|
|
||||||
anywhere else.
|
|
||||||
"""
|
"""
|
||||||
if mode in [usertypes.KeyMode.prompt, usertypes.KeyMode.yesno]:
|
if mode in [usertypes.KeyMode.prompt, usertypes.KeyMode.yesno]:
|
||||||
modeman.maybe_leave(self._win_id, mode, 'left in other window')
|
modeman.maybe_leave(self._win_id, mode, 'left in other window')
|
||||||
|
item = self._layout.takeAt(0)
|
||||||
|
if item is not None:
|
||||||
|
widget = item.widget()
|
||||||
|
widget.hide()
|
||||||
|
widget.deleteLater()
|
||||||
|
|
||||||
@cmdutils.register(instance='prompt-container', hide=True, scope='window',
|
@cmdutils.register(instance='prompt-container', hide=True, scope='window',
|
||||||
modes=[usertypes.KeyMode.prompt,
|
modes=[usertypes.KeyMode.prompt,
|
||||||
|
Loading…
Reference in New Issue
Block a user