fix: 修复任务栏中拖拽图标到桌面区域图标消失的问题

在拖拽图标结束后,自动调用TrayView的onUpdateEditorView方法来重新生成图标

Log:
Influence: 将托盘图标从任务栏快速向上拖动,观察任务栏托盘的图标是否还存在
Bug: https://pms.uniontech.com/bug-view-171539.html
Change-Id: Ib2dc99742349f06ee27726073916464e7a5769b2
This commit is contained in:
donghualin 2022-11-17 06:41:20 +00:00
parent 47f8581788
commit 1236ae5b87
3 changed files with 11 additions and 8 deletions

View File

@ -149,7 +149,7 @@ void TrayDelegate::setEditorData(QWidget *editor, const QModelIndex &index) cons
{
BaseTrayWidget *widget = static_cast<BaseTrayWidget *>(editor);
if (widget) {
widget->setNeedShow(!index.data(TrayModel::Blank).toBool());
widget->setNeedShow(true);
}
}

View File

@ -457,10 +457,12 @@ bool TrayGridView::beginDrag(Qt::DropActions supportedActions)
if (!widget)
return false;
QMimeData *data = model()->mimeData(QModelIndexList() << modelIndex);
if (!data)
return false;
auto pixmap = widget->icon();
QString text = modelIndex.data(Qt::DisplayRole).toString();
QString itemKey = modelIndex.data(TrayModel::Role::KeyRole).toString();
qreal ratio = qApp->devicePixelRatio();
// 创建拖拽释放时的应用图标
QLabel *pixLabel = new QLabel(this);
@ -472,17 +474,13 @@ bool TrayGridView::beginDrag(Qt::DropActions supportedActions)
pixmap.setDevicePixelRatio(ratio);
drag->setPixmap(pixmap);
drag->setHotSpot(pixmap.rect().center() / ratio);
QMimeData *data = model()->mimeData(QModelIndexList() << modelIndex);
if (!data) {
return false;
}
data->setImageData(pixmap);
drag->setMimeData(data);
setState(DraggingState);
listModel->setDragKey(itemKey);
listModel->setDragKey(modelIndex.data(TrayModel::Role::KeyRole).toString());
listModel->setDragingIndex(modelIndex);
// 删除当前的图标
WinInfo winInfo = listModel->takeIndex(modelIndex);
@ -506,6 +504,7 @@ bool TrayGridView::beginDrag(Qt::DropActions supportedActions)
m_dropPos = QPoint();
m_dragPos = QPoint();
onUpdateEditorView();
Q_EMIT dragFinished();
});
posAni->setEasingCurve(QEasingCurve::Linear);
@ -520,6 +519,7 @@ bool TrayGridView::beginDrag(Qt::DropActions supportedActions)
m_dropPos = QPoint();
m_dragPos = QPoint();
Q_EMIT dragFinished();
}
return true;

View File

@ -49,6 +49,9 @@ TrayModel *TrayModel::getDockModel()
connect(iconModel, &TrayModel::rowsInserted, model, [ = ] {
model->setExpandVisible(iconModel->rowCount() > 0);
});
connect(iconModel, &TrayModel::rowCountChanged, model, [ = ] {
model->setExpandVisible(iconModel->rowCount() > 0);
});
}
return model;