diff --git a/frame/item/quicksettingitem.cpp b/frame/item/quicksettingitem.cpp index eb922f886..0f6959d0d 100644 --- a/frame/item/quicksettingitem.cpp +++ b/frame/item/quicksettingitem.cpp @@ -77,8 +77,8 @@ bool QuickSettingItem::eventFilter(QObject *obj, QEvent *event) if (!command.isEmpty()) QProcess::startDetached(command); - if (QWidget *w = m_pluginInter->itemPopupApplet(m_itemKey)) - showPopupApplet(w); + if (!isPrimary()) + Q_EMIT detailClicked(m_pluginInter); } } else if (event->type() == QEvent::Resize) { if (obj == m_nameLabel) { diff --git a/frame/window/quicksettingcontainer.cpp b/frame/window/quicksettingcontainer.cpp index 1b119415d..bb60baa9a 100644 --- a/frame/window/quicksettingcontainer.cpp +++ b/frame/window/quicksettingcontainer.cpp @@ -250,6 +250,39 @@ bool QuickSettingContainer::isApplet(PluginsItemInterface *itemInter) const return json.value("applet").toBool(); } +bool QuickSettingContainer::isQuickPlugin(PluginsItemInterface *itemInter) const +{ + // 先判断是否为快捷面板区域(类似声音、亮度,音乐等) + QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY); + if (itemWidget) { + for (int i = 0; i < m_componentWidget->layout()->count(); i++) { + QLayoutItem *layoutItem = m_componentWidget->layout()->itemAt(i); + if (!layoutItem) + continue; + + DBlurEffectWidget *effectWidget = qobject_cast(layoutItem->widget()); + if (!effectWidget || !effectWidget->layout()) + continue; + + for (int j = 0; j < effectWidget->layout()->count(); j++) { + QLayoutItem *layoutItem = effectWidget->layout()->itemAt(i); + if (!layoutItem || layoutItem->widget() != itemWidget) + continue; + + return true; + } + } + } else { + for (QuickSettingItem *settingItem : m_quickSettings) { + if (settingItem->pluginItem() != itemInter) + continue; + + return true; + } + } + return false; +} + void QuickSettingContainer::onPluginInsert(PluginsItemInterface * itemInter) { QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY); @@ -524,13 +557,11 @@ void QuickSettingContainer::onResizeView() void QuickSettingContainer::onRequestAppletShow(PluginsItemInterface *itemInter, const QString &itemKey) { - if (itemKey == QUICK_ITEM_KEY) { - // 显示弹出的内容 - QWidget *itemApplet = itemInter->itemPopupApplet(itemKey); - if (!itemApplet) - return; + // 显示弹出的内容 + QWidget *itemApplet = itemInter->itemPopupApplet(itemKey); + if (!itemApplet) + return; - showWidget(itemApplet, itemInter->pluginDisplayName()); - onResizeView(); - } + showWidget(itemApplet, itemInter->pluginDisplayName()); + onResizeView(); } diff --git a/frame/window/quicksettingcontainer.h b/frame/window/quicksettingcontainer.h index c56870fb0..6e0a548b1 100644 --- a/frame/window/quicksettingcontainer.h +++ b/frame/window/quicksettingcontainer.h @@ -85,6 +85,8 @@ private: QPoint hotSpot(const QPixmap &pixmap); // 判断是否支持显示在面板上 bool isApplet(PluginsItemInterface * itemInter) const; + // 判断插件是否在当前快捷面板上 + bool isQuickPlugin(PluginsItemInterface * itemInter) const; private: static DockPopupWindow *m_popWindow;