From 61b076a91ccb26f603fda00f4442f3d7afcab24d Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Mon, 25 Aug 2025 16:50:44 +0600 Subject: [PATCH] Fix resizable window toggle on Windows Also include a hex code on process crashes in the VM manager. --- src/qt/qt_mainwindow.cpp | 5 +++-- src/qt/qt_styleoverride.cpp | 10 +++++++++- src/qt/qt_styleoverride.hpp | 2 ++ src/qt/qt_vmmanager_system.cpp | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 7f611b9da..1e4025192 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -1655,11 +1655,12 @@ MainWindow::focusOutEvent(QFocusEvent *event) void MainWindow::on_actionResizable_window_triggered(bool checked) { + hide(); if (checked) { vid_resize = 1; - setWindowFlag(Qt::WindowMaximizeButtonHint, true); - setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, false); setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); + setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, false); + setWindowFlag(Qt::WindowMaximizeButtonHint, true); for (int i = 1; i < MONITORS_NUM; i++) { if (monitors[i].target_buffer) { renderers[i]->setWindowFlag(Qt::WindowMaximizeButtonHint, true); diff --git a/src/qt/qt_styleoverride.cpp b/src/qt/qt_styleoverride.cpp index 2da0342bb..681114c4b 100644 --- a/src/qt/qt_styleoverride.cpp +++ b/src/qt/qt_styleoverride.cpp @@ -22,6 +22,7 @@ #include #include #include +#include extern "C" { #include <86box/86box.h> @@ -61,7 +62,14 @@ StyleOverride::polish(QWidget *widget) widget->setFixedSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); widget->layout()->setSizeConstraint(QLayout::SetFixedSize); } - widget->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, true); + if (!qobject_cast(widget)) { + widget->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, true); + } + + if (qobject_cast(widget)) { + widget->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, vid_resize != 1); + widget->setWindowFlag(Qt::WindowMaximizeButtonHint, vid_resize == 1); + } } widget->setWindowFlag(Qt::WindowContextHelpButtonHint, false); #ifdef Q_OS_WINDOWS diff --git a/src/qt/qt_styleoverride.hpp b/src/qt/qt_styleoverride.hpp index 840aa6ad6..994271f15 100644 --- a/src/qt/qt_styleoverride.hpp +++ b/src/qt/qt_styleoverride.hpp @@ -10,6 +10,8 @@ class StyleOverride : public QProxyStyle { public: + using QProxyStyle::QProxyStyle; + int styleHint( StyleHint hint, const QStyleOption *option = nullptr, diff --git a/src/qt/qt_vmmanager_system.cpp b/src/qt/qt_vmmanager_system.cpp index 61c52b1b0..f6be6b0d4 100644 --- a/src/qt/qt_vmmanager_system.cpp +++ b/src/qt/qt_vmmanager_system.cpp @@ -491,7 +491,7 @@ VMManagerSystem::launchSettings() { if (exitCode != 0 || exitStatus != QProcess::NormalExit) { qInfo().nospace().noquote() << "Abnormal program termination while launching settings: exit code " << exitCode << ", exit status " << exitStatus; QMessageBox::critical(this, tr("Virtual machine crash"), - tr("The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2.").arg(displayName, QString::number(exitCode))); + tr("The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2.").arg(displayName, QString::number(exitCode) + QString(" (0x%1)").arg(QString::number(exitCode, 16)))); return; }