Qt: Enable min/max button on GeometryStateDialogs by default

GeometryStateDialog is used when we want to remember user-set
geometry for a window. If we want the user to be able to control
the geometry, we probably want to allow minimization and maximization.

Pass Qt::Window as the default WindowFlag to GeometryStateDialog
(which is what WiresharkDialogs already do). This on most platforms
defaults to adding minimize and maximize buttons. (On some platforms,
like recent GNOME, we're at the mercy of various settings like

gsettings get org.gnome.desktop.wm.preferences button-layout

but the user can access minimize and maximize actions via right-clicking
the window title bar. Unfortunately it won't stop user confusion.)

Fix #18980. Part of #12566.
This commit is contained in:
John Thacker 2024-04-04 09:33:14 -04:00 committed by AndersBroman
parent 0a636a636c
commit fc77bd3ee9
1 changed files with 11 additions and 2 deletions

View File

@ -45,14 +45,23 @@ public:
//
// Additionally, maximized, parent-less dialogs can close to a black screen
// on macOS: https://gitlab.com/wireshark/wireshark/-/issues/12544
// (aka https://bugreports.qt.io/browse/QTBUG-46701 ), which claims to
// be fixed in Qt 6.2.0
//
// Pass in the parent on macOS and NULL elsewhere so that we have an
// independent window that un-maximizes correctly.
//
// Pass Qt::Window as the flags that we have minimize and maximize buttons, as
// this class is for dialogs where we want to remember user-set geometry.
// (We're still at the mercy of the platform and Qt, e.g. recent GNOME defaults
// to not having min or max buttons, instead requiring right-clicking on the
// menu title bar to perform the minimize or maximize actions. We can't do
// anything about that, though users can.)
#ifdef Q_OS_MAC
explicit GeometryStateDialog(QWidget *parent, Qt::WindowFlags f = Qt::WindowFlags()) : QDialog(parent, f) {}
explicit GeometryStateDialog(QWidget *parent, Qt::WindowFlags f = Qt::Window) : QDialog(parent, f) {}
#else
explicit GeometryStateDialog(QWidget *, Qt::WindowFlags f = Qt::WindowFlags()) : QDialog(NULL, f) {}
explicit GeometryStateDialog(QWidget *, Qt::WindowFlags f = Qt::Window) : QDialog(NULL, f) {}
#endif
~GeometryStateDialog();