Preview task-group selections until Meta is released
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include "pendingselection.h"
|
||||
|
||||
PendingSelection::PendingSelection(QAbstractItemModel &model)
|
||||
{
|
||||
connect(&model, &QAbstractItemModel::modelReset, this, &PendingSelection::cancel);
|
||||
connect(&model, &QAbstractItemModel::rowsRemoved, this, [this] {
|
||||
if (!m_task.isValid()) {
|
||||
cancel();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void PendingSelection::select(const QModelIndex &task, bool defer)
|
||||
{
|
||||
m_task = task;
|
||||
if (defer && task.isValid()) {
|
||||
Q_EMIT previewRequested(task);
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
void PendingSelection::finish()
|
||||
{
|
||||
const QPersistentModelIndex task = m_task;
|
||||
cancel();
|
||||
if (task.isValid()) {
|
||||
Q_EMIT activationRequested(task);
|
||||
}
|
||||
}
|
||||
|
||||
void PendingSelection::cancel()
|
||||
{
|
||||
m_task = QPersistentModelIndex();
|
||||
Q_EMIT previewHidden();
|
||||
}
|
||||
Reference in New Issue
Block a user