2022-05-10 10:06:48 +00:00
|
|
|
// Copyright (C) 2016 The Qt Company Ltd.
|
2024-02-02 13:36:10 +00:00
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
2012-04-20 11:54:52 +00:00
|
|
|
|
|
|
|
#ifndef CONTROLS_H
|
|
|
|
#define CONTROLS_H
|
|
|
|
|
|
|
|
#include <QGroupBox>
|
|
|
|
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
class QCheckBox;
|
|
|
|
class QRadioButton;
|
|
|
|
class QButtonGroup;
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
|
|
|
|
enum { ControlLayoutMargin = 4 };
|
|
|
|
|
|
|
|
// Control for the hint part of Qt::WindowFlags
|
|
|
|
class HintControl : public QGroupBox
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
explicit HintControl(QWidget *parent= 0);
|
|
|
|
|
|
|
|
Qt::WindowFlags hints() const;
|
|
|
|
void setHints(Qt::WindowFlags hints);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void changed(Qt::WindowFlags);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void slotCheckBoxChanged();
|
|
|
|
|
|
|
|
private:
|
|
|
|
QCheckBox *msWindowsFixedSizeDialogCheckBox;
|
|
|
|
QCheckBox *x11BypassWindowManagerCheckBox;
|
|
|
|
QCheckBox *framelessWindowCheckBox;
|
|
|
|
QCheckBox *windowTitleCheckBox;
|
|
|
|
QCheckBox *windowSystemMenuCheckBox;
|
|
|
|
QCheckBox *windowMinimizeButtonCheckBox;
|
|
|
|
QCheckBox *windowMaximizeButtonCheckBox;
|
2012-11-28 18:46:04 +00:00
|
|
|
QCheckBox *windowFullscreenButtonCheckBox;
|
2012-04-20 11:54:52 +00:00
|
|
|
QCheckBox *windowCloseButtonCheckBox;
|
|
|
|
QCheckBox *windowContextHelpButtonCheckBox;
|
|
|
|
QCheckBox *windowShadeButtonCheckBox;
|
|
|
|
QCheckBox *windowStaysOnTopCheckBox;
|
|
|
|
QCheckBox *windowStaysOnBottomCheckBox;
|
2024-11-12 10:54:10 +00:00
|
|
|
QGroupBox *customizeWindowGroup;
|
2012-06-07 09:00:31 +00:00
|
|
|
QCheckBox *transparentForInputCheckBox;
|
2022-09-19 18:09:04 +00:00
|
|
|
QCheckBox *noDropShadowCheckBox;
|
Introduce Qt::ExpandedClientAreaHint
The hint requests that the window's client area is expanded to fill
parts of the window that might be (partially) covered by, or
conflicting with, other (system) UI elements, such as the window's
title bar, resize controls, or a status bar.
The safe area margins of the window will reflect any areas that
may have conflicting UI elements.
If the client area is expanded into the area previously covered
by the frame margins, the frame margins are reduced accordingly,
as the frame margins represent the non-client-area parts of the
window.
This new flag replaces, and overlaps in value, with the existing
Qt::MaximizeUsingFullscreenGeometryHint, as the latter was added
to cover this exact use-case for mobile platforms. Now that we
have the use-case on desktop platforms as well we want to use a
more generic flag, so the old flag has been deprecated.
Semantically, on iOS and Android, without the flags set, the
window can be seen as being maximized to take up the entire
screen, but with a frameMargin() that reflects the system
status bar and resize controls. That's not technically how
we implement things right now, but this is an implementation
detail that will be changed in a follow-up.
On macOS the flag maps to NSWindowStyleMaskFullSizeContentView,
and on Windows we have an implementation cooking that uses the
DwmExtendFrameIntoClientArea function.
Task-number: QTBUG-127634
Change-Id: I9b6863b1550ccc056c16bce235d87b26a7d239b9
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
2024-11-11 21:55:36 +00:00
|
|
|
QCheckBox *expandedClientAreaCheckBox;
|
2024-11-12 13:35:17 +00:00
|
|
|
QCheckBox *noTitleBarBackgroundCheckBox;
|
2012-04-20 11:54:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
// Control for the Qt::WindowState enum, optional with a "visible" QCheckbox
|
|
|
|
class WindowStateControl : public QWidget {
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
2017-02-03 14:55:49 +00:00
|
|
|
explicit WindowStateControl(QWidget *parent= 0);
|
2012-04-20 11:54:52 +00:00
|
|
|
|
2017-02-03 14:55:49 +00:00
|
|
|
Qt::WindowStates state() const;
|
|
|
|
void setState(Qt::WindowStates s);
|
2012-04-20 11:54:52 +00:00
|
|
|
|
|
|
|
signals:
|
2017-02-03 14:55:49 +00:00
|
|
|
void stateChanged(int);
|
2012-04-20 11:54:52 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
QButtonGroup *group;
|
2017-02-03 14:55:49 +00:00
|
|
|
QCheckBox *restoreButton;
|
|
|
|
QCheckBox *minimizeButton;
|
|
|
|
QCheckBox *maximizeButton;
|
|
|
|
QCheckBox *fullscreenButton;
|
2012-04-20 11:54:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
// Control for the Qt::WindowStates flags (normal, maximized, fullscreen exclusively
|
|
|
|
// combined with minimized and optionally, with a "visible" QCheckbox)
|
|
|
|
class WindowStatesControl : public QGroupBox
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
2017-02-03 14:55:49 +00:00
|
|
|
explicit WindowStatesControl(QWidget *parent= 0);
|
2012-04-20 11:54:52 +00:00
|
|
|
|
|
|
|
Qt::WindowStates states() const;
|
|
|
|
void setStates(Qt::WindowStates s);
|
|
|
|
|
|
|
|
bool visibleValue() const;
|
|
|
|
void setVisibleValue(bool);
|
2012-07-11 13:12:26 +00:00
|
|
|
bool activeValue() const;
|
|
|
|
void setActiveValue(bool v);
|
2012-04-20 11:54:52 +00:00
|
|
|
|
|
|
|
signals:
|
|
|
|
void changed();
|
|
|
|
|
|
|
|
private:
|
|
|
|
QCheckBox *visibleCheckBox;
|
2012-07-11 13:12:26 +00:00
|
|
|
QCheckBox *activeCheckBox;
|
2012-04-20 11:54:52 +00:00
|
|
|
WindowStateControl *stateControl;
|
|
|
|
};
|
|
|
|
|
|
|
|
// Control for the type part of Qt::WindowFlags
|
|
|
|
class TypeControl : public QGroupBox
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
explicit TypeControl(QWidget *parent= 0);
|
|
|
|
|
|
|
|
Qt::WindowFlags type() const;
|
|
|
|
void setType(Qt::WindowFlags);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void changed(Qt::WindowFlags);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void slotChanged();
|
|
|
|
|
|
|
|
private:
|
|
|
|
QButtonGroup *group;
|
|
|
|
QRadioButton *windowRadioButton;
|
|
|
|
QRadioButton *dialogRadioButton;
|
|
|
|
QRadioButton *sheetRadioButton;
|
|
|
|
QRadioButton *drawerRadioButton;
|
|
|
|
QRadioButton *popupRadioButton;
|
|
|
|
QRadioButton *toolRadioButton;
|
|
|
|
QRadioButton *toolTipRadioButton;
|
|
|
|
QRadioButton *splashScreenRadioButton;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // CONTROLS_H
|