diff --git a/frame/util/dockpopupwindow.cpp b/frame/util/dockpopupwindow.cpp index a38809688..ca8aa1c0a 100644 --- a/frame/util/dockpopupwindow.cpp +++ b/frame/util/dockpopupwindow.cpp @@ -89,6 +89,12 @@ void DockPopupWindow::setContent(QWidget *content) void DockPopupWindow::setExtendWidget(QWidget *widget) { m_extendWidget = widget; + connect(widget, &QWidget::destroyed, this, [ this ] { m_extendWidget = nullptr; }, Qt::UniqueConnection); +} + +QWidget *DockPopupWindow::extengWidget() const +{ + return m_extendWidget; } void DockPopupWindow::show(const QPoint &pos, const bool model) diff --git a/frame/util/dockpopupwindow.h b/frame/util/dockpopupwindow.h index e08dcb131..5d5e7b8ee 100644 --- a/frame/util/dockpopupwindow.h +++ b/frame/util/dockpopupwindow.h @@ -45,6 +45,7 @@ public: void setContent(QWidget *content); void setExtendWidget(QWidget *widget); + QWidget *extengWidget() const; public slots: void show(const QPoint &pos, const bool model = false); diff --git a/frame/window/quickpluginwindow.cpp b/frame/window/quickpluginwindow.cpp index 3579db679..c622430be 100644 --- a/frame/window/quickpluginwindow.cpp +++ b/frame/window/quickpluginwindow.cpp @@ -359,6 +359,12 @@ void QuickPluginWindow::onRequestUpdate() // 如果该插件在任务栏上,则先将其添加到临时列表中 pluginItems[dockItem->pluginItem()] = dockItem; } else { + DockPopupWindow *popupWindow = getPopWindow(); + if (popupWindow->isVisible()) { + // 该插件被移除的情况下,判断弹出窗口是否在当前的插件中打开的,如果是,则隐藏该窗口 + if (popupWindow->extengWidget() == dockItem) + popupWindow->hide(); + } // 如果该插件不在任务栏上,则先删除 dockItem->deleteLater(); countChanged = true; diff --git a/plugins/bluetooth/bluetoothplugin.cpp b/plugins/bluetooth/bluetoothplugin.cpp index ade736ce5..b7368d618 100644 --- a/plugins/bluetooth/bluetoothplugin.cpp +++ b/plugins/bluetooth/bluetoothplugin.cpp @@ -64,6 +64,8 @@ void BluetoothPlugin::init(PluginProxyInterface *proxyInter) m_proxyInter->itemAdded(this, BLUETOOTH_KEY); }); connect(m_bluetoothItem.data(), &BluetoothItem::noAdapter, [&] { + m_proxyInter->requestSetAppletVisible(this, QUICK_ITEM_KEY, false); + m_proxyInter->requestSetAppletVisible(this, BLUETOOTH_KEY, false); m_proxyInter->itemRemoved(this, BLUETOOTH_KEY); }); connect(m_bluetoothWidget.data(), &BluetoothMainWidget::requestExpand, this, [ = ] {