diff --git a/applets/kicker/plugin/appentry.h b/applets/kicker/plugin/appentry.h --- a/applets/kicker/plugin/appentry.h +++ b/applets/kicker/plugin/appentry.h @@ -67,7 +67,7 @@ QString m_id; QString m_name; QString m_description; - QIcon m_icon; + mutable QIcon m_icon; KService::Ptr m_service; static MenuEntryEditor *m_menuEntryEditor; }; @@ -85,8 +85,8 @@ AbstractModel *childModel() const; private: - QString m_name; - QIcon m_icon; + KServiceGroup::Ptr m_group; + mutable QIcon m_icon; QPointer m_childModel; }; diff --git a/applets/kicker/plugin/appentry.cpp b/applets/kicker/plugin/appentry.cpp --- a/applets/kicker/plugin/appentry.cpp +++ b/applets/kicker/plugin/appentry.cpp @@ -87,8 +87,6 @@ m_description = nameFromService(m_service, GenericNameOnly); } - m_icon = QIcon::fromTheme(m_service->icon(), QIcon::fromTheme("unknown")); - if (!m_menuEntryEditor) { m_menuEntryEditor = new MenuEntryEditor(); } @@ -101,6 +99,9 @@ QIcon AppEntry::icon() const { + if (m_icon.isNull()) { + m_icon = QIcon::fromTheme(m_service->icon(), QIcon::fromTheme("unknown")); + } return m_icon; } @@ -291,10 +292,9 @@ } AppGroupEntry::AppGroupEntry(AppsModel *parentModel, KServiceGroup::Ptr group, - bool flat, bool separators, int appNameFormat) : AbstractGroupEntry(parentModel) + bool flat, bool separators, int appNameFormat) : AbstractGroupEntry(parentModel), + m_group(group) { - m_name = group->caption(); - m_icon = QIcon::fromTheme(group->icon(), QIcon::fromTheme("unknown")); AppsModel* model = new AppsModel(group->entryPath(), flat, separators, parentModel); model->setAppNameFormat(appNameFormat); m_childModel = model; @@ -312,12 +312,15 @@ QIcon AppGroupEntry::icon() const { + if (m_icon.isNull()) { + m_icon = QIcon::fromTheme(m_group->icon(), QIcon::fromTheme("unknown")); + } return m_icon; } QString AppGroupEntry::name() const { - return m_name; + return m_group->caption(); } bool AppGroupEntry::hasChildren() const