From caedb57e56342ebe1c02a6e402fb83021b96998f Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 11 Aug 2015 17:07:47 +0200 Subject: [PATCH] Fix staticMetaObject handling in qenum_key. Since we checked on klass instead of base, there never was a staticMetaObject and the slower path was always taken - this corrects that. --- qutebrowser/utils/debug.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/qutebrowser/utils/debug.py b/qutebrowser/utils/debug.py index e2fde62d9..97fdbb8c1 100644 --- a/qutebrowser/utils/debug.py +++ b/qutebrowser/utils/debug.py @@ -106,19 +106,21 @@ def qenum_key(base, value, add_base=False, klass=None): klass = value.__class__ if klass == int: raise TypeError("Can't guess enum class of an int!") + try: - idx = klass.staticMetaObject.indexOfEnumerator(klass.__name__) + idx = base.staticMetaObject.indexOfEnumerator(klass.__name__) + ret = base.staticMetaObject.enumerator(idx).valueToKey(value) except AttributeError: - idx = -1 - if idx != -1: - ret = klass.staticMetaObject.enumerator(idx).valueToKey(value) - else: + ret = None + + if ret is None: for name, obj in vars(base).items(): if isinstance(obj, klass) and obj == value: ret = name break else: ret = '0x{:04x}'.format(int(value)) + if add_base and hasattr(base, '__name__'): return '.'.join([base.__name__, ret]) else: