Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/base/consts.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2022 - 2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand All @@ -12,6 +12,7 @@ const char kSearchIndexPage[] = DMAN_WEB_DIR "/toSearchMd/index.html";

const char kConfigWindowWidth[] = "window_width";
const char kConfigWindowHeight[] = "window_height";
const char kConfigWindowMaximized[] = "window_maximized";
const char kConfigWindowInfo[] = "window_info";
const char kConfigAppList[] = "AppList";

Expand Down
3 changes: 2 additions & 1 deletion src/base/consts.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2022 - 2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand All @@ -15,6 +15,7 @@ extern const char kSearchIndexPage[];

extern const char kConfigWindowWidth[];
extern const char kConfigWindowHeight[];
extern const char kConfigWindowMaximized[];
extern const char kConfigWindowInfo[];
extern const char kConfigAppList[];

Expand Down
14 changes: 14 additions & 0 deletions src/controller/window_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@
#include "dbus/manual_filesupdate_proxy.h"
#include "dbus/manual_filesupdate_adapter.h"

#include <DWidgetUtil>

Check warning on line 15 in src/controller/window_manager.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: <DWidgetUtil> not found. Please note: Cppcheck does not need standard library headers to get proper results.

#include <QApplication>

Check warning on line 17 in src/controller/window_manager.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: <QApplication> not found. Please note: Cppcheck does not need standard library headers to get proper results.
#include <QGuiApplication>

Check warning on line 18 in src/controller/window_manager.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: <QGuiApplication> not found. Please note: Cppcheck does not need standard library headers to get proper results.
#include <QScreen>

Check warning on line 19 in src/controller/window_manager.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: <QScreen> not found. Please note: Cppcheck does not need standard library headers to get proper results.

#define WM_SENDER_NAME "Sender"
const int kWinMinWidth = 680;
Expand Down Expand Up @@ -199,6 +201,7 @@
setting->beginGroup(QString(kConfigWindowInfo));
int saveWidth = setting->value(QString(kConfigWindowWidth)).toInt();
int saveHeight = setting->value(QString(kConfigWindowHeight)).toInt();
bool saveMaximized = setting->value(QString(kConfigWindowMaximized)).toBool();
setting->endGroup();
// 如果配置文件没有数据
if (saveWidth == 0 || saveHeight == 0) {
Expand All @@ -213,6 +216,17 @@
qCDebug(app) << "Setting minimum window size to:" << kWinMinWidth << "x" << kWinMinHeight;
window->setMinimumSize(kWinMinWidth, kWinMinHeight);

// 获取当前屏幕可用区域(已排除Dock栏占用区域)
QRect screenRect = QGuiApplication::primaryScreen()->availableGeometry();

if (saveMaximized || (saveWidth > screenRect.width() && saveHeight > screenRect.height())) {
// 上次关闭时最大化 或 保存的窗口尺寸宽和高均大于屏幕可用区域,直接最大化
window->showMaximized();
} else {
// 屏幕居中显示
Dtk::Widget::moveToCenter(window);
}

qCDebug(app) << "Window properties configured successfully";
}

Expand Down
15 changes: 12 additions & 3 deletions src/view/web_window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -941,11 +941,20 @@ void WebWindow::saveWindowSize()
{
qCDebug(app) << "Saving window size";
QSettings *setting = ConfigManager::getInstance()->getSettings();
bool isMaximized = windowState() & Qt::WindowMaximized;
setting->beginGroup(QString(kConfigWindowInfo));
setting->setValue(QString(kConfigWindowWidth), width());
setting->setValue(QString(kConfigWindowHeight), height());
if (isMaximized) {
// 最大化时保存正常状态下的几何信息,以便恢复时使用正确尺寸
setting->setValue(QString(kConfigWindowWidth), normalGeometry().width());
setting->setValue(QString(kConfigWindowHeight), normalGeometry().height());
} else {
setting->setValue(QString(kConfigWindowWidth), width());
setting->setValue(QString(kConfigWindowHeight), height());
}
setting->setValue(QString(kConfigWindowMaximized), isMaximized);
setting->sync();
setting->endGroup();
qCDebug(app) << "Window size saved";
qCDebug(app) << "Window size saved, maximized:" << isMaximized;
}
/**
* @brief WebWindow::updateDb 更新数据库
Expand Down
Loading