diff --git a/src/private/FloatingWindow.cpp b/src/private/FloatingWindow.cpp index 46cdadef..ab0a26a9 100644 --- a/src/private/FloatingWindow.cpp +++ b/src/private/FloatingWindow.cpp @@ -113,6 +113,18 @@ static FloatingWindow::Flags flagsForFloatingWindow() if (Config::self().flags() & Config::Flag_TitleBarHasMaximizeButton) flags |= FloatingWindow::Flag::TitleBarHasMaximizeButton; + if (Config::self().flags() & Config::Flag_KeepAboveIfNotUtilityWindow) + flags |= FloatingWindow::Flag::KeepAboveIfNotUtilityWindow; + + if (Config::self().flags() & Config::Flag_NativeTitleBar) + flags |= FloatingWindow::Flag::NativeTitleBar; + + if (Config::self().flags() & Config::Flag_HideTitleBarWhenTabsVisible) + flags |= FloatingWindow::Flag::HideTitleBarWhenTabsVisible; + + if (Config::self().flags() & Config::Flag_AlwaysTitleBarWhenFloating) + flags |= FloatingWindow::Flag::AlwaysTitleBarWhenFloating; + return flags; } @@ -140,7 +152,7 @@ FloatingWindow::FloatingWindow(QRect suggestedGeometry, MainWindowBase *parent) DockRegistry::self()->registerFloatingWindow(this); - if (Config::self().flags() & Config::Flag_KeepAboveIfNotUtilityWindow) + if (m_flags & Flag::KeepAboveIfNotUtilityWindow) setWindowFlag(Qt::WindowStaysOnTopHint, true); if (kddwUsesQtWidgets()) { @@ -319,7 +331,7 @@ void FloatingWindow::setSuggestedGeometry(QRect suggestedRect, SuggestedGeometry suggestedRect.setSize(maxSize.boundedTo(suggestedRect.size())); if ((hint & SuggestedGeometryHint_GeometryIsFromDocked) - && (Config::self().flags() & Config::Flag_NativeTitleBar)) { + && (m_flags & Flag::NativeTitleBar)) { const QMargins margins = contentMargins(); suggestedRect.setHeight(suggestedRect.height() - m_titleBar->height() + margins.top() + margins.bottom()); @@ -465,8 +477,7 @@ void FloatingWindow::updateTitleBarVisibility() frame->updateTitleBarVisibility(); if (KDDockWidgets::usesClientTitleBar()) { - const auto flags = Config::self().flags(); - if ((flags & Config::Flag_HideTitleBarWhenTabsVisible) && !(flags & Config::Flag_AlwaysTitleBarWhenFloating)) { + if ((m_flags & Flag::HideTitleBarWhenTabsVisible) && !(m_flags & Flag::AlwaysTitleBarWhenFloating)) { if (hasSingleFrame()) { visible = !frames().first()->hasTabsVisible(); } diff --git a/src/private/FloatingWindow_p.h b/src/private/FloatingWindow_p.h index 19a9ffa2..539c2fcd 100644 --- a/src/private/FloatingWindow_p.h +++ b/src/private/FloatingWindow_p.h @@ -44,7 +44,11 @@ public: enum class Flag { None = 0, TitleBarHasMinimizeButton = 1, - TitleBarHasMaximizeButton = 2 + TitleBarHasMaximizeButton = 2, + KeepAboveIfNotUtilityWindow = 4, + NativeTitleBar = 8, + HideTitleBarWhenTabsVisible = 16, + AlwaysTitleBarWhenFloating = 32 }; Q_DECLARE_FLAGS(Flags, Flag);