diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 4d9cbfdb9..193673f6b 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -36,6 +36,7 @@ Fixed - Worked around a segfault with Qt 5.8 when closing a tab with a search active - Fixed various mouse actions (like automatically entering insert mode) not working with Qt 5.8 - Fixed hints sometimes not working with Qt 5.8 +- `:enter-mode` now refuses to enter modes which can't be entered manually (which caused crashes). v0.9.1 ------ diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py index d86b4996f..eb4baf7f5 100644 --- a/qutebrowser/keyinput/modeman.py +++ b/qutebrowser/keyinput/modeman.py @@ -265,6 +265,10 @@ class ModeManager(QObject): m = usertypes.KeyMode[mode] except KeyError: raise cmdexc.CommandError("Mode {} does not exist!".format(mode)) + if m in [usertypes.KeyMode.hint, usertypes.KeyMode.command, + usertypes.KeyMode.yesno, usertypes.KeyMode.prompt]: + raise cmdexc.CommandError( + "Mode {} can't be entered manually!".format(mode)) self.enter(m, 'command') @pyqtSlot(usertypes.KeyMode, str, bool) diff --git a/tests/end2end/features/misc.feature b/tests/end2end/features/misc.feature index 73956931a..c561e0d33 100644 --- a/tests/end2end/features/misc.feature +++ b/tests/end2end/features/misc.feature @@ -635,3 +635,9 @@ Feature: Various utility commands. And I run :command-accept And I set general -> private-browsing to false Then the message "blah" should be shown + + ## Modes blacklisted for :enter-mode + + Scenario: Trying to enter command mode with :enter-mode + When I run :enter-mode command + Then the error "Mode command can't be entered manually!" should be shown