From 93bec9e28bdb89e4dfef9e7454ff68e1444a769b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 15 Sep 2023 14:15:51 +0530 Subject: [PATCH] Handle plugin icon overrides in sub-folders --- src/calibre/gui2/__init__.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 63205e0ab6..e02a7058ed 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -171,18 +171,19 @@ class IconResourceManager: sq = f'{sq}-for-{self.color_palette}-theme{ext}' if sq in self.override_items['']: ans = os.path.join(self.override_icon_path, sq) - elif len(parts) == 2: - entries = self.override_items.get(parts[0], ()) - if not entries and self.override_icon_path and parts[0] not in self.override_items: + else: + subfolder = '/'.join(parts[:-1]) + entries = self.override_items.get(subfolder, ()) + if not entries and self.override_icon_path and subfolder not in self.override_items: try: - self.override_items[parts[0]] = entries = frozenset(os.listdir(os.path.join(self.override_icon_path, parts[0]))) + self.override_items[subfolder] = entries = frozenset(os.listdir(os.path.join(self.override_icon_path, subfolder))) except OSError: - self.override_items[parts[0]] = entries = frozenset() + self.override_items[subfolder] = entries = frozenset() if entries: - sq, ext = os.path.splitext(parts[1]) + sq, ext = os.path.splitext(parts[-1]) sq = f'{sq}-for-{self.color_palette}-theme{ext}' if sq in entries: - ans = os.path.join(self.override_icon_path, parts[0], sq) + ans = os.path.join(self.override_icon_path, subfolder, sq) return ans def __call__(self, name):