From d577ea552de565a45205d59e21bf9bcb19777623 Mon Sep 17 00:00:00 2001 From: justforlxz Date: Thu, 18 Apr 2024 13:50:08 +0800 Subject: [PATCH] chore: update tray tips radius tips radius set to 4 by design. Log: --- .../dock/tray/frame/util/dockpopupwindow.cpp | 36 ++++++++++++++++++- panels/dock/tray/frame/util/dockpopupwindow.h | 7 +++- .../tray/frame/window/quickpluginwindow.cpp | 2 +- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/panels/dock/tray/frame/util/dockpopupwindow.cpp b/panels/dock/tray/frame/util/dockpopupwindow.cpp index 4a833e8e7..e00430c23 100644 --- a/panels/dock/tray/frame/util/dockpopupwindow.cpp +++ b/panels/dock/tray/frame/util/dockpopupwindow.cpp @@ -4,6 +4,7 @@ // SPDX-License-Identifier: LGPL-3.0-or-later #include "dockpopupwindow.h" +#include #include "utils.h" #include "dbusutil.h" #include "dockscreen.h" @@ -15,6 +16,8 @@ #include #include +#include + DWIDGET_USE_NAMESPACE #define DOCK_SCREEN DockScreen::instance() @@ -22,6 +25,7 @@ DWIDGET_USE_NAMESPACE DockPopupWindow::DockPopupWindow(QWidget *parent) : DBlurEffectWidget(parent) + , m_radius(-1) , m_model(false) , m_eventMonitor(new XEventMonitor(xEventMonitorService, xEventMonitorPath, QDBusConnection::sessionBus(), this)) , m_enableMouseRelease(true) @@ -30,6 +34,9 @@ DockPopupWindow::DockPopupWindow(QWidget *parent) { setContentsMargins(0, 0, 0, 0); m_wmHelper = DWindowManagerHelper::instance(); + m_windowHandle = new DPlatformWindowHandle(this); + + connect(m_wmHelper, &DWindowManagerHelper::hasCompositeChanged, this, &DockPopupWindow::updateRadius); setWindowFlags(Qt::ToolTip | Qt::WindowStaysOnTopHint); if (Utils::IS_WAYLAND_DISPLAY) { @@ -59,8 +66,16 @@ QWidget *DockPopupWindow::getContent() return m_lastWidget; } -void DockPopupWindow::setContent(QWidget *content) +void DockPopupWindow::setContent(QWidget *content, int radius) { + if (radius != -1) { + setRadius(radius); + } + else { + DStyleHelper dstyle; + setRadius(dstyle.pixelMetric(DStyle::PM_FrameRadius)); + } + if (m_lastWidget) m_lastWidget->removeEventFilter(this); content->installEventFilter(this); @@ -93,6 +108,17 @@ QWidget *DockPopupWindow::extendWidget() const return m_extendWidget; } +void DockPopupWindow::setRadius(int radius) +{ + if (m_radius == radius) { + return; + } + + m_radius = radius; + + updateRadius(); +} + void DockPopupWindow::show(const QPoint &pos, const bool model) { m_model = model; @@ -211,6 +237,14 @@ bool DockPopupWindow::eventFilter(QObject *o, QEvent *e) return false; } +void DockPopupWindow::updateRadius() +{ + const bool hasComposite = m_wmHelper->hasComposite(); + m_windowHandle->setEnableBlurWindow(hasComposite); + m_windowHandle->setTranslucentBackground(hasComposite); + m_windowHandle->setWindowRadius((hasComposite ? m_radius : 0) * devicePixelRatioF()); +} + void DockPopupWindow::ensureRaised() { if (isVisible()) diff --git a/panels/dock/tray/frame/util/dockpopupwindow.h b/panels/dock/tray/frame/util/dockpopupwindow.h index 7157d79f0..69577a6f1 100644 --- a/panels/dock/tray/frame/util/dockpopupwindow.h +++ b/panels/dock/tray/frame/util/dockpopupwindow.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -33,10 +34,11 @@ class DockPopupWindow : public Dtk::Widget::DBlurEffectWidget bool model() const; QWidget *getContent(); - void setContent(QWidget *content); + void setContent(QWidget *content, int radius = -1); void setExtendWidget(QWidget *widget); void setPosition(Dock::Position position); QWidget *extendWidget() const; + void setRadius(int radius); public slots: void show(const QPoint &pos, const bool model = false); @@ -61,8 +63,10 @@ public slots: private slots: void ensureRaised(); void onButtonPress(int type, int x, int y, const QString &key); + void updateRadius(); private: + int m_radius; bool m_model; QPoint m_lastPoint; Dock::Position m_position; @@ -70,6 +74,7 @@ private slots: XEventMonitor *m_eventMonitor; QString m_eventKey; DWindowManagerHelper *m_wmHelper; + DPlatformWindowHandle *m_windowHandle; bool m_enableMouseRelease; QWidget *m_extendWidget; QPointer m_lastWidget; diff --git a/panels/dock/tray/frame/window/quickpluginwindow.cpp b/panels/dock/tray/frame/window/quickpluginwindow.cpp index c6196d5a2..7582b9546 100644 --- a/panels/dock/tray/frame/window/quickpluginwindow.cpp +++ b/panels/dock/tray/frame/window/quickpluginwindow.cpp @@ -935,7 +935,7 @@ void QuickDockItem::enterEvent(QEnterEvent *event) m_popupWindow->setPosition(m_position); m_popupWindow->resize(tipWidget->sizeHint()); - m_popupWindow->setContent(tipWidget); + m_popupWindow->setContent(tipWidget, 4); m_popupWindow->show(popupMarkPoint()); }