Merge branch '1.5'

This commit is contained in:
Sergio Martins
2021-11-18 14:03:00 +00:00
9 changed files with 69 additions and 41 deletions

View File

@@ -7,9 +7,8 @@
- Co-installable with Qt6
- Adds support for non-detachable central widget, MainWindowOption_HasCentralWidget. (#225)
- Fix corrupt layout when restoring old JSON
* v1.4.1 (unreleased)
-
- Fix "Unpin" button not showing up in overlayed widgets
- Minimum Qt version is now 5.15
* v1.4.0 (16 July 2021)
- No longer supports Qt versions less than 5.12

View File

@@ -2,7 +2,7 @@ Supported Qt versions and toolchains
=====================================
KDDockWidgets for QtQuick requires a C++17 capable compiler and either
Qt >= 5.15.0 or Qt >= 6.2.
Qt >= 5.15.2 or Qt >= 6.2.1
TROUBLESHOOTING

View File

@@ -146,12 +146,7 @@ your application whenever updating KDDW.
Supported Qt versions and toolchains
=====================================
KDDockWidgets requires Qt5 >= 5.12 or Qt6 >= 6.1.
The QtQuick support requires Qt5 >= 5.15 or Qt6 >= 6.1.
Regarding compilers, whatever toolchain is able to build Qt 5.9 should also be
fine. Note however that MSVC 2013 isn't supported anymore due to compiler crashes.
KDDockWidgets requires Qt 5.15.x or Qt6 >= 6.2.
Styling

View File

@@ -11,7 +11,7 @@ from conans import ConanFile, CMake, tools
class KDDockWidgetsConan(ConanFile):
name = "kddockwidgets"
version = "1.4.0"
version = "1.5.0"
default_user = "kdab"
default_channel = "stable"
license = ("https://raw.githubusercontent.com/KDAB/KDDockWidgets/master/LICENSES/GPL-2.0-only.txt",

View File

@@ -101,7 +101,7 @@ public:
*
* Example: kddockwidgets_example --central-widget
*/
Q_INVOKABLE void setPersistentCentralWidget(QWidgetOrQuick *widget);
Q_INVOKABLE void setPersistentCentralWidget(KDDockWidgets::QWidgetOrQuick *widget);
QWidgetOrQuick *persistentCentralWidget() const;
/**

View File

@@ -285,7 +285,7 @@ bool TitleBar::supportsMinimizeButton() const
bool TitleBar::supportsAutoHideButton() const
{
// Only dock widgets docked into the MainWindow can minimize
return m_supportsAutoHide && m_frame && m_frame->isInMainWindow();
return m_supportsAutoHide && m_frame && (m_frame->isInMainWindow() || m_frame->isOverlayed());
}
bool TitleBar::hasIcon() const

View File

@@ -69,7 +69,10 @@ static bool shouldBlacklistWarning(const QString &msg, const QString &category)
#ifdef KDDOCKWIDGETS_QTQUICK
// TODO: Fix later, not important right now
|| msg.contains(QLatin1String("Binding loop detected for property"))
|| msg.contains(QLatin1String("Implement me"))
|| msg.contains(QLatin1String("Implement me"))
// Ignore benign warning in Material style when deleting a dock widget. Should be fixed in Qt.
|| (msg.contains(QLatin1String("TypeError: Cannot read property")) && msg.contains(QLatin1String("Material")))
#endif
;
}

View File

@@ -619,28 +619,6 @@ void TestDocks::tst_restoreMaximizedState()
QCOMPARE(m->windowHandle()->windowState(), Qt::WindowMaximized);
}
void TestDocks::tst_restoreFloatingMaximizedState()
{
EnsureTopLevelsDeleted e;
KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_TitleBarHasMaximizeButton);
auto dock1 = createDockWidget("dock1", new MyWidget("one"));
const QRect originalNormalGeometry = dock1->floatingWindow()->normalGeometry();
dock1->floatingWindow()->showMaximized();
qDebug() << originalNormalGeometry;
QCOMPARE(dock1->floatingWindow()->windowHandle()->windowState(), Qt::WindowMaximized);
LayoutSaver saver;
const QByteArray saved = saver.serializeLayout();
saver.restoreLayout(saved);
QCOMPARE(dock1->floatingWindow()->windowHandle()->windowState(), Qt::WindowMaximized);
QCOMPARE(dock1->floatingWindow()->normalGeometry(), originalNormalGeometry);
dock1->floatingWindow()->showNormal();
QCOMPARE(dock1->floatingWindow()->normalGeometry(), originalNormalGeometry);
}
void TestDocks::tst_restoreFloatingMinimizedState()
{
EnsureTopLevelsDeleted e;
@@ -897,6 +875,31 @@ void TestDocks::tst_shutdown()
#ifdef KDDOCKWIDGETS_QTWIDGETS
void TestDocks::tst_restoreFloatingMaximizedState()
{
EnsureTopLevelsDeleted e;
KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_TitleBarHasMaximizeButton);
auto dock1 = createDockWidget("dock1", new MyWidget("one"));
const QRect originalNormalGeometry = dock1->floatingWindow()->normalGeometry();
dock1->floatingWindow()->showMaximized();
qDebug() << originalNormalGeometry;
QCOMPARE(dock1->floatingWindow()->windowHandle()->windowState(), Qt::WindowMaximized);
LayoutSaver saver;
const QByteArray saved = saver.serializeLayout();
saver.restoreLayout(saved);
QCOMPARE(dock1->floatingWindow()->windowHandle()->windowState(), Qt::WindowMaximized);
QCOMPARE(dock1->floatingWindow()->normalGeometry(), originalNormalGeometry);
dock1->floatingWindow()->showNormal();
QCOMPARE(dock1->floatingWindow()->normalGeometry(), originalNormalGeometry);
}
void TestDocks::tst_complex()
{
// Tests some anchors out of bounds I got
@@ -4132,12 +4135,14 @@ void TestDocks::tst_dragOverTitleBar()
DropArea *da = dock1->floatingWindow()->dropArea();
FloatingWindow *fw1 = dock1->floatingWindow();
FloatingWindow *fw2 = dock2->floatingWindow();
WindowBeingDragged wbd(fw2, fw2);
{
WindowBeingDragged wbd(fw2, fw2);
const QPoint titleBarPoint = fw1->titleBar()->mapToGlobal(QPoint(5, 5));
const QPoint titleBarPoint = fw1->titleBar()->mapToGlobal(QPoint(5, 5));
auto loc = da->hover(&wbd, titleBarPoint);
QCOMPARE(loc, DropIndicatorOverlayInterface::DropLocation_None);
auto loc = da->hover(&wbd, titleBarPoint);
QCOMPARE(loc, DropIndicatorOverlayInterface::DropLocation_None);
}
delete fw1;
delete fw2;
@@ -5253,6 +5258,31 @@ void TestDocks::tst_deleteOnCloseWhenOnSideBar()
QVERIFY(dock1);
}
void TestDocks::tst_sidebarOverlayShowsAutohide()
{
// Tests that overlayed widgets show the "Disable auto-hide" button
EnsureTopLevelsDeleted e;
KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_AutoHideSupport);
auto m1 = createMainWindow(QSize(1000, 1000), MainWindowOption_None, "MW1");
auto dw1 = new DockWidgetType(QStringLiteral("1"));
m1->addDockWidget(dw1, Location_OnBottom);
QVERIFY(dw1->titleBar()->supportsAutoHideButton());
m1->moveToSideBar(dw1);
m1->overlayOnSideBar(dw1);
QVERIFY(dw1->isOverlayed());
auto titleBar = dw1->titleBar();
QVERIFY(titleBar->isVisible());
QVERIFY(titleBar->supportsAutoHideButton());
delete dw1;
}
void TestDocks::tst_sidebarOverlayGetsHiddenOnClick()
{
EnsureTopLevelsDeleted e;

View File

@@ -91,7 +91,6 @@ private Q_SLOTS:
void tst_restoreEmpty();
void tst_restoreCentralFrame();
void tst_restoreMaximizedState();
void tst_restoreFloatingMaximizedState();
void tst_restoreFloatingMinimizedState();
void tst_restoreNonExistingDockWidget();
void tst_shutdown();
@@ -262,6 +261,7 @@ private Q_SLOTS:
void tst_restoreSideBar();
void tst_toggleActionOnSideBar();
void tst_deleteOnCloseWhenOnSideBar();
void tst_sidebarOverlayShowsAutohide();
void tst_sidebarOverlayGetsHiddenOnClick();
void tst_floatRemovesFromSideBar();
void tst_overlayedGeometryIsSaved();
@@ -282,6 +282,7 @@ private Q_SLOTS:
void tst_addToHiddenMainWindow();
void tst_maximumSizePolicy();
void tst_complex();
void tst_restoreFloatingMaximizedState();
#else
void tst_hoverShowsDropIndicators();
#endif