diff --git a/frame/controller/dockitemcontroller.cpp b/frame/controller/dockitemcontroller.cpp index 0bc147e29..9953233a8 100644 --- a/frame/controller/dockitemcontroller.cpp +++ b/frame/controller/dockitemcontroller.cpp @@ -43,20 +43,24 @@ DockItemController::DockItemController(QObject *parent) connect(m_pluginsInter, &DockPluginsController::pluginsInserted, this, &DockItemController::pluginsItemAdded); } -void DockItemController::appItemAdded(const QDBusObjectPath &path) +void DockItemController::appItemAdded(const QDBusObjectPath &path, const int index) { - for (int i(0); i != m_itemList.size(); ++i) + // the first index is launcher item + int insertIndex = 1; + + // -1 for append to app list end + if (index != -1) { - if (m_itemList[i]->itemType() != DockItem::Placeholder) - continue; - - // insert to placeholder position - AppItem *item = new AppItem(path); - m_itemList.insert(i, item); - emit itemInserted(i, item); - - break; + insertIndex += index; + } else { + for (auto item : m_itemList) + if (item->itemType() == DockItem::App) + ++insertIndex; } + + AppItem *item = new AppItem(path); + m_itemList.insert(insertIndex, item); + emit itemInserted(insertIndex, item); } void DockItemController::appItemRemoved(const QString &appId) diff --git a/frame/controller/dockitemcontroller.h b/frame/controller/dockitemcontroller.h index 882fc91ea..31021aeb7 100644 --- a/frame/controller/dockitemcontroller.h +++ b/frame/controller/dockitemcontroller.h @@ -24,7 +24,7 @@ signals: private: explicit DockItemController(QObject *parent = 0); - void appItemAdded(const QDBusObjectPath &path); + void appItemAdded(const QDBusObjectPath &path, const int index); void appItemRemoved(const QString &appId); void pluginsItemAdded(PluginsItemInterface *interface); diff --git a/frame/dbus/dbusdock.h b/frame/dbus/dbusdock.h index e147692f5..32bbb1607 100644 --- a/frame/dbus/dbusdock.h +++ b/frame/dbus/dbusdock.h @@ -121,7 +121,7 @@ public Q_SLOTS: // METHODS } Q_SIGNALS: // SIGNALS - void EntryAdded(const QDBusObjectPath &entryPath); + void EntryAdded(const QDBusObjectPath &entryPath, const int index); void EntryRemoved(const QString &entryId); void ServiceRestarted(); // begin property changed signals diff --git a/frame/item/appitem.cpp b/frame/item/appitem.cpp index 25b0234b5..2c9772e72 100644 --- a/frame/item/appitem.cpp +++ b/frame/item/appitem.cpp @@ -6,10 +6,6 @@ #include #include -#define APP_ICON_KEY "icon" -#define APP_MENU_KEY "menu" -#define APP_XIDS_KEY "app-xids" - #define APP_DRAG_THRESHOLD 20 QPoint AppItem::MousePressPos; @@ -41,7 +37,7 @@ void AppItem::paintEvent(QPaintEvent *e) { DockItem::paintEvent(e); - if (m_draging) + if (m_draging || !m_itemEntry->isValid()) return; const QRect itemRect = rect(); diff --git a/frame/item/dockitem.cpp b/frame/item/dockitem.cpp index 19d136b1b..6c5a11bd6 100644 --- a/frame/item/dockitem.cpp +++ b/frame/item/dockitem.cpp @@ -8,7 +8,7 @@ DockItem::DockItem(const ItemType type, QWidget *parent) : QWidget(parent), -// m_side(DockSettings::Top), + m_side(DockSide::Top), m_type(type), m_menuManagerInter(new DBusMenuManager(this))