diff options
author | Mitch Curtis <mitch.curtis@qt.io> | 2018-03-21 15:08:42 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-03-23 16:51:31 +0000 |
commit | a064824341375206603f794e2b8d8b1f87f016a8 (patch) | |
tree | 06a045723506d6bf4879f8dcd5b10dcc91c558e9 | |
parent | 5178f6269418d731efe6bec7bc541f21fdd6d7f4 (diff) |
Add QQuickContentItem to produce more useful debug output
With the following code:
ApplicationWindow {
Component.onCompleted: print(contentItem)
}
Before:
QQuickItem(0x16043e52600)
After:
QQuickContentItem(0x28a89b96440, "ApplicationWindow")
QQuickWindow has a similar concept (QQuickRootItem).
Change-Id: I6504b62c69cfd7d9036d5c200a65542b953bc7bc
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
-rw-r--r-- | src/quicktemplates2/qquickapplicationwindow.cpp | 3 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontentitem.cpp | 53 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontentitem_p.h | 69 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpane.cpp | 4 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpopupitem.cpp | 4 | ||||
-rw-r--r-- | src/quicktemplates2/quicktemplates2.pri | 2 |
6 files changed, 132 insertions, 3 deletions
diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp index edbc9e91..97624b9d 100644 --- a/src/quicktemplates2/qquickapplicationwindow.cpp +++ b/src/quicktemplates2/qquickapplicationwindow.cpp @@ -35,6 +35,7 @@ ****************************************************************************/ #include "qquickapplicationwindow_p.h" +#include "qquickcontentitem_p.h" #include "qquickoverlay_p.h" #include "qquickpopup_p_p.h" #include "qquickcontrol_p_p.h" @@ -584,7 +585,7 @@ QQuickItem *QQuickApplicationWindow::contentItem() const { QQuickApplicationWindowPrivate *d = const_cast<QQuickApplicationWindowPrivate *>(d_func()); if (!d->contentItem) { - d->contentItem = new QQuickItem(QQuickWindow::contentItem()); + d->contentItem = new QQuickContentItem(QStringLiteral("ApplicationWindow"), QQuickWindow::contentItem()); d->contentItem->setFlag(QQuickItem::ItemIsFocusScope); d->contentItem->setFocus(true); d->relayout(); diff --git a/src/quicktemplates2/qquickcontentitem.cpp b/src/quicktemplates2/qquickcontentitem.cpp new file mode 100644 index 00000000..286e7209 --- /dev/null +++ b/src/quicktemplates2/qquickcontentitem.cpp @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qquickcontentitem_p.h" + +QT_BEGIN_NAMESPACE + +/*! + \internal + + Helper class that aids debugging by producing more useful debugging output. +*/ + +QQuickContentItem::QQuickContentItem(const QString &objectName, QQuickItem *parent) + : QQuickItem(parent) +{ + setObjectName(objectName); +} + +QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickcontentitem_p.h b/src/quicktemplates2/qquickcontentitem_p.h new file mode 100644 index 00000000..3babc7bb --- /dev/null +++ b/src/quicktemplates2/qquickcontentitem_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUICKCONTENTITEM_P_H +#define QQUICKCONTENTITEM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtQuick/qquickitem.h> +#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> + +QT_BEGIN_NAMESPACE + +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickContentItem : public QQuickItem +{ + Q_OBJECT + +public: + explicit QQuickContentItem(const QString &objectName, QQuickItem *parent = nullptr); + +private: + Q_DISABLE_COPY(QQuickContentItem) +}; + +QT_END_NAMESPACE + +#endif // QQUICKCONTENTITEM_P_H diff --git a/src/quicktemplates2/qquickpane.cpp b/src/quicktemplates2/qquickpane.cpp index 60f27159..d4e1afc7 100644 --- a/src/quicktemplates2/qquickpane.cpp +++ b/src/quicktemplates2/qquickpane.cpp @@ -36,6 +36,7 @@ #include "qquickpane_p.h" #include "qquickpane_p_p.h" +#include "qquickcontentitem_p.h" QT_BEGIN_NAMESPACE @@ -122,7 +123,8 @@ QQuickItem *QQuickPanePrivate::getContentItem() Q_Q(QQuickPane); if (QQuickItem *item = QQuickControlPrivate::getContentItem()) return item; - return new QQuickItem(q); + + return new QQuickContentItem(QStringLiteral("Pane"), q); } void QQuickPanePrivate::addImplicitSizeListener(QQuickItem *item) diff --git a/src/quicktemplates2/qquickpopupitem.cpp b/src/quicktemplates2/qquickpopupitem.cpp index f89b057d..c0a00292 100644 --- a/src/quicktemplates2/qquickpopupitem.cpp +++ b/src/quicktemplates2/qquickpopupitem.cpp @@ -38,6 +38,7 @@ #include "qquickapplicationwindow_p.h" #include "qquickshortcutcontext_p_p.h" #include "qquickcontrol_p_p.h" +#include "qquickcontentitem_p.h" #include "qquickpopup_p_p.h" #include "qquickdeferredexecute_p_p.h" @@ -113,7 +114,8 @@ QQuickItem *QQuickPopupItemPrivate::getContentItem() Q_Q(QQuickPopupItem); if (QQuickItem *item = QQuickControlPrivate::getContentItem()) return item; - return new QQuickItem(q); + + return new QQuickContentItem(QStringLiteral("Popup"), q); } static inline QString contentItemName() { return QStringLiteral("contentItem"); } diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri index 425b3c8f..8d90ab37 100644 --- a/src/quicktemplates2/quicktemplates2.pri +++ b/src/quicktemplates2/quicktemplates2.pri @@ -15,6 +15,7 @@ HEADERS += \ $$PWD/qquickcombobox_p.h \ $$PWD/qquickcontainer_p.h \ $$PWD/qquickcontainer_p_p.h \ + $$PWD/qquickcontentitem_p.h \ $$PWD/qquickcontrol_p.h \ $$PWD/qquickcontrol_p_p.h \ $$PWD/qquickdeferredexecute_p_p.h \ @@ -108,6 +109,7 @@ SOURCES += \ $$PWD/qquickcheckdelegate.cpp \ $$PWD/qquickcombobox.cpp \ $$PWD/qquickcontainer.cpp \ + $$PWD/qquickcontentitem.cpp \ $$PWD/qquickcontrol.cpp \ $$PWD/qquickdeferredexecute.cpp \ $$PWD/qquickdelaybutton.cpp \ |