diff --git a/Changelog b/Changelog index 5ad65162..8d7f7339 100644 --- a/Changelog +++ b/Changelog @@ -1,6 +1,7 @@ * v1.3.1 (unreleased) - Improve restoring layout when RestoreOption_RelativeToMainWindow is used (#171) - Improved dragging windows across screens in mixed hdpi setups + - Fixed Flag_NativeTitleBar not hidding the client title bars when restoring (#170) * v1.3.0 (8 February 2021) - Experimental QtQuick support (#49) diff --git a/src/private/FloatingWindow.cpp b/src/private/FloatingWindow.cpp index c6f6705e..4f5b67e3 100644 --- a/src/private/FloatingWindow.cpp +++ b/src/private/FloatingWindow.cpp @@ -412,6 +412,9 @@ void FloatingWindow::updateTitleBarVisibility() bool visible = true; + for (Frame *frame : frames()) + frame->updateTitleBarVisibility(); + if (KDDockWidgets::usesClientTitleBar()) { const auto flags = Config::self().flags(); if ((flags & Config::Flag_HideTitleBarWhenTabsVisible) && !(flags & Config::Flag_AlwaysTitleBarWhenFloating)) { @@ -420,9 +423,6 @@ void FloatingWindow::updateTitleBarVisibility() } } - for (Frame *frame : frames()) - frame->updateTitleBarVisibility(); - m_titleBar->updateButtons(); } else { visible = false; diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index ab30e403..d0fd514a 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -138,6 +138,7 @@ private Q_SLOTS: void tst_dontCloseDockWidgetBeforeRestore(); void tst_dontCloseDockWidgetBeforeRestore2(); void tst_dontCloseDockWidgetBeforeRestore3(); + void tst_restoreWithNativeTitleBar(); void tst_closeOnlyCurrentTab(); void tst_tabWidgetCurrentIndex(); @@ -7048,4 +7049,24 @@ void TestDocks::tst_redocksToPreviousTabIndex() #endif } +void TestDocks::tst_restoreWithNativeTitleBar() +{ + EnsureTopLevelsDeleted e; + KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_NativeTitleBar); + + auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400))); + dock0->window()->move(100, 100); + + QVERIFY(!dock0->titleBar()->isVisible()); + QVERIFY(!dock0->floatingWindow()->titleBar()->isVisible()); + QVERIFY(!dock0->d->frame()->titleBar()->isVisible()); + + LayoutSaver saver; + const QByteArray saved = saver.serializeLayout(); + saver.restoreLayout(saved); + QVERIFY(!dock0->titleBar()->isVisible()); + QVERIFY(!dock0->floatingWindow()->titleBar()->isVisible()); + QVERIFY(!dock0->d->frame()->titleBar()->isVisible()); +} + #include "tst_docks.moc"