From 1236ae5b87fff551141d82140f25f24a2e686617 Mon Sep 17 00:00:00 2001 From: donghualin Date: Thu, 17 Nov 2022 06:41:20 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=A0=8F=E4=B8=AD=E6=8B=96=E6=8B=BD=E5=9B=BE=E6=A0=87=E5=88=B0?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E5=8C=BA=E5=9F=9F=E5=9B=BE=E6=A0=87=E6=B6=88?= =?UTF-8?q?=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在拖拽图标结束后,自动调用TrayView的onUpdateEditorView方法来重新生成图标 Log: Influence: 将托盘图标从任务栏快速向上拖动,观察任务栏托盘的图标是否还存在 Bug: https://pms.uniontech.com/bug-view-171539.html Change-Id: Ib2dc99742349f06ee27726073916464e7a5769b2 --- frame/window/tray/tray_delegate.cpp | 2 +- frame/window/tray/tray_gridview.cpp | 14 +++++++------- frame/window/tray/tray_model.cpp | 3 +++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/frame/window/tray/tray_delegate.cpp b/frame/window/tray/tray_delegate.cpp index 6f44b3658..3e843ff42 100644 --- a/frame/window/tray/tray_delegate.cpp +++ b/frame/window/tray/tray_delegate.cpp @@ -149,7 +149,7 @@ void TrayDelegate::setEditorData(QWidget *editor, const QModelIndex &index) cons { BaseTrayWidget *widget = static_cast(editor); if (widget) { - widget->setNeedShow(!index.data(TrayModel::Blank).toBool()); + widget->setNeedShow(true); } } diff --git a/frame/window/tray/tray_gridview.cpp b/frame/window/tray/tray_gridview.cpp index 9d397c0ec..32bc7459b 100644 --- a/frame/window/tray/tray_gridview.cpp +++ b/frame/window/tray/tray_gridview.cpp @@ -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; diff --git a/frame/window/tray/tray_model.cpp b/frame/window/tray/tray_model.cpp index 865a47241..7af3637d0 100644 --- a/frame/window/tray/tray_model.cpp +++ b/frame/window/tray/tray_model.cpp @@ -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;