diff --git a/frame/controller/dockitemcontroller.cpp b/frame/controller/dockitemcontroller.cpp index 73159c62e..85adc37e6 100644 --- a/frame/controller/dockitemcontroller.cpp +++ b/frame/controller/dockitemcontroller.cpp @@ -288,12 +288,12 @@ void DockItemController::appItemRemoved(const QString &appId) continue; AppItem *app = static_cast(m_itemList[i].data()); - if (!app || app->appId() != appId) + if (!app) { continue; - - appItemRemoved(app); - - break; + } + if (!app->isValid() || app->appId() == appId) { + appItemRemoved(app); + } } } diff --git a/frame/item/appitem.cpp b/frame/item/appitem.cpp index 9385a5909..dd820d846 100644 --- a/frame/item/appitem.cpp +++ b/frame/item/appitem.cpp @@ -120,6 +120,11 @@ const QString AppItem::appId() const return m_id; } +const bool AppItem::isValid() const +{ + return m_itemEntryInter->isValid() && !m_itemEntryInter->id().isEmpty(); +} + // Update _NET_WM_ICON_GEOMETRY property for windows that every item // that manages, so that WM can do proper animations for specific // window behaviors like minimization. diff --git a/frame/item/appitem.h b/frame/item/appitem.h index 00cf503b9..28881ea3d 100644 --- a/frame/item/appitem.h +++ b/frame/item/appitem.h @@ -46,6 +46,7 @@ public: ~AppItem(); const QString appId() const; + const bool isValid() const; void updateWindowIconGeometries(); static void setIconBaseSize(const int size); static int iconBaseSize();