代码拉取完成,页面将自动刷新
From 982cf2a7b7a60843f17b103ecafa150dd4f557da Mon Sep 17 00:00:00 2001
From: leeffo <liweiganga@uniontech.com>
Date: Tue, 25 Jul 2023 11:33:00 +0800
Subject: [PATCH] feat: add build option to disable wayland support
---
.../gui/xwin_kill_preview_widget.cpp | 26 +++++++++++++++----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/deepin-system-monitor-main/gui/xwin_kill_preview_widget.cpp b/deepin-system-monitor-main/gui/xwin_kill_preview_widget.cpp
index 077aa1e..26ec724 100644
--- a/deepin-system-monitor-main/gui/xwin_kill_preview_widget.cpp
+++ b/deepin-system-monitor-main/gui/xwin_kill_preview_widget.cpp
@@ -37,12 +37,14 @@ XWinKillPreviewWidget::XWinKillPreviewWidget(QWidget *parent) : QWidget(parent)
{
// new window manager instance
m_wminfo = new WMInfo();
-//不再使用CMakeList开关宏的方式,改用全局变量运行时控制
-//WaylandCentered定义在common/common.h中,在main函数开头进行初始化判断
+// 如果在编译时选择支持Wayland,运行时会由全局变量WaylandCentered控制
+// WaylandCentered定义在common/common.h中,在main函数开头进行初始化判断
+#ifdef USE_DEEPIN_WAYLAND
if (WaylandCentered) {
m_connectionThread = new QThread(this);
m_connectionThreadObject = new ConnectionThread();
}
+#endif // USE_DEEPIN_WAYLAND
// init ui components & connections
initUI();
@@ -66,11 +68,13 @@ XWinKillPreviewWidget::~XWinKillPreviewWidget()
releaseMouse();
releaseKeyboard();
delete m_wminfo;
+#ifdef USE_DEEPIN_WAYLAND
if (WaylandCentered) {
m_connectionThread->quit();
m_connectionThread->wait();
m_connectionThreadObject->deleteLater();
}
+#endif // USE_DEEPIN_WAYLAND
}
// mouse press event
@@ -82,6 +86,7 @@ void XWinKillPreviewWidget::mousePressEvent(QMouseEvent *event)
}
// get the list of windows under cursor in stacked order when mouse pressed
auto pos = QCursor::pos();
+#ifdef USE_DEEPIN_WAYLAND
if (WaylandCentered) {
double ratio = QGuiApplication::primaryScreen()->devicePixelRatio(); // 获得当前的缩放比例
QRect screenRect;
@@ -119,7 +124,9 @@ void XWinKillPreviewWidget::mousePressEvent(QMouseEvent *event)
break;
}
}
- } else {
+ }
+#endif // USE_DEEPIN_WAYLAND
+ if (!WaylandCentered) {
double ratio = QGuiApplication::primaryScreen()->devicePixelRatio(); // 获得当前的缩放比例
QRect screenRect;
for (auto screen : QApplication::screens()) {
@@ -165,6 +172,7 @@ void XWinKillPreviewWidget::mousePressEvent(QMouseEvent *event)
// mouse move event handler
void XWinKillPreviewWidget::mouseMoveEvent(QMouseEvent *)
{
+#ifdef USE_DEEPIN_WAYLAND
if (WaylandCentered) {
double ratio = QGuiApplication::primaryScreen()->devicePixelRatio(); // 获得当前的缩放比例
auto pos = QCursor::pos();
@@ -236,7 +244,9 @@ void XWinKillPreviewWidget::mouseMoveEvent(QMouseEvent *)
bg->clearSelection();
emit cursorUpdated(m_defaultCursor);
}
- } else {
+ }
+#endif // USE_DEEPIN_WAYLAND
+ if (!WaylandCentered) {
double ratio = QGuiApplication::primaryScreen()->devicePixelRatio(); // 获得当前的缩放比例
auto pos = QCursor::pos();
QRect screenRect;
@@ -351,9 +361,10 @@ void XWinKillPreviewWidget::initUI()
// snapshot current scree
auto pixmap = screen->grabWindow(m_wminfo->getRootWindow());
+#ifdef USE_DEEPIN_WAYLAND
if (WaylandCentered)
pixmap = screen->grabWindow(m_windowStates.end()->windowId);
-
+#endif // USE_DEEPIN_WAYLAND
pixmap = pixmap.copy(geom.x(), geom.y(), static_cast<int>(geom.width() * devicePixelRatioF()), static_cast<int>(geom.height() * devicePixelRatioF()));
// create preview background widget for each screen
auto *background = new XWinKillPreviewBackgroundWidget(pixmap, this);
@@ -378,6 +389,7 @@ void XWinKillPreviewWidget::initUI()
// wayland协议下建立连接
void XWinKillPreviewWidget::initConnections()
{
+#ifdef USE_DEEPIN_WAYLAND
if (WaylandCentered) {
connect(m_connectionThreadObject, &ConnectionThread::connected, this,
[this] {
@@ -394,7 +406,10 @@ void XWinKillPreviewWidget::initConnections()
m_connectionThreadObject->initConnection();
}
+#endif // USE_DEEPIN_WAYLAND
}
+
+#ifdef USE_DEEPIN_WAYLAND
//打印当前窗口信息接口
void XWinKillPreviewWidget::print_window_states(const QVector<ClientManagement::WindowState> &m_windowStates)
{
@@ -447,3 +462,4 @@ void XWinKillPreviewWidget::setupRegistry(Registry *registry)
}
}
+#endif // USE_DEEPIN_WAYLAND
--
2.20.1
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。