Extend qDebug functionality for QDockWidget

Add features and floating flag to QDockWidget debugging.
Debug dockwidget parents of a group window.

Task-number: QTBUG-118578
Task-number: QTBUG-118579
Change-Id: If2a6caacf5d02f9018c2a3073fdbc1de39bce1ee
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
Reviewed-by: Keith Kyzivat <keith.kyzivat@qt.io>
(cherry picked from commit bbeff2a3350dd3396400865525d509b784c2d93e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Axel Spoerl 2023-11-07 11:37:56 +01:00 committed by Qt Cherry-pick Bot
parent 8e437b7bcb
commit fd242e8cec
5 changed files with 43 additions and 1 deletions

View File

@ -172,13 +172,27 @@ QDockAreaLayoutItem
}
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, const QDockAreaLayoutItem *item)
{
QDebugStateSaver saver(dbg);
dbg.nospace();
return item ? dbg << *item : dbg << "QDockAreaLayoutItem(0x0)";
}
QDebug operator<<(QDebug dbg, const QDockAreaLayoutItem &item)
{
QDebugStateSaver saver(dbg);
dbg.nospace();
dbg << "QDockAreaLayoutItem(" << static_cast<const void *>(&item) << "->";
if (item.widgetItem) {
dbg << "widgetItem(" << item.widgetItem->widget() << ")";
QWidget *widget = item.widgetItem->widget();
if (auto *dockWidget = qobject_cast<QDockWidget *>(widget)) {
dbg << "widgetItem(" << dockWidget << ")";
} else if (auto *groupWindow = qobject_cast<QDockWidgetGroupWindow *>(widget)) {
dbg << "widgetItem(" << groupWindow << "->(" << groupWindow->dockWidgets() << "))";
} else {
dbg << "widgetItem(" << widget << ")";
}
} else if (item.subinfo) {
dbg << "subInfo(" << item.subinfo << "->(" << item.subinfo->item_list << ")";
} else if (item.placeHolderItem) {

View File

@ -75,6 +75,7 @@ struct Q_AUTOTEST_EXPORT QDockAreaLayoutItem
uint flags;
#ifndef QT_NO_DEBUG_STREAM
friend Q_AUTOTEST_EXPORT QDebug operator<<(QDebug dbg, const QDockAreaLayoutItem &item);
friend Q_AUTOTEST_EXPORT QDebug operator<<(QDebug dbg, const QDockAreaLayoutItem *item);
#endif
};

View File

@ -1816,6 +1816,27 @@ QWidget *QDockWidget::titleBarWidget() const
return layout->widgetForRole(QDockWidgetLayout::TitleBar);
}
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, const QDockWidget *dockWidget)
{
QDebugStateSaver saver(dbg);
dbg.nospace();
return dockWidget ? dbg << *dockWidget : dbg << "QDockWidget(0x0)";
}
QDebug operator<<(QDebug dbg, const QDockWidget &dockWidget)
{
QDebugStateSaver saver(dbg);
dbg.nospace();
dbg << "QDockWidget(" << static_cast<const void *>(&dockWidget);
dbg << "->(ObjectName=" << dockWidget.objectName();
dbg << "; floating=" << dockWidget.isFloating();
dbg << "; features=" << dockWidget.features();
dbg << ";))";
return dbg;
}
#endif // QT_NO_DEBUG_STREAM
QT_END_NAMESPACE
#include "qdockwidget.moc"

View File

@ -64,6 +64,11 @@ public:
inline bool isAreaAllowed(Qt::DockWidgetArea area) const
{ return (allowedAreas() & area) == area; }
#ifndef QT_NO_DEBUG_STREAM
friend Q_AUTOTEST_EXPORT QDebug operator<<(QDebug dbg, const QDockWidget &dockWidget);
friend Q_AUTOTEST_EXPORT QDebug operator<<(QDebug dbg, const QDockWidget *dockWidget);
#endif
#ifndef QT_NO_ACTION
QAction *toggleViewAction() const;
#endif

View File

@ -324,6 +324,7 @@ public:
void updateCurrentGapRect();
void restore();
void apply();
QList<QDockWidget *> dockWidgets() const { return findChildren<QDockWidget *>(); }
QRect currentGapRect;
QList<int> currentGapPos;