diff --git a/src/KDDockWidgets.h b/src/KDDockWidgets.h index f34e956b..d7de9ea3 100644 --- a/src/KDDockWidgets.h +++ b/src/KDDockWidgets.h @@ -288,6 +288,21 @@ enum TabWidgetOption { Q_DECLARE_FLAGS(TabWidgetOptions, TabWidgetOption) Q_ENUM_NS(TabWidgetOptions) +/// @internal +enum class FloatingWindowFlag { + None = 0, + FromGlobalConfig = 1, // KDDockWidgets::Config is used instead + TitleBarHasMinimizeButton = 2, + TitleBarHasMaximizeButton = 4, + KeepAboveIfNotUtilityWindow = 8, + NativeTitleBar = 16, + HideTitleBarWhenTabsVisible = 32, + AlwaysTitleBarWhenFloating = 64, + DontUseParentForFloatingWindows = 128, + DontUseQtToolWindowsForFloatingWindows = 256 +}; +Q_DECLARE_FLAGS(FloatingWindowFlags, FloatingWindowFlag); + ///@internal inline QString locationStr(Location loc) { diff --git a/src/private/FloatingWindow.cpp b/src/private/FloatingWindow.cpp index cfa92828..5ed1da98 100644 --- a/src/private/FloatingWindow.cpp +++ b/src/private/FloatingWindow.cpp @@ -103,46 +103,46 @@ MainWindowBase *actualParent(MainWindowBase *candidate) : candidate; } -static FloatingWindow::Flags flagsForFloatingWindow(FloatingWindow::Flags requestedFlags) +static FloatingWindowFlags flagsForFloatingWindow(FloatingWindowFlags requestedFlags) { - if (!(requestedFlags & FloatingWindow::Flag::FromGlobalConfig)) { + if (!(requestedFlags & FloatingWindowFlag::FromGlobalConfig)) { // User requested specific flags for this floating window return requestedFlags; } // Use from KDDockWidgets::Config instead. This is app-wide and not per window. - FloatingWindow::Flags flags = {}; + FloatingWindowFlags flags = {}; if ((Config::self().flags() & Config::Flag_TitleBarHasMinimizeButton) == Config::Flag_TitleBarHasMinimizeButton) - flags |= FloatingWindow::Flag::TitleBarHasMinimizeButton; + flags |= FloatingWindowFlag::TitleBarHasMinimizeButton; if (Config::self().flags() & Config::Flag_TitleBarHasMaximizeButton) - flags |= FloatingWindow::Flag::TitleBarHasMaximizeButton; + flags |= FloatingWindowFlag::TitleBarHasMaximizeButton; if (Config::self().flags() & Config::Flag_KeepAboveIfNotUtilityWindow) - flags |= FloatingWindow::Flag::KeepAboveIfNotUtilityWindow; + flags |= FloatingWindowFlag::KeepAboveIfNotUtilityWindow; if (Config::self().flags() & Config::Flag_NativeTitleBar) - flags |= FloatingWindow::Flag::NativeTitleBar; + flags |= FloatingWindowFlag::NativeTitleBar; if (Config::self().flags() & Config::Flag_HideTitleBarWhenTabsVisible) - flags |= FloatingWindow::Flag::HideTitleBarWhenTabsVisible; + flags |= FloatingWindowFlag::HideTitleBarWhenTabsVisible; if (Config::self().flags() & Config::Flag_AlwaysTitleBarWhenFloating) - flags |= FloatingWindow::Flag::AlwaysTitleBarWhenFloating; + flags |= FloatingWindowFlag::AlwaysTitleBarWhenFloating; if (Config::self().internalFlags() & Config::InternalFlag_DontUseParentForFloatingWindows) - flags |= FloatingWindow::Flag::DontUseParentForFloatingWindows; + flags |= FloatingWindowFlag::DontUseParentForFloatingWindows; if (Config::self().internalFlags() & Config::InternalFlag_DontUseQtToolWindowsForFloatingWindows) - flags |= FloatingWindow::Flag::DontUseQtToolWindowsForFloatingWindows; + flags |= FloatingWindowFlag::DontUseQtToolWindowsForFloatingWindows; return flags; } FloatingWindow::FloatingWindow(QRect suggestedGeometry, MainWindowBase *parent, - FloatingWindow::Flags requestedFlags) + FloatingWindowFlags requestedFlags) : 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(requestedFlags)) @@ -166,7 +166,7 @@ FloatingWindow::FloatingWindow(QRect suggestedGeometry, MainWindowBase *parent, DockRegistry::self()->registerFloatingWindow(this); - if (m_flags & Flag::KeepAboveIfNotUtilityWindow) + if (m_flags & FloatingWindowFlag::KeepAboveIfNotUtilityWindow) setWindowFlag(Qt::WindowStaysOnTopHint, true); if (kddwUsesQtWidgets()) { @@ -345,7 +345,7 @@ void FloatingWindow::setSuggestedGeometry(QRect suggestedRect, SuggestedGeometry suggestedRect.setSize(maxSize.boundedTo(suggestedRect.size())); if ((hint & SuggestedGeometryHint_GeometryIsFromDocked) - && (m_flags & Flag::NativeTitleBar)) { + && (m_flags & FloatingWindowFlag::NativeTitleBar)) { const QMargins margins = contentMargins(); suggestedRect.setHeight(suggestedRect.height() - m_titleBar->height() + margins.top() + margins.bottom()); @@ -491,7 +491,7 @@ void FloatingWindow::updateTitleBarVisibility() frame->updateTitleBarVisibility(); if (KDDockWidgets::usesClientTitleBar()) { - if ((m_flags & Flag::HideTitleBarWhenTabsVisible) && !(m_flags & Flag::AlwaysTitleBarWhenFloating)) { + if ((m_flags & FloatingWindowFlag::HideTitleBarWhenTabsVisible) && !(m_flags & FloatingWindowFlag::AlwaysTitleBarWhenFloating)) { if (hasSingleFrame()) { visible = !frames().first()->hasTabsVisible(); } @@ -772,10 +772,10 @@ void FloatingWindow::ensureRectIsOnScreen(QRect &geometry) bool FloatingWindow::supportsMinimizeButton() const { - return m_flags & Flag::TitleBarHasMinimizeButton; + return m_flags & FloatingWindowFlag::TitleBarHasMinimizeButton; } bool FloatingWindow::supportsMaximizeButton() const { - return m_flags & Flag::TitleBarHasMaximizeButton; + return m_flags & FloatingWindowFlag::TitleBarHasMaximizeButton; } diff --git a/src/private/FloatingWindow_p.h b/src/private/FloatingWindow_p.h index 999e9c08..2e9a724e 100644 --- a/src/private/FloatingWindow_p.h +++ b/src/private/FloatingWindow_p.h @@ -41,22 +41,8 @@ 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, - FromGlobalConfig = 1, // KDDockWidgets::Config is used instead - TitleBarHasMinimizeButton = 2, - TitleBarHasMaximizeButton = 4, - KeepAboveIfNotUtilityWindow = 8, - NativeTitleBar = 16, - HideTitleBarWhenTabsVisible = 32, - AlwaysTitleBarWhenFloating = 64, - DontUseParentForFloatingWindows = 128, - DontUseQtToolWindowsForFloatingWindows = 256 - }; - Q_DECLARE_FLAGS(Flags, Flag); - explicit FloatingWindow(QRect suggestedGeometry, MainWindowBase *parent = nullptr, - FloatingWindow::Flags requestedFlags = Flag::FromGlobalConfig); + FloatingWindowFlags requestedFlags = FloatingWindowFlag::FromGlobalConfig); explicit FloatingWindow(Frame *frame, QRect suggestedGeometry, MainWindowBase *parent = nullptr); ~FloatingWindow() override; @@ -258,7 +244,7 @@ protected: bool event(QEvent *ev) override; void onCloseEvent(QCloseEvent *) override; - const FloatingWindow::Flags m_flags; + const FloatingWindowFlags m_flags; QPointer m_dropArea; TitleBar *const m_titleBar; Qt::WindowState m_lastWindowManagerState = Qt::WindowNoState;