diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index e556c6d4f..21ef5c0c4 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -672,17 +672,22 @@ class HintManager(QObject): """Handle a new partial keypress.""" log.hints.debug("Handling new keystring: '{}'".format(keystr)) for (string, elems) in self._context.elems.items(): - if string.startswith(keystr): - matched = string[:len(keystr)] - rest = string[len(keystr):] - elems.label.setInnerXml('{}{}'.format( - config.get('colors', 'hints.fg.match'), matched, rest)) - if self._is_hidden(elems.label): - # hidden element which matches again -> unhide it - elems.label.setStyleProperty('display', 'inline') - else: - # element doesn't match anymore -> hide it - elems.label.setStyleProperty('display', 'none') + try: + if string.startswith(keystr): + matched = string[:len(keystr)] + rest = string[len(keystr):] + match_color = config.get('colors', 'hints.fg.match') + elems.label.setInnerXml( + '{}{}'.format( + match_color, matched, rest)) + if self._is_hidden(elems.label): + # hidden element which matches again -> unhide it + elems.label.setStyleProperty('display', 'inline') + else: + # element doesn't match anymore -> hide it + elems.label.setStyleProperty('display', 'none') + except webelem.IsNullError: + pass def filter_hints(self, filterstr): """Filter displayed hints according to a text. @@ -691,14 +696,17 @@ class HintManager(QObject): filterstr: The string to filer with, or None to show all. """ for elems in self._context.elems.values(): - if (filterstr is None or - str(elems.elem).lower().startswith(filterstr)): - if self._is_hidden(elems.label): - # hidden element which matches again -> unhide it + try: + if (filterstr is None or + str(elems.elem).lower().startswith(filterstr)): + if self._is_hidden(elems.label): + # hidden element which matches again -> unhide it + elems.label.setStyleProperty('display', 'none') + else: + # element doesn't match anymore -> hide it elems.label.setStyleProperty('display', 'none') - else: - # element doesn't match anymore -> hide it - elems.label.setStyleProperty('display', 'none') + except webelem.IsNullError: + pass visible = {} for k, e in self._context.elems.items(): if not self._is_hidden(e.label): @@ -779,11 +787,14 @@ class HintManager(QObject): """Reposition hints if contents size changed.""" log.hints.debug("Contents size changed...!") for elems in self._context.elems.values(): - if elems.elem.webFrame() is None: - # This sometimes happens for some reason... - elems.label.removeFromDocument() - continue - self._set_style_position(elems.elem, elems.label) + try: + if elems.elem.webFrame() is None: + # This sometimes happens for some reason... + elems.label.removeFromDocument() + continue + self._set_style_position(elems.elem, elems.label) + except webelem.IsNullError: + pass @pyqtSlot(usertypes.KeyMode) def on_mode_left(self, mode):