From 48ba3f5f771aa12b8652221e264477798681f107 Mon Sep 17 00:00:00 2001 From: ssk-wh Date: Wed, 24 Apr 2024 10:30:21 +0800 Subject: [PATCH 1/3] fix: fix `mapToGlobal` error as title log: as title --- panels/dock/tray/frame/util/dockpopupwindow.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/panels/dock/tray/frame/util/dockpopupwindow.cpp b/panels/dock/tray/frame/util/dockpopupwindow.cpp index c131c261b..6bbdd0142 100644 --- a/panels/dock/tray/frame/util/dockpopupwindow.cpp +++ b/panels/dock/tray/frame/util/dockpopupwindow.cpp @@ -265,8 +265,12 @@ void DockPopupWindow::onButtonPress(int type, int x, int y, const QString &key) return; if (m_extendWidget) { + QPoint offset = m_extendWidget->mapTo(m_extendWidget->topLevelWidget(), rect().topLeft()); + auto topW = m_extendWidget->topLevelWidget(); + // 计算额外添加的区域,如果鼠标的点击点在额外的区域内,也无需隐藏 - QPoint extendPoint = m_extendWidget->mapToGlobal(QPoint(0, 0)); + QPoint extendPoint = topW->geometry().topLeft() + offset; + auto p = m_extendWidget->mapToGlobal(QPoint(0, 0)); QRect extendRect(((extendPoint - screenRect.topLeft()) * qApp->devicePixelRatio() + screenRect.topLeft()), m_extendWidget->size() * qApp->devicePixelRatio()); if (extendRect.contains(QPoint(x, y))) return; From ec8bc488afed1b773c5da6122806e13156b549e3 Mon Sep 17 00:00:00 2001 From: ssk-wh Date: Thu, 25 Apr 2024 17:40:23 +0800 Subject: [PATCH 2/3] fix: notification plugin not generated in correct location in debug mode and not use icon in system theme log: as title issue: https://github.com/linuxdeepin/developer-center/issues/8245 --- panels/dock/tray/plugins/notification/CMakeLists.txt | 2 +- .../tray/plugins/notification/notificationplugin.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/panels/dock/tray/plugins/notification/CMakeLists.txt b/panels/dock/tray/plugins/notification/CMakeLists.txt index 918afa451..86d348dfd 100644 --- a/panels/dock/tray/plugins/notification/CMakeLists.txt +++ b/panels/dock/tray/plugins/notification/CMakeLists.txt @@ -12,7 +12,7 @@ add_library(${PLUGIN_NAME} SHARED notification.qrc ) target_compile_definitions(${PLUGIN_NAME} PRIVATE QT_PLUGIN) -set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins) +set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ..) target_include_directories(${PLUGIN_NAME} PRIVATE $ diff --git a/panels/dock/tray/plugins/notification/notificationplugin.cpp b/panels/dock/tray/plugins/notification/notificationplugin.cpp index 7d0988d2e..8711cf1d7 100644 --- a/panels/dock/tray/plugins/notification/notificationplugin.cpp +++ b/panels/dock/tray/plugins/notification/notificationplugin.cpp @@ -126,8 +126,13 @@ void NotificationPlugin::pluginSettingsChanged() QIcon NotificationPlugin::icon(const DockPart &dockPart, DGuiApplicationHelper::ColorType themeType) { Q_UNUSED(themeType) - if (dockPart == DockPart::DCCSetting) - return QIcon::fromTheme("notification"); + if (dockPart == DockPart::DCCSetting) { + if (themeType == DGuiApplicationHelper::LightType) { + return QIcon(":/dsg/built-in-icons/notification-dark.svg"); + } else { + return QIcon(":/dsg/built-in-icons/notification.svg"); + } + } return m_notification->icon(); } From 280fdac689eab522dea7e2e51dd156878fae0612 Mon Sep 17 00:00:00 2001 From: ssk-wh Date: Thu, 25 Apr 2024 21:01:03 +0800 Subject: [PATCH 3/3] fix: tips position error as title log: as title issue: https://github.com/linuxdeepin/developer-center/issues/8197 --- panels/dock/tray/frame/util/dockpopupwindow.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/panels/dock/tray/frame/util/dockpopupwindow.cpp b/panels/dock/tray/frame/util/dockpopupwindow.cpp index 6bbdd0142..a999bdb5e 100644 --- a/panels/dock/tray/frame/util/dockpopupwindow.cpp +++ b/panels/dock/tray/frame/util/dockpopupwindow.cpp @@ -155,7 +155,15 @@ void DockPopupWindow::show(const int x, const int y) break; } blockButtonRelease(); - QScreen *screen = DIS_INS->screen(DOCK_SCREEN->current()); + + // find the screen where dock onto + QScreen *screen = nullptr; + for (auto tw : qApp->topLevelWidgets()) { + if (QString(tw->metaObject()->className()) == "DockTrayWindow") { + screen = tw->screen(); + break; + } + }; if (!screen) return; QRect screenRect = screen->geometry();