Streamline debug output of QMainWindowLayout.

Remove define Q_DEBUG_MAINWINDOW_LAYOUT and dependent exported
function, introduce operators for QDebug.

Task-number: QTBUG-38761
Change-Id: I7794cffbfaea20ead0eac9e8ace4e3a910c50f95
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
This commit is contained in:
Friedemann Kleint 2014-07-08 13:02:04 +02:00
parent 32e2d8e58c
commit cd89ec830d
2 changed files with 47 additions and 45 deletions

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtWidgets module of the Qt Toolkit.
@ -62,7 +62,10 @@
#include <qmap.h>
#include <qtimer.h>
#include <qdebug.h>
#ifndef QT_NO_DEBUG_STREAM
# include <qdebug.h>
# include <qtextstream.h>
#endif
#include <private/qapplication_p.h>
#include <private/qlayoutengine_p.h>
@ -71,23 +74,17 @@
# include <private/qt_cocoa_helpers_mac_p.h>
#endif
#ifdef QT_NO_DOCKWIDGET
QT_BEGIN_NAMESPACE
#ifndef QT_NO_DOCKWIDGET
extern QMainWindowLayout *qt_mainwindow_layout(const QMainWindow *window);
#endif
#ifdef Q_DEBUG_MAINWINDOW_LAYOUT
# include <QTextStream>
#endif
QT_BEGIN_NAMESPACE
/******************************************************************************
** debug
*/
#if defined(Q_DEBUG_MAINWINDOW_LAYOUT) && !defined(QT_NO_DOCKWIDGET)
static QTextStream qout(stderr, QIODevice::WriteOnly);
#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_DEBUG_STREAM)
static void dumpLayout(QTextStream &qout, const QDockAreaLayoutInfo &layout, QString indent);
@ -101,7 +98,7 @@ static void dumpLayout(QTextStream &qout, const QDockAreaLayoutItem &item, QStri
if (item.widgetItem != 0) {
qout << indent << "widget: "
<< item.widgetItem->widget()->metaObject()->className()
<< ' ' << item.widgetItem->widget()->windowTitle() << '\n';
<< " \"" << item.widgetItem->widget()->windowTitle() << "\"\n";
} else if (item.subinfo != 0) {
qout << indent << "subinfo:\n";
dumpLayout(qout, *item.subinfo, indent + QLatin1String(" "));
@ -117,16 +114,17 @@ static void dumpLayout(QTextStream &qout, const QDockAreaLayoutItem &item, QStri
<< " rect:" << r.x() << ',' << r.y() << ' '
<< r.width() << 'x' << r.height() << '\n';
}
qout.flush();
}
static void dumpLayout(QTextStream &qout, const QDockAreaLayoutInfo &layout, QString indent)
{
const QSize minSize = layout.minimumSize();
qout << indent << "QDockAreaLayoutInfo: "
<< layout.rect.left() << ','
<< layout.rect.top() << ' '
<< layout.rect.width() << 'x'
<< layout.rect.height()
<< " min size: " << minSize.width() << ',' << minSize.height()
<< " orient:" << layout.o
<< " tabbed:" << layout.tabbed
<< " tbshape:" << layout.tabBarShape << '\n';
@ -137,36 +135,42 @@ static void dumpLayout(QTextStream &qout, const QDockAreaLayoutInfo &layout, QSt
qout << indent << "Item: " << i << '\n';
dumpLayout(qout, layout.item_list.at(i), indent + QLatin1String(" "));
}
qout.flush();
};
}
static void dumpLayout(QTextStream &qout, const QDockAreaLayout &layout, QString indent)
static void dumpLayout(QTextStream &qout, const QDockAreaLayout &layout)
{
qout << indent << "QDockAreaLayout: "
qout << "QDockAreaLayout: "
<< layout.rect.left() << ','
<< layout.rect.top() << ' '
<< layout.rect.width() << 'x'
<< layout.rect.height() << '\n';
qout << indent << "TopDockArea:\n";
dumpLayout(qout, layout.docks[QInternal::TopDock], indent + QLatin1String(" "));
qout << indent << "LeftDockArea:\n";
dumpLayout(qout, layout.docks[QInternal::LeftDock], indent + QLatin1String(" "));
qout << indent << "RightDockArea:\n";
dumpLayout(qout, layout.docks[QInternal::RightDock], indent + QLatin1String(" "));
qout << indent << "BottomDockArea:\n";
dumpLayout(qout, layout.docks[QInternal::BottomDock], indent + QLatin1String(" "));
qout.flush();
};
void qt_dumpLayout(QTextStream &qout, QMainWindow *window)
{
QMainWindowLayout *layout = qt_mainwindow_layout(window);
dumpLayout(qout, layout->layoutState.dockAreaLayout, QString());
qout << "TopDockArea:\n";
dumpLayout(qout, layout.docks[QInternal::TopDock], QLatin1String(" "));
qout << "LeftDockArea:\n";
dumpLayout(qout, layout.docks[QInternal::LeftDock], QLatin1String(" "));
qout << "RightDockArea:\n";
dumpLayout(qout, layout.docks[QInternal::RightDock], QLatin1String(" "));
qout << "BottomDockArea:\n";
dumpLayout(qout, layout.docks[QInternal::BottomDock], QLatin1String(" "));
}
#endif // Q_DEBUG_MAINWINDOW_LAYOUT && !QT_NO_DOCKWIDGET
QDebug operator<<(QDebug debug, const QDockAreaLayout &layout)
{
QString s;
QTextStream str(&s);
dumpLayout(str, layout);
debug << s;
return debug;
}
QDebug operator<<(QDebug debug, const QMainWindowLayout *layout)
{
debug << layout->layoutState.dockAreaLayout;
return debug;
}
#endif // !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_DEBUG)
/******************************************************************************
** QMainWindowLayoutState

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtWidgets module of the Qt Toolkit.
@ -68,15 +68,6 @@
#include "qdockarealayout_p.h"
#include "qtoolbararealayout_p.h"
//#define Q_DEBUG_MAINWINDOW_LAYOUT
#if defined(Q_DEBUG_MAINWINDOW_LAYOUT) && !defined(QT_NO_DOCKWIDGET)
QT_BEGIN_NAMESPACE
class QTextStream;
Q_WIDGETS_EXPORT void qt_dumpLayout(QTextStream &qout, QMainWindow *window);
QT_END_NAMESPACE
#endif // Q_DEBUG_MAINWINDOW_LAYOUT && !QT_NO_DOCKWIDGET
#ifdef Q_WS_MAC
// Forward defs to make avoid including Carbon.h (faster compile you know ;).
struct OpaqueHIObjectRef;
@ -344,6 +335,13 @@ public:
#endif // Q_WS_MAC
};
#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_DEBUG_STREAM)
class QDebug;
QDebug operator<<(QDebug debug, const QDockAreaLayout &layout);
QDebug operator<<(QDebug debug, const QMainWindowLayout *layout);
#endif
QT_END_NAMESPACE
#endif // QT_NO_MAINWINDOW