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;