Handle backspace correctly in HintKeyParser

This commit is contained in:
Florian Bruhin 2014-05-06 17:04:34 +02:00
parent 0f8926ca99
commit db20cf3701

View File

@ -96,15 +96,26 @@ class HintKeyParser(CommandKeyParser):
Emit: Emit:
filter_hints: Emitted when filter string has changed. filter_hints: Emitted when filter string has changed.
keystring_updated: Emitted when keystring has been changed.
""" """
logging.debug("Got special key {} text {}".format(e.key(), e.text())) logging.debug("Got special key {} text {}".format(e.key(), e.text()))
if config.get('hints', 'mode') != 'number': if e.key() == Qt.Key_Backspace:
return super()._handle_special_key(e) logging.debug("Got backspace, mode {}, filtertext \"{}\", "
elif e.key() == Qt.Key_Backspace: "keystring \"{}\"".format(
if self._filtertext: LastPress[self._last_press], self._filtertext,
self._keystring))
if self._last_press == LastPress.filtertext and self._filtertext:
self._filtertext = self._filtertext[:-1] self._filtertext = self._filtertext[:-1]
self.filter_hints.emit(self._filtertext) self.filter_hints.emit(self._filtertext)
return True return True
elif self._last_press == LastPress.keystring and self._keystring:
self._keystring = self._keystring[:-1]
self.keystring_updated.emit(self._keystring)
return True
else:
return super()._handle_special_key(e)
elif config.get('hints', 'mode') != 'number':
return super()._handle_special_key(e)
elif not e.text(): elif not e.text():
return super()._handle_special_key(e) return super()._handle_special_key(e)
else: else: