Further isolate access to top-level Config in FloatingWindow

In preparation for per-floatingwindow flags
This commit is contained in:
Sergio Martins
2022-09-16 11:24:09 +01:00
parent f3d8bf724d
commit 038cc90051
2 changed files with 24 additions and 2 deletions

View File

@@ -103,9 +103,23 @@ MainWindowBase *actualParent(MainWindowBase *candidate)
: candidate;
}
static FloatingWindow::Flags flagsForFloatingWindow()
{
FloatingWindow::Flags flags = {};
if ((Config::self().flags() & Config::Flag_TitleBarHasMinimizeButton) == Config::Flag_TitleBarHasMinimizeButton)
flags |= FloatingWindow::Flag::TitleBarHasMinimizeButton;
if (Config::self().flags() & Config::Flag_TitleBarHasMaximizeButton)
flags |= FloatingWindow::Flag::TitleBarHasMaximizeButton;
return flags;
}
FloatingWindow::FloatingWindow(QRect suggestedGeometry, MainWindowBase *parent)
: QWidgetAdapter(actualParent(parent), windowFlagsToUse())
, Draggable(this, KDDockWidgets::usesNativeDraggingAndResizing()) // FloatingWindow is only draggable when using a native title bar. Otherwise the KDDockWidgets::TitleBar is the draggable
, m_flags(flagsForFloatingWindow())
, m_dropArea(new DropArea(this))
, m_titleBar(Config::self().frameworkWidgetFactory()->createTitleBar(this))
{
@@ -732,10 +746,10 @@ void FloatingWindow::ensureRectIsOnScreen(QRect &geometry)
bool FloatingWindow::supportsMinimizeButton() const
{
return (Config::self().flags() & Config::Flag_TitleBarHasMinimizeButton) == Config::Flag_TitleBarHasMinimizeButton; // this specific flag is not base^2
return m_flags & Flag::TitleBarHasMinimizeButton;
}
bool FloatingWindow::supportsMaximizeButton() const
{
return Config::self().flags() & Config::Flag_TitleBarHasMaximizeButton;
return m_flags & Flag::TitleBarHasMaximizeButton;
}

View File

@@ -41,6 +41,13 @@ class DOCKS_EXPORT FloatingWindow
Q_PROPERTY(KDDockWidgets::TitleBar *titleBar READ titleBar CONSTANT)
Q_PROPERTY(KDDockWidgets::DropArea *dropArea READ dropArea CONSTANT)
public:
enum class Flag {
None = 0,
TitleBarHasMinimizeButton = 1,
TitleBarHasMaximizeButton = 2
};
Q_DECLARE_FLAGS(Flags, Flag);
explicit FloatingWindow(QRect suggestedGeometry, MainWindowBase *parent = nullptr);
explicit FloatingWindow(Frame *frame, QRect suggestedGeometry, MainWindowBase *parent = nullptr);
~FloatingWindow() override;
@@ -243,6 +250,7 @@ protected:
bool event(QEvent *ev) override;
void onCloseEvent(QCloseEvent *) override;
const FloatingWindow::Flags m_flags;
QPointer<DropArea> m_dropArea;
TitleBar *const m_titleBar;
Qt::WindowState m_lastWindowManagerState = Qt::WindowNoState;