122 lines
4.7 KiB
Diff
122 lines
4.7 KiB
Diff
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
|
||
|