diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 97f631df9..2267f9e41 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -1619,6 +1619,8 @@ class CommandDispatcher: ed = editor.ExternalEditor(watch=True, parent=self._tabbed_browser) ed.file_updated.connect(functools.partial( self.on_file_updated, elem)) + ed.editing_finished.connect(lambda: mainwindow.raise_window( + objreg.last_focused_window(), alert=False)) ed.edit(text, caret_position) @cmdutils.register(instance='command-dispatcher', scope='window') @@ -1647,8 +1649,6 @@ class CommandDispatcher: except webelem.Error as e: raise cmdexc.CommandError(str(e)) - mainwindow.raise_window(objreg.last_focused_window(), alert=False) - @cmdutils.register(instance='command-dispatcher', maxsplit=0, scope='window') def insert_text(self, text): diff --git a/qutebrowser/misc/editor.py b/qutebrowser/misc/editor.py index c562a1d67..4fd6ab3b6 100644 --- a/qutebrowser/misc/editor.py +++ b/qutebrowser/misc/editor.py @@ -42,9 +42,15 @@ class ExternalEditor(QObject): _proc: The GUIProcess of the editor. _watcher: A QFileSystemWatcher to watch the edited file for changes. Only set if watch=True. + + Signals: + file_updated: The text in the edited file was updated. + arg: The new text. + editing_finished: The editor process was closed. """ file_updated = pyqtSignal(str) + editing_finished = pyqtSignal() def __init__(self, parent=None, watch=False): super().__init__(parent) @@ -84,6 +90,7 @@ class ExternalEditor(QObject): return # do a final read to make sure we don't miss the last signal self._on_file_changed(self._filename) + self.editing_finished.emit() self._cleanup() @pyqtSlot(QProcess.ProcessError)