Improve By Desktop sorting for task groups

Summary:
TaskGroupingProxyModel used to return QVariant() as the
AbstractTasksModel::VirtualDesktop role for task groups,
resulting in TasksModel to sort task groups indiscrimi-
nately at the front of the list. In this patch, it instead
returns the lowest virtual desktop found among the children.

BUG:384747

Reviewers: #plasma

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D11257
wilder-5.14
Eike Hein 8 years ago
parent 1384cc92ce
commit a9df1e20f5
  1. 19
      libtaskmanager/taskgroupingproxymodel.cpp

@ -722,12 +722,23 @@ QVariant TaskGroupingProxyModel::data(const QModelIndex &proxyIndex, int role) c
} else if (role == AbstractTasksModel::IsVirtualDesktopChangeable) {
return d->all(proxyIndex, AbstractTasksModel::IsVirtualDesktopChangeable);
} else if (role == AbstractTasksModel::VirtualDesktop) {
// TODO: Nothing needs this for now and it would add complexity to
// make it a list; skip it until needed.
return QVariant();
// Returns the lowest virtual desktop id among all children of the
// group.
int virtualDesktop = INT_MAX;
for (int i = 0; i < rowCount(proxyIndex); ++i) {
const int childVirtualDesktop = proxyIndex.child(i, 0).data(AbstractTasksModel::VirtualDesktop).toInt();
if (childVirtualDesktop < virtualDesktop) {
virtualDesktop = childVirtualDesktop;
}
}
return virtualDesktop;
} else if (role == AbstractTasksModel::ScreenGeometry) {
// TODO: Nothing needs this for now and it would add complexity to
// make it a list; skip it until needed.
// make it a list; skip it until needed. Once it is, do it similarly
// to the AbstractTasksModel::VirtualDesktop case.
return QVariant();
} else if (role == AbstractTasksModel::Activities) {
QStringList activities;

Loading…
Cancel
Save