Skip to content

Commit ea8d131

Browse files
committed
fix(window): preserve maximized state when reactivating minimized window
Save window state before activation and skip saveWindowSize/moveToCenter for maximized windows, restore showMaximized in fallback path. 保存窗口状态再激活,最大化窗口跳过 saveWindowSize 和 moveToCenter, fallback 分支恢复 showMaximized。 Log: 修复最小化后再次打开丢失最大化状态的问题 PMS: BUG-355967 Influence: 修复最大化后最小化再打开窗口状态变为普通窗口的问题。
1 parent 39a025d commit ea8d131

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

src/controller/window_manager.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,19 +124,28 @@ void WindowManager::activeOrInitWindow()
124124
QMutexLocker locker(&_mutex);
125125
/*** 只要有窗口就不再创建新窗口 2020-06-22 16:57:50 wangml ***/
126126
if (window != nullptr) {
127+
bool wasMaximized = window->windowState() & Qt::WindowMaximized;
127128
//2020-01-15 kyz 在专业服务器版最小化后show的方式可能无法激活窗口桌面版正常,可能是桌面环境问题,优先采用dock接口激活,如果失败再使用其它激活
128129
if (Q_LIKELY(Utils::activeWindow(window->winId()))) {
129130
qCDebug(app) << "Window activated via Utils::activeWindow, winId:" << window->winId();
130-
window->saveWindowSize();
131-
Dtk::Widget::moveToCenter(window);
132-
qCDebug(app) << "Window moved to center";
131+
if (!wasMaximized) {
132+
window->saveWindowSize();
133+
Dtk::Widget::moveToCenter(window);
134+
} else {
135+
qCDebug(app) << "Window was maximized, skipping saveWindowSize and moveToCenter";
136+
}
133137
} else {
134138
qCDebug(app) << "Fallback activation method for winId:" << window->winId();
135-
setWindow(window);
139+
if (!wasMaximized) {
140+
setWindow(window);
141+
}
136142
window->show();
143+
if (wasMaximized) {
144+
window->showMaximized();
145+
}
137146
window->raise();
138147
window->activateWindow();
139-
qCDebug(app) << "Window shown and activated";
148+
qCDebug(app) << "Window shown and activated, wasMaximized:" << wasMaximized;
140149
}
141150
window->openjsPage(curr_app_name_, curr_title_name_);
142151
qCDebug(app) << "openjsPage end";

0 commit comments

Comments
 (0)