From c66f30f6ddb3420e3c2fb62e404c684d6231d264 Mon Sep 17 00:00:00 2001 From: Eike Hein Date: Thu, 28 May 2015 20:11:31 +0200 Subject: [PATCH 5/5] Fix launcher sorting the by-activity sorting strategy. BUG:348324 --- .../strategies/activitysortingstrategy.cpp | 30 ++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/libtaskmanager/strategies/activitysortingstrategy.cpp b/libtaskmanager/strategies/activitysortingstrategy.cpp index 29207329b91a859219c7ce26c875d0ca0ab32efd..cfe916c7624a537da993b1f46eb41009c2d29092 100644 --- a/libtaskmanager/strategies/activitysortingstrategy.cpp +++ b/libtaskmanager/strategies/activitysortingstrategy.cpp @@ -33,11 +33,36 @@ ActivitySortingStrategy::ActivitySortingStrategy(QObject *parent) class ActivitySortingStrategy::Comparator { public: - Comparator(QStringList *activitiesOrder) { + Comparator(QStringList *activitiesOrder, GroupManager *groupManager) { m_activitiesOrder = activitiesOrder; + m_groupManager = groupManager; } bool operator()(const AbstractGroupableItem *i1, const AbstractGroupableItem *i2) { + if (m_groupManager && m_groupManager->separateLaunchers()) { + if (i1->isStartupItem()) { + if (i2->isStartupItem()) { + return i1->name().toLower() < i2->name().toLower(); + } + return false; + } + + if (i2->isStartupItem()) { + return true; + } + + if (i1->itemType() == LauncherItemType) { + if (i2->itemType() == LauncherItemType) { + return i1->name().toLower() < i2->name().toLower(); + } + return true; + } + + if (i2->itemType() == LauncherItemType) { + return false; + } + } + if (!m_priorityCache.contains(i1->id())) { addToCache(i1); } @@ -97,6 +122,7 @@ private: m_priorityCache[item->id()] = cacheEntry; } + GroupManager *m_groupManager; const QStringList *m_activitiesOrder; QHash > m_priorityCache; }; @@ -111,7 +137,7 @@ void ActivitySortingStrategy::sortItems(ItemList& items) checkActivitiesOrder(items); } - Comparator comparator(&m_activitiesOrder); + Comparator comparator(&m_activitiesOrder, qobject_cast(parent())); qStableSort(items.begin(), items.end(), comparator); } -- 2.4.1