Replace logging category lcQpaDockWidgets in dock widget auto test

Logging category lcQpaDockWidgets was used in both dock widget test
and implementation. This dual use caused static builds to fail.

This patch replaces lcQpaDockWidgets with a test specific logging
category in tst_QDockWidget.

Pick-to: 6.4 6.3 6.2
Change-Id: I02cdfdaee9c1c1840126d803139b3d271aeac236
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Axel Spoerl 2022-08-24 21:33:09 +02:00
parent 15ccc7e499
commit b48364d49b

View File

@ -16,11 +16,7 @@
#include <QtGui/QPainter> #include <QtGui/QPainter>
#include <QLabel> #include <QLabel>
#ifdef QT_BUILD_INTERNAL Q_LOGGING_CATEGORY(lcTestDockWidget, "qt.widgets.tests.qdockwidget")
QT_BEGIN_NAMESPACE
Q_LOGGING_CATEGORY(lcQpaDockWidgets, "qt.widgets.dockwidgets");
QT_END_NAMESPACE
#endif
bool hasFeature(QDockWidget *dockwidget, QDockWidget::DockWidgetFeature feature) bool hasFeature(QDockWidget *dockwidget, QDockWidget::DockWidgetFeature feature)
{ return (dockwidget->features() & feature) == feature; } { return (dockwidget->features() & feature) == feature; }
@ -1184,12 +1180,12 @@ void tst_QDockWidget::moveDockWidget(QDockWidget* dw, QPoint to, QPoint from) co
// move and log // move and log
const QPoint source = dw->mapFromGlobal(from); const QPoint source = dw->mapFromGlobal(from);
const QPoint target = dw->mapFromGlobal(to); const QPoint target = dw->mapFromGlobal(to);
qCDebug(lcQpaDockWidgets) << "Move" << dw->objectName() << "from" << source; qCDebug(lcTestDockWidget) << "Move" << dw->objectName() << "from" << source;
qCDebug(lcQpaDockWidgets) << "Move" << dw->objectName() << "from" << from; qCDebug(lcTestDockWidget) << "Move" << dw->objectName() << "from" << from;
QTest::mousePress(dw, Qt::LeftButton, Qt::KeyboardModifiers(), source); QTest::mousePress(dw, Qt::LeftButton, Qt::KeyboardModifiers(), source);
QTest::mouseMove(dw, target); QTest::mouseMove(dw, target);
qCDebug(lcQpaDockWidgets) << "Move" << dw->objectName() << "to" << target; qCDebug(lcTestDockWidget) << "Move" << dw->objectName() << "to" << target;
qCDebug(lcQpaDockWidgets) << "Move" << dw->objectName() << "to" << to; qCDebug(lcTestDockWidget) << "Move" << dw->objectName() << "to" << to;
QTest::mouseRelease(dw, Qt::LeftButton, Qt::KeyboardModifiers(), target); QTest::mouseRelease(dw, Qt::LeftButton, Qt::KeyboardModifiers(), target);
QTest::qWait(waitingTime); QTest::qWait(waitingTime);
@ -1233,7 +1229,7 @@ void tst_QDockWidget::unplugAndResize(QMainWindow* mainWindow, QDockWidget* dw,
} }
// unplug and resize a dock Widget // unplug and resize a dock Widget
qCDebug(lcQpaDockWidgets) << "*** unplug and resize" << dw->objectName(); qCDebug(lcTestDockWidget) << "*** unplug and resize" << dw->objectName();
QPoint pos1 = dw->mapToGlobal(dw->rect().center()); QPoint pos1 = dw->mapToGlobal(dw->rect().center());
pos1.rx() += mx; pos1.rx() += mx;
pos1.ry() += my; pos1.ry() += my;
@ -1241,10 +1237,10 @@ void tst_QDockWidget::unplugAndResize(QMainWindow* mainWindow, QDockWidget* dw,
//QTest::mousePress(dw, Qt::LeftButton, Qt::KeyboardModifiers(), dw->mapFromGlobal(pos1)); //QTest::mousePress(dw, Qt::LeftButton, Qt::KeyboardModifiers(), dw->mapFromGlobal(pos1));
QTRY_VERIFY(dw->isFloating()); QTRY_VERIFY(dw->isFloating());
qCDebug(lcQpaDockWidgets) << "Resizing" << dw->objectName() << "to" << size; qCDebug(lcTestDockWidget) << "Resizing" << dw->objectName() << "to" << size;
dw->setFixedSize(size); dw->setFixedSize(size);
QTest::qWait(waitingTime); QTest::qWait(waitingTime);
qCDebug(lcQpaDockWidgets) << "Move" << dw->objectName() << "to its home" << dw->mapFromGlobal(home); qCDebug(lcTestDockWidget) << "Move" << dw->objectName() << "to its home" << dw->mapFromGlobal(home);
dw->move(home); dw->move(home);
//moveDockWidget(dw, home); //moveDockWidget(dw, home);
} }
@ -1256,13 +1252,13 @@ bool tst_QDockWidget::checkFloatingTabs(QMainWindow* mainWindow, QPointer<QDockW
// Check if mainWindow has a floatingTab child // Check if mainWindow has a floatingTab child
ftabs = mainWindow->findChild<QDockWidgetGroupWindow*>(); ftabs = mainWindow->findChild<QDockWidgetGroupWindow*>();
if (ftabs.isNull()) { if (ftabs.isNull()) {
qCDebug(lcQpaDockWidgets) << "MainWindow has no DockWidgetGroupWindow" << mainWindow; qCDebug(lcTestDockWidget) << "MainWindow has no DockWidgetGroupWindow" << mainWindow;
return false; return false;
} }
QTabBar* tab = ftabs->findChild<QTabBar*>(); QTabBar* tab = ftabs->findChild<QTabBar*>();
if (!tab) { if (!tab) {
qCDebug(lcQpaDockWidgets) << "DockWidgetGroupWindow has no tab bar" << ftabs; qCDebug(lcTestDockWidget) << "DockWidgetGroupWindow has no tab bar" << ftabs;
return false; return false;
} }
@ -1271,24 +1267,24 @@ bool tst_QDockWidget::checkFloatingTabs(QMainWindow* mainWindow, QPointer<QDockW
if (dwList.count() > 0) if (dwList.count() > 0)
{ {
if (dwList.count() != children.count()) { if (dwList.count() != children.count()) {
qCDebug(lcQpaDockWidgets) << "Expected DockWidgetGroupWindow children:" << dwList.count() qCDebug(lcTestDockWidget) << "Expected DockWidgetGroupWindow children:" << dwList.count()
<< "Children found:" << children.count(); << "Children found:" << children.count();
qCDebug(lcQpaDockWidgets) << "Expected:" << dwList; qCDebug(lcTestDockWidget) << "Expected:" << dwList;
qCDebug(lcQpaDockWidgets) << "Found in" << ftabs << ":" << children.count(); qCDebug(lcTestDockWidget) << "Found in" << ftabs << ":" << children.count();
return false; return false;
} }
for (const QDockWidget* child : dwList) { for (const QDockWidget* child : dwList) {
if (!children.contains(child)) { if (!children.contains(child)) {
qCDebug(lcQpaDockWidgets) << "Expected child" << child << "not found in" << children; qCDebug(lcTestDockWidget) << "Expected child" << child << "not found in" << children;
return false; return false;
} }
} }
} }
// Always select first tab position // Always select first tab position
qCDebug(lcQpaDockWidgets) << "click on first tab"; qCDebug(lcTestDockWidget) << "click on first tab";
QTest::mouseClick(tab, Qt::LeftButton, Qt::KeyboardModifiers(), tab->tabRect(0).center()); QTest::mouseClick(tab, Qt::LeftButton, Qt::KeyboardModifiers(), tab->tabRect(0).center());
return true; return true;
} }
@ -1339,9 +1335,9 @@ void tst_QDockWidget::floatingTabs()
unplugAndResize(mainWindow, d2, home2(mainWindow), size2(mainWindow)); unplugAndResize(mainWindow, d2, home2(mainWindow), size2(mainWindow));
// Test plugging // Test plugging
qCDebug(lcQpaDockWidgets) << "*** move d1 dock over d2 dock ***"; qCDebug(lcTestDockWidget) << "*** move d1 dock over d2 dock ***";
qCDebug(lcQpaDockWidgets) << "**********(test plugging)*************"; qCDebug(lcTestDockWidget) << "**********(test plugging)*************";
qCDebug(lcQpaDockWidgets) << "Move d1 over d2"; qCDebug(lcTestDockWidget) << "Move d1 over d2";
moveDockWidget(d1, d2->mapToGlobal(d2->rect().center())); moveDockWidget(d1, d2->mapToGlobal(d2->rect().center()));
// Both dock widgets must no longer be floating // Both dock widgets must no longer be floating
@ -1366,13 +1362,13 @@ void tst_QDockWidget::floatingTabs()
// limitation: QTest cannot handle drag to unplug. // limitation: QTest cannot handle drag to unplug.
// reason: Object under mouse mutates from QTabBar::tab to QDockWidget. QTest cannot handle that. // reason: Object under mouse mutates from QTabBar::tab to QDockWidget. QTest cannot handle that.
// => click float button to unplug // => click float button to unplug
qCDebug(lcQpaDockWidgets) << "*** test unplugging from floating dock ***"; qCDebug(lcTestDockWidget) << "*** test unplugging from floating dock ***";
// QDockWidget must have a QAbstractButton with object name "qt_dockwidget_floatbutton" // QDockWidget must have a QAbstractButton with object name "qt_dockwidget_floatbutton"
QAbstractButton* floatButton = d1->findChild<QAbstractButton*>("qt_dockwidget_floatbutton", Qt::FindDirectChildrenOnly); QAbstractButton* floatButton = d1->findChild<QAbstractButton*>("qt_dockwidget_floatbutton", Qt::FindDirectChildrenOnly);
QTRY_VERIFY(floatButton != nullptr); QTRY_VERIFY(floatButton != nullptr);
QPoint pos1 = floatButton->rect().center(); QPoint pos1 = floatButton->rect().center();
qCDebug(lcQpaDockWidgets) << "unplug d1" << pos1; qCDebug(lcTestDockWidget) << "unplug d1" << pos1;
QTest::mouseClick(floatButton, Qt::LeftButton, Qt::KeyboardModifiers(), pos1); QTest::mouseClick(floatButton, Qt::LeftButton, Qt::KeyboardModifiers(), pos1);
QTest::qWait(waitingTime); QTest::qWait(waitingTime);
@ -1381,14 +1377,14 @@ void tst_QDockWidget::floatingTabs()
QTRY_VERIFY(!d2->isFloating()); QTRY_VERIFY(!d2->isFloating());
// Plug back into dock areas // Plug back into dock areas
qCDebug(lcQpaDockWidgets) << "*** test plugging back to dock areas ***"; qCDebug(lcTestDockWidget) << "*** test plugging back to dock areas ***";
qCDebug(lcQpaDockWidgets) << "Move d1 to left dock"; qCDebug(lcTestDockWidget) << "Move d1 to left dock";
//moveDockWidget(d1, d1->mapFrom(MainWindow, dockPoint(MainWindow, Qt::LeftDockWidgetArea))); //moveDockWidget(d1, d1->mapFrom(MainWindow, dockPoint(MainWindow, Qt::LeftDockWidgetArea)));
moveDockWidget(d1, dockPoint(mainWindow, Qt::LeftDockWidgetArea)); moveDockWidget(d1, dockPoint(mainWindow, Qt::LeftDockWidgetArea));
qCDebug(lcQpaDockWidgets) << "Move d2 to right dock"; qCDebug(lcTestDockWidget) << "Move d2 to right dock";
moveDockWidget(d2, dockPoint(mainWindow, Qt::RightDockWidgetArea)); moveDockWidget(d2, dockPoint(mainWindow, Qt::RightDockWidgetArea));
qCDebug(lcQpaDockWidgets) << "Waiting" << waitBeforeClose << "ms before plugging back."; qCDebug(lcTestDockWidget) << "Waiting" << waitBeforeClose << "ms before plugging back.";
QTest::qWait(waitBeforeClose); QTest::qWait(waitBeforeClose);
// Both dock widgets must no longer be floating // Both dock widgets must no longer be floating
@ -1400,7 +1396,7 @@ void tst_QDockWidget::floatingTabs()
QTRY_VERIFY(ftabs.isNull()); QTRY_VERIFY(ftabs.isNull());
// Check if paths are consistent // Check if paths are consistent
qCDebug(lcQpaDockWidgets) << "Checking path consistency" << layout->layoutState.indexOf(d1) << layout->layoutState.indexOf(d2); qCDebug(lcTestDockWidget) << "Checking path consistency" << layout->layoutState.indexOf(d1) << layout->layoutState.indexOf(d2);
// Path1 must be identical // Path1 must be identical
QTRY_VERIFY(path1 == layout->layoutState.indexOf(d1)); QTRY_VERIFY(path1 == layout->layoutState.indexOf(d1));
@ -1430,14 +1426,14 @@ void tst_QDockWidget::hideAndShow()
std::unique_ptr<QMainWindow> up_mainWindow(mainWindow); std::unique_ptr<QMainWindow> up_mainWindow(mainWindow);
// Check hiding of docked widgets // Check hiding of docked widgets
qCDebug(lcQpaDockWidgets) << "Hiding mainWindow with plugged dock widgets" << mainWindow; qCDebug(lcTestDockWidget) << "Hiding mainWindow with plugged dock widgets" << mainWindow;
mainWindow->hide(); mainWindow->hide();
QXCBVERIFY(!mainWindow->isVisible()); QXCBVERIFY(!mainWindow->isVisible());
QXCBVERIFY(!d1->isVisible()); QXCBVERIFY(!d1->isVisible());
QXCBVERIFY(!d2->isVisible()); QXCBVERIFY(!d2->isVisible());
// Check showing everything again // Check showing everything again
qCDebug(lcQpaDockWidgets) << "Showing mainWindow with plugged dock widgets" << mainWindow; qCDebug(lcTestDockWidget) << "Showing mainWindow with plugged dock widgets" << mainWindow;
mainWindow->show(); mainWindow->show();
QXCBVERIFY(QTest::qWaitForWindowActive(mainWindow)); QXCBVERIFY(QTest::qWaitForWindowActive(mainWindow));
QXCBVERIFY(QTest::qWaitForWindowExposed(mainWindow)); QXCBVERIFY(QTest::qWaitForWindowExposed(mainWindow));
@ -1458,7 +1454,7 @@ void tst_QDockWidget::hideAndShow()
unplugAndResize(mainWindow, d2, home2(mainWindow), size2(mainWindow)); unplugAndResize(mainWindow, d2, home2(mainWindow), size2(mainWindow));
// Check hiding of undocked widgets // Check hiding of undocked widgets
qCDebug(lcQpaDockWidgets) << "Hiding mainWindow with unplugged dock widgets" << mainWindow; qCDebug(lcTestDockWidget) << "Hiding mainWindow with unplugged dock widgets" << mainWindow;
mainWindow->hide(); mainWindow->hide();
QTRY_VERIFY(!mainWindow->isVisible()); QTRY_VERIFY(!mainWindow->isVisible());
QTRY_VERIFY(d1->isVisible()); QTRY_VERIFY(d1->isVisible());
@ -1468,7 +1464,7 @@ void tst_QDockWidget::hideAndShow()
QTRY_VERIFY(!d1->isVisible()); QTRY_VERIFY(!d1->isVisible());
QTRY_VERIFY(!d2->isVisible()); QTRY_VERIFY(!d2->isVisible());
qCDebug(lcQpaDockWidgets) << "Waiting" << waitBeforeClose << "ms before closing."; qCDebug(lcTestDockWidget) << "Waiting" << waitBeforeClose << "ms before closing.";
QTest::qWait(waitBeforeClose); QTest::qWait(waitBeforeClose);
#else #else
QSKIP("test requires -developer-build option"); QSKIP("test requires -developer-build option");
@ -1492,7 +1488,7 @@ void tst_QDockWidget::closeAndDelete()
unplugAndResize(mainWindow, d2, home2(mainWindow), size2(mainWindow)); unplugAndResize(mainWindow, d2, home2(mainWindow), size2(mainWindow));
// Create a floating tab and unplug it again // Create a floating tab and unplug it again
qCDebug(lcQpaDockWidgets) << "Move d1 over d2"; qCDebug(lcTestDockWidget) << "Move d1 over d2";
moveDockWidget(d1, d2->mapToGlobal(d2->rect().center())); moveDockWidget(d1, d2->mapToGlobal(d2->rect().center()));
// Both dock widgets must no longer be floating // Both dock widgets must no longer be floating
@ -1519,7 +1515,7 @@ void tst_QDockWidget::closeAndDelete()
// Fallback timer to report event loop still running // Fallback timer to report event loop still running
QTimer::singleShot(100, this, [&eventLoopStopped] { QTimer::singleShot(100, this, [&eventLoopStopped] {
qCDebug(lcQpaDockWidgets) << "Last dock widget hasn't shout down event loop!"; qCDebug(lcTestDockWidget) << "Last dock widget hasn't shout down event loop!";
eventLoopStopped = false; eventLoopStopped = false;
QApplication::quit(); QApplication::quit();
}); });
@ -1529,7 +1525,7 @@ void tst_QDockWidget::closeAndDelete()
QTRY_VERIFY(eventLoopStopped); QTRY_VERIFY(eventLoopStopped);
// Check heap cleanup // Check heap cleanup
qCDebug(lcQpaDockWidgets) << "Deleting mainWindow"; qCDebug(lcTestDockWidget) << "Deleting mainWindow";
up_mainWindow.reset(); up_mainWindow.reset();
QTRY_VERIFY(d1.isNull()); QTRY_VERIFY(d1.isNull());
QTRY_VERIFY(d2.isNull()); QTRY_VERIFY(d2.isNull());
@ -1579,23 +1575,23 @@ void tst_QDockWidget::dockPermissions()
QTRY_VERIFY(mainWindow->findChild<QDockWidgetGroupWindow*>() == nullptr); QTRY_VERIFY(mainWindow->findChild<QDockWidgetGroupWindow*>() == nullptr);
// Test unpermitted dock areas with d2 // Test unpermitted dock areas with d2
qCDebug(lcQpaDockWidgets) << "*** move d2 to forbidden docks ***"; qCDebug(lcTestDockWidget) << "*** move d2 to forbidden docks ***";
// Move d2 to non allowed dock areas and verify it remains floating // Move d2 to non allowed dock areas and verify it remains floating
qCDebug(lcQpaDockWidgets) << "Move d2 to top dock"; qCDebug(lcTestDockWidget) << "Move d2 to top dock";
moveDockWidget(d2, dockPoint(mainWindow, Qt::TopDockWidgetArea)); moveDockWidget(d2, dockPoint(mainWindow, Qt::TopDockWidgetArea));
QTRY_VERIFY(d2->isFloating()); QTRY_VERIFY(d2->isFloating());
qCDebug(lcQpaDockWidgets) << "Move d2 to left dock"; qCDebug(lcTestDockWidget) << "Move d2 to left dock";
//moveDockWidget(d2, d2->mapFrom(MainWindow, dockPoint(MainWindow, Qt::LeftDockWidgetArea))); //moveDockWidget(d2, d2->mapFrom(MainWindow, dockPoint(MainWindow, Qt::LeftDockWidgetArea)));
moveDockWidget(d2, dockPoint(mainWindow, Qt::LeftDockWidgetArea)); moveDockWidget(d2, dockPoint(mainWindow, Qt::LeftDockWidgetArea));
QTRY_VERIFY(d2->isFloating()); QTRY_VERIFY(d2->isFloating());
qCDebug(lcQpaDockWidgets) << "Move d2 to bottom dock"; qCDebug(lcTestDockWidget) << "Move d2 to bottom dock";
moveDockWidget(d2, dockPoint(mainWindow, Qt::BottomDockWidgetArea)); moveDockWidget(d2, dockPoint(mainWindow, Qt::BottomDockWidgetArea));
QTRY_VERIFY(d2->isFloating()); QTRY_VERIFY(d2->isFloating());
qCDebug(lcQpaDockWidgets) << "Waiting" << waitBeforeClose << "ms before closing."; qCDebug(lcTestDockWidget) << "Waiting" << waitBeforeClose << "ms before closing.";
QTest::qWait(waitBeforeClose); QTest::qWait(waitBeforeClose);
#else #else
QSKIP("test requires -developer-build option"); QSKIP("test requires -developer-build option");