Merge pull request 'Fix bug 65777' (#196) from fix/bug-65777 into develop

Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/desktop-apps/pulls/196
This commit is contained in:
Oleg Kozhukharenko
2025-02-18 09:45:29 +00:00
6 changed files with 22 additions and 9 deletions

View File

@ -1022,7 +1022,7 @@ void CAscApplicationManagerWrapper::handleInputCmd(const std::vector<wstring>& v
} else {
if ( !_app.m_pMainWindow ) {
_app.m_pMainWindow = _app.prepareMainWindow(_start_rect);
_app.m_pMainWindow->show(reg_user.value("maximized", false).toBool());
_app.m_pMainWindow->show(reg_user.value("maximized", WindowHelper::defaultWindowMaximizeState()).toBool());
} else
if (!_app.m_pMainWindow->isVisible())
_app.m_pMainWindow->show(_app.m_pMainWindow->windowState().testFlag(Qt::WindowMaximized));
@ -1042,7 +1042,7 @@ void CAscApplicationManagerWrapper::handleInputCmd(const std::vector<wstring>& v
if ( !list_failed.empty() && !open_in_new_window ) {
if ( !_app.m_pMainWindow ) {
_app.m_pMainWindow = _app.prepareMainWindow(_start_rect);
_app.m_pMainWindow->show(reg_user.value("maximized", false).toBool());
_app.m_pMainWindow->show(reg_user.value("maximized", WindowHelper::defaultWindowMaximizeState()).toBool());
}
for ( auto & o : list_failed ) {
@ -1119,7 +1119,7 @@ void CAscApplicationManagerWrapper::startApp()
GET_REGISTRY_USER(reg_user)
// QRect _start_rect = reg_user.value("position").toRect();
bool _is_maximized = reg_user.value("maximized", false).toBool();
bool _is_maximized = reg_user.value("maximized", WindowHelper::defaultWindowMaximizeState()).toBool();
#if 0
CMainWindow * _window = createMainWindow(_start_rect);
@ -1404,7 +1404,7 @@ void CAscApplicationManagerWrapper::gotoMainWindow(size_t src)
}
_app.m_pMainWindow = _app.prepareMainWindow(_start_rect);
_app.m_pMainWindow->show(reg_user.value("maximized", false).toBool());
_app.m_pMainWindow->show(reg_user.value("maximized", WindowHelper::defaultWindowMaximizeState()).toBool());
}
if ( !_app.m_pMainWindow->isVisible() )

View File

@ -440,7 +440,7 @@ public:
if (etype == AscEditorType::etUndefined) {
if (!rc.isEmpty())
rc.adjust(50,50,50,50);
isMaximized = mainWindow() ? mainWindow()->windowState().testFlag(Qt::WindowMaximized) : reg_user.value("maximized", false).toBool();
isMaximized = mainWindow() ? mainWindow()->windowState().testFlag(Qt::WindowMaximized) : reg_user.value("maximized", WindowHelper::defaultWindowMaximizeState()).toBool();
} else {
QString baseKey = "EditorsGeometry/" + QString::number(int(etype)) + "/";
if (reg_user.contains(baseKey + "position"))
@ -453,7 +453,7 @@ public:
if (reg_user.contains(baseKey + "maximized"))
isMaximized = reg_user.value(baseKey + "maximized").toBool();
else {
isMaximized = mainWindow() ? mainWindow()->windowState().testFlag(Qt::WindowMaximized) : reg_user.value("maximized", false).toBool();
isMaximized = mainWindow() ? mainWindow()->windowState().testFlag(Qt::WindowMaximized) : reg_user.value("maximized", WindowHelper::defaultWindowMaximizeState()).toBool();
}
}
}

View File

@ -1178,4 +1178,13 @@ namespace WindowHelper {
return wgt;
return nullptr;
}
auto defaultWindowMaximizeState() -> bool
{
GET_REGISTRY_USER(reg_user);
if (reg_user.contains("position") || reg_user.childGroups().contains("EditorsGeometry"))
return false;
auto scr_rc = qApp->primaryScreen()->geometry();
return (scr_rc.width() <= SCREEN_THRESHOLD_SIZE.width() || scr_rc.height() <= SCREEN_THRESHOLD_SIZE.height());
}
}

View File

@ -174,6 +174,7 @@ namespace WindowHelper {
auto useNativeDialog() -> bool;
auto activeWindow() -> QWidget*;
auto currentTopWindow() -> QWidget*;
auto defaultWindowMaximizeState() -> bool;
}
#endif // UTILS_H

View File

@ -88,8 +88,10 @@ CWindowBase::~CWindowBase()
QRect CWindowBase::startRect(const QRect &rc, double &dpi)
{
dpi = Utils::getScreenDpiRatio(rc.isEmpty() ? qApp->primaryScreen()->geometry().topLeft() : rc.topLeft());
QRect def_rc = QRect(QPoint(100, 100) * dpi, MAIN_WINDOW_DEFAULT_SIZE * dpi),
QRect prim_scr_rc = qApp->primaryScreen()->availableGeometry();
dpi = Utils::getScreenDpiRatio(rc.isEmpty() ? prim_scr_rc.topLeft() : rc.topLeft());
QSize def_size = MAIN_WINDOW_DEFAULT_SIZE * dpi;
QRect def_rc = QRect(prim_scr_rc.center() - QPoint(def_size.width()/2, def_size.height()/2), def_size),
out_rc = rc.isEmpty() ? def_rc : rc,
scr_rc = Utils::getScreenGeometry(out_rc.topLeft());
return scr_rc.intersects(out_rc) ? scr_rc.intersected(out_rc) : def_rc;

View File

@ -38,8 +38,9 @@
#define MAIN_WINDOW_MIN_WIDTH 960
#define MAIN_WINDOW_MIN_HEIGHT 661
#define MAIN_WINDOW_DEFAULT_SIZE QSize(1324,800)
#define MAIN_WINDOW_DEFAULT_SIZE QSize(1200,740)
#define EDITOR_WINDOW_MIN_WIDTH 920
#define SCREEN_THRESHOLD_SIZE QSize(1366,768)
#define BUTTON_MAIN_WIDTH 112
#define MAIN_WINDOW_BORDER_WIDTH 3