Fix MarkKeyParser crash when changing keyconfig.

Ensure MarkKeyParser implements on_keyconfig_changed, so it doesn't fail when
rebinding a key. It doesn't have keybindings, so the implementation is just
`pass`.

This also fixes a few flake8 style errors.
This commit is contained in:
Ryan Roden-Corrent 2016-04-15 17:20:37 -04:00
parent be6308534f
commit 4b00a17d71
3 changed files with 18 additions and 8 deletions

View File

@ -236,8 +236,8 @@ class MarkKeyParser(keyparser.BaseKeyParser):
"""KeyParser for set_mark and jump_mark mode.
Attributes:
_mode: Either KeyMode.set_mark or KeyMode.jump_mark.
Attributes:
_mode: Either KeyMode.set_mark or KeyMode.jump_mark.
"""
def __init__(self, win_id, mode, parent=None):
@ -254,7 +254,6 @@ class MarkKeyParser(keyparser.BaseKeyParser):
Return:
True if event has been handled, False otherwise.
"""
if utils.keyevent_to_string(e) is None:
# this is a modifier key, let it pass and keep going
return True
@ -279,3 +278,11 @@ class MarkKeyParser(keyparser.BaseKeyParser):
self.request_leave.emit(self._mode, "valid mark key")
return True
def on_keyconfig_changed(self, mode):
"""MarkKeyParser has no config section (no bindable keys)."""
pass
def execute(self, cmdstr, _keytype, count=None):
"""Should never be called on MarkKeyParser."""
raise NotImplementedError

View File

@ -23,15 +23,15 @@ import functools
import collections
from PyQt5.QtWidgets import QSizePolicy
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QTimer, QUrl, QPoint
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QTimer, QUrl
from PyQt5.QtGui import QIcon
from qutebrowser.config import config
from qutebrowser.keyinput import modeman
from qutebrowser.mainwindow import tabwidget
from qutebrowser.browser import signalfilter, webview
from qutebrowser.utils import (log, usertypes, utils, qtutils, objreg, urlutils,
message)
from qutebrowser.utils import (log, usertypes, utils, qtutils, objreg,
urlutils, message)
UndoEntry = collections.namedtuple('UndoEntry', ['url', 'history'])

View File

@ -22,14 +22,17 @@ import pytest
from qutebrowser.keyinput import modeman as modeman_module
from qutebrowser.utils import usertypes
from PyQt5.QtCore import Qt
from PyQt5.QtCore import Qt, QObject, pyqtSignal
class FakeKeyparser:
class FakeKeyparser(QObject):
"""A fake BaseKeyParser which doesn't handle anything."""
request_leave = pyqtSignal(usertypes.KeyMode, str)
def __init__(self):
super().__init__()
self.passthrough = False
def handle(self, evt):