diff --git a/src/shell/launcher/launcher_panel.cpp b/src/shell/launcher/launcher_panel.cpp index c14d7d798..abc3f5f43 100644 --- a/src/shell/launcher/launcher_panel.cpp +++ b/src/shell/launcher/launcher_panel.cpp @@ -364,6 +364,8 @@ void LauncherPanel::onOpen(std::string_view context) { if (m_grid != nullptr) { m_grid->scrollView().setScrollOffset(0.0f); } + // Clear cached icon misses before each open so newly installed app icons appear. + m_iconResolver.invalidateCache(); onInputChanged(initialValue); } diff --git a/src/system/icon_resolver.cpp b/src/system/icon_resolver.cpp index d51c0329e..5113e6b93 100644 --- a/src/system/icon_resolver.cpp +++ b/src/system/icon_resolver.cpp @@ -392,6 +392,8 @@ namespace { IconResolver::IconResolver() { rebuild(); } +void IconResolver::invalidateCache() { rebuild(); } + bool IconResolver::checkThemeChanged() { auto& state = iconThemeState(); IconThemePlan next = buildThemePlan(); diff --git a/src/system/icon_resolver.h b/src/system/icon_resolver.h index 8de33d9cd..2e49116c6 100644 --- a/src/system/icon_resolver.h +++ b/src/system/icon_resolver.h @@ -10,6 +10,7 @@ public: IconResolver(); const std::string& resolve(const std::string& iconName); + void invalidateCache(); static bool checkThemeChanged(); static std::uint64_t themeGeneration();