Skip to content

Commit d27c1b1

Browse files
committed
fix: improve window identity and tracking order
1. Add desktop file ID to window identity for better uniqueness 2. Include AppItem desktopfileID in identity generation 3. Change window tracking order to emit signal before tracking 4. This prevents potential race conditions in window management fix: 改进窗口标识和跟踪顺序 1. 添加桌面文件ID到窗口标识以提高唯一性 2. 在身份生成中包含AppItem的desktopfileID 3. 更改窗口跟踪顺序,在跟踪前发出信号 4. 这可以防止窗口管理中的潜在竞争条件 PMS: BUG-335801
1 parent b905df4 commit d27c1b1

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

panels/dock/taskmanager/x11window.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "x11window.h"
66
#include "abstractwindow.h"
77
#include "x11utils.h"
8+
#include "appitem.h"
89

910
#include <mutex>
1011

@@ -48,6 +49,7 @@ QStringList X11Window::identity()
4849
{
4950
if (m_identity.isEmpty()) {
5051
m_identity = X11->getWindowWMClass(m_windowID);
52+
m_identity.append(getAppItem()->desktopfileID());
5153
m_identity.append(QString::number(pid()));
5254
}
5355

panels/dock/taskmanager/x11windowmonitor.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,9 @@ void X11WindowMonitor::onWindowMapped(xcb_window_t xcb_window)
175175

176176
uint32_t value_list[] = { XCB_EVENT_MASK_PROPERTY_CHANGE | XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_VISIBILITY_CHANGE};
177177
xcb_change_window_attributes(X11->getXcbConnection(), xcb_window, XCB_CW_EVENT_MASK, value_list);
178-
trackWindow(window.get());
179178
Q_EMIT AbstractWindowMonitor::windowAdded(static_cast<QPointer<AbstractWindow>>(window.get()));
179+
trackWindow(window.get());
180+
180181
}
181182

182183
void X11WindowMonitor::onWindowDestroyed(xcb_window_t xcb_window)

0 commit comments

Comments
 (0)