Fix prompts while in command mode
This commit is contained in:
parent
dd0ce8fe3b
commit
a16d41333b
@ -201,16 +201,20 @@ class PromptQueue(QObject):
|
|||||||
|
|
||||||
@pyqtSlot(usertypes.KeyMode)
|
@pyqtSlot(usertypes.KeyMode)
|
||||||
def _on_mode_left(self, mode):
|
def _on_mode_left(self, mode):
|
||||||
"""Abort question when a mode was left."""
|
"""Abort question when a prompt mode was left."""
|
||||||
if self._question is not None:
|
if mode not in [usertypes.KeyMode.prompt, usertypes.KeyMode.yesno]:
|
||||||
log.prompt.debug("Left mode {}, hiding {}".format(
|
return
|
||||||
mode, self._question))
|
if self._question is None:
|
||||||
self.show_prompts.emit(None)
|
return
|
||||||
if self._question.answer is None and not self._question.is_aborted:
|
|
||||||
log.prompt.debug("Cancelling {} because {} was left".format(
|
log.prompt.debug("Left mode {}, hiding {}".format(
|
||||||
self._question, mode))
|
mode, self._question))
|
||||||
self._question.cancel()
|
self.show_prompts.emit(None)
|
||||||
self._question = None
|
if self._question.answer is None and not self._question.is_aborted:
|
||||||
|
log.prompt.debug("Cancelling {} because {} was left".format(
|
||||||
|
self._question, mode))
|
||||||
|
self._question.cancel()
|
||||||
|
self._question = None
|
||||||
|
|
||||||
|
|
||||||
class PromptContainer(QWidget):
|
class PromptContainer(QWidget):
|
||||||
@ -332,14 +336,15 @@ class PromptContainer(QWidget):
|
|||||||
This ensures no matter where a prompt was answered, we leave the prompt
|
This ensures no matter where a prompt was answered, we leave the prompt
|
||||||
mode and dispose of the prompt object in every window.
|
mode and dispose of the prompt object in every window.
|
||||||
"""
|
"""
|
||||||
if mode in [usertypes.KeyMode.prompt, usertypes.KeyMode.yesno]:
|
if mode not in [usertypes.KeyMode.prompt, usertypes.KeyMode.yesno]:
|
||||||
modeman.maybe_leave(self._win_id, mode, 'left in other window')
|
return
|
||||||
item = self._layout.takeAt(0)
|
modeman.maybe_leave(self._win_id, mode, 'left in other window')
|
||||||
if item is not None:
|
item = self._layout.takeAt(0)
|
||||||
widget = item.widget()
|
if item is not None:
|
||||||
log.prompt.debug("Deleting prompt {}".format(widget))
|
widget = item.widget()
|
||||||
widget.hide()
|
log.prompt.debug("Deleting prompt {}".format(widget))
|
||||||
widget.deleteLater()
|
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,
|
||||||
|
@ -419,3 +419,11 @@ Feature: Prompts
|
|||||||
And I run :prompt-item-focus next
|
And I run :prompt-item-focus next
|
||||||
And I run :prompt-accept test-prompt-item-focus
|
And I run :prompt-accept test-prompt-item-focus
|
||||||
Then "Added quickmark test-prompt-item-focus for *" should be logged
|
Then "Added quickmark test-prompt-item-focus for *" should be logged
|
||||||
|
|
||||||
|
Scenario: Getting question in command mode
|
||||||
|
When I open data/hello.txt
|
||||||
|
And I run :later 500 quickmark-save
|
||||||
|
And I run :set-cmd-text :
|
||||||
|
And I wait for a prompt
|
||||||
|
And I run :prompt-accept prompt-in-command-mode
|
||||||
|
Then "Added quickmark prompt-in-command-mode for *" should be logged
|
||||||
|
Loading…
Reference in New Issue
Block a user