Workaround for QIcon::isNull() return False even though there are no available sizes

This commit is contained in:
Kovid Goyal 2022-07-03 22:40:02 +05:30
parent 2d76098a19
commit d0364c9635
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 3 additions and 3 deletions

View File

@ -79,7 +79,7 @@ def get_icons(zfp, name_or_list_of_names, plugin_name=''):
if plugin_name: if plugin_name:
for name in namelist: for name in namelist:
q = QIcon.ic(f'{plugin_name}/{name}') q = QIcon.ic(f'{plugin_name}/{name}')
if q.isNull(): if q.isNull() or not tuple(q.availableSizes()):
failed.add(name) failed.add(name)
else: else:
ans[name] = q ans[name] = q

View File

@ -167,11 +167,11 @@ class IconResourceManager:
return QIcon(q) return QIcon(q)
icon_name = os.path.splitext(name.replace('\\', '__').replace('/', '__'))[0] icon_name = os.path.splitext(name.replace('\\', '__').replace('/', '__'))[0]
ans = QIcon.fromTheme(icon_name) ans = QIcon.fromTheme(icon_name)
if ans.isNull(): if ans.isNull() and not tuple(ans.availableSizes()):
if 'user-any' in QIcon.themeName(): if 'user-any' in QIcon.themeName():
tc = 'dark' if QApplication.instance().is_dark_theme else 'light' tc = 'dark' if QApplication.instance().is_dark_theme else 'light'
q = QIcon(f':/icons/calibre-default-{tc}/images/{name}') q = QIcon(f':/icons/calibre-default-{tc}/images/{name}')
if not q.isNull(): if not q.isNull() and tuple(q.availableSizes()):
ans = q ans = q
return ans return ans