diff --git a/panels/dock/tray/frame/util/dockpopupwindow.cpp b/panels/dock/tray/frame/util/dockpopupwindow.cpp index c131c261b..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(); @@ -265,8 +273,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; 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(); }