diff options
author | Eike Ziller <eike.ziller@qt.io> | 2017-08-14 14:11:09 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2017-08-14 14:11:09 +0000 |
commit | 89dbe978b154774cb2781fe4b48da958fb53b05c (patch) | |
tree | ec66efdd0d01d4797abb52e05e3f551232006284 | |
parent | 3e9ebc24be7f27cf918b814f0b377fc3eaea673d (diff) | |
parent | b5f49273b0fef12b061a68879ce20e56c53bdde1 (diff) |
Merge "Merge remote-tracking branch 'origin/4.3' into 4.4" into 4.4
8 files changed, 139 insertions, 9 deletions
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml index 82178c23a79..492cf2f6250 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml @@ -130,8 +130,6 @@ Item { exportMenuItem.enabled = !backendValue.isAttachedProperty() } - onAboutToHide: menuLoader.active = false - Controls.MenuItem { text: qsTr("Reset") onTriggered: { diff --git a/src/plugins/qmlprofiler/qmlprofiler.qbs b/src/plugins/qmlprofiler/qmlprofiler.qbs index 8bf7b5147b2..02a08fb6566 100644 --- a/src/plugins/qmlprofiler/qmlprofiler.qbs +++ b/src/plugins/qmlprofiler/qmlprofiler.qbs @@ -92,6 +92,7 @@ QtcPlugin { "qmlprofilerbindingloopsrenderpass_test.h", "qmlprofilerclientmanager_test.cpp", "qmlprofilerclientmanager_test.h", "qmlprofilerconfigwidget_test.cpp", "qmlprofilerconfigwidget_test.h", + "qmlprofilertraceview_test.cpp", "qmlprofilertraceview_test.h", ] } } diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp index ea89b6b6dc0..23dcfaf3f4e 100644 --- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp @@ -48,6 +48,7 @@ #include "tests/qmlprofilerbindingloopsrenderpass_test.h" #include "tests/qmlprofilerclientmanager_test.h" #include "tests/qmlprofilerconfigwidget_test.h" +#include "tests/qmlprofilertraceview_test.h" // Force QML Debugging to be enabled, so that we can selftest the profiler #define QT_QML_DEBUG_NO_WARNING @@ -141,6 +142,7 @@ QList<QObject *> QmlProfiler::Internal::QmlProfilerPlugin::createTestObjects() c tests << new QmlProfilerBindingLoopsRenderPassTest; tests << new QmlProfilerClientManagerTest; tests << new QmlProfilerConfigWidgetTest; + tests << new QmlProfilerTraceViewTest; tests << new QQmlEngine; // Trigger debug connector to be started #endif diff --git a/src/plugins/qmlprofiler/qmlprofilertraceview.cpp b/src/plugins/qmlprofiler/qmlprofilertraceview.cpp index a2a00b4f983..a7bf3fe4682 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceview.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertraceview.cpp @@ -115,13 +115,16 @@ QmlProfilerTraceView::QmlProfilerTraceView(QWidget *parent, QmlProfilerViewManag break; case QmlProfilerModelManager::ClearingData: d->m_zoomControl->clear(); - if (!d->m_suspendedModels.isEmpty()) - break; // Models are suspended already. AcquiringData was aborted. Q_FALLTHROUGH(); case QmlProfilerModelManager::AcquiringData: - // Temporarily remove the models, while we're changing them - d->m_suspendedModels = d->m_modelProxy->models(); - d->m_modelProxy->setModels(QVariantList()); + if (d->m_suspendedModels.isEmpty()) { + // Temporarily remove the models, while we're changing them + d->m_suspendedModels = d->m_modelProxy->models(); + d->m_modelProxy->setModels(QVariantList()); + } + // Otherwise models are suspended already. This can happen if either acquiring was + // aborted or we're doing a "restrict to range" which consists of a partial clearing and + // then re-acquiring of data. break; } }); @@ -309,6 +312,11 @@ bool QmlProfilerTraceView::isUsable() const #endif } +bool QmlProfilerTraceView::isSuspended() const +{ + return !d->m_suspendedModels.isEmpty(); +} + void QmlProfilerTraceView::changeEvent(QEvent *e) { if (e->type() == QEvent::EnabledChange) { diff --git a/src/plugins/qmlprofiler/qmlprofilertraceview.h b/src/plugins/qmlprofiler/qmlprofilertraceview.h index 2cc81c85366..79063ac2610 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceview.h +++ b/src/plugins/qmlprofiler/qmlprofilertraceview.h @@ -53,6 +53,7 @@ public: qint64 selectionEnd() const; void showContextMenu(QPoint position); bool isUsable() const; + bool isSuspended() const; public slots: void clear(); diff --git a/src/plugins/qmlprofiler/tests/qmlprofilertraceview_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilertraceview_test.cpp new file mode 100644 index 00000000000..a1ed887ce47 --- /dev/null +++ b/src/plugins/qmlprofiler/tests/qmlprofilertraceview_test.cpp @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** 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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "qmlprofilertraceview_test.h" +#include <QtTest> + +namespace QmlProfiler { +namespace Internal { + +QmlProfilerTraceViewTest::QmlProfilerTraceViewTest(QObject *parent) : + QObject(parent), traceView(nullptr, nullptr, &modelManager) +{ +} + +void QmlProfilerTraceViewTest::testStateChanges() +{ + // Standard acquire-process-clear work flow + modelManager.startAcquiring(); + QVERIFY(traceView.isSuspended()); + modelManager.acquiringDone(); + QVERIFY(!traceView.isSuspended()); + modelManager.clear(); + QVERIFY(!traceView.isSuspended()); + + // Restrict to range + modelManager.startAcquiring(); + QVERIFY(traceView.isSuspended()); + modelManager.acquiringDone(); + QVERIFY(!traceView.isSuspended()); + modelManager.restrictToRange(10, 14); + QVERIFY(!traceView.isSuspended()); + modelManager.restrictToRange(-1, -1); + QVERIFY(!traceView.isSuspended()); + modelManager.clear(); + QVERIFY(!traceView.isSuspended()); + + // Abort Acquiring + modelManager.startAcquiring(); + QVERIFY(traceView.isSuspended()); + modelManager.clear(); + QVERIFY(!traceView.isSuspended()); +} + +} // namespace Internal +} // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/tests/qmlprofilertraceview_test.h b/src/plugins/qmlprofiler/tests/qmlprofilertraceview_test.h new file mode 100644 index 00000000000..e4edd01938f --- /dev/null +++ b/src/plugins/qmlprofiler/tests/qmlprofilertraceview_test.h @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** 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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include <qmlprofiler/qmlprofilermodelmanager.h> +#include <qmlprofiler/qmlprofilertraceview.h> + +#include <QObject> + +namespace QmlProfiler { +namespace Internal { + +class QmlProfilerTraceViewTest : public QObject +{ + Q_OBJECT +public: + explicit QmlProfilerTraceViewTest(QObject *parent = nullptr); + +private slots: + void testStateChanges(); + +private: + QmlProfilerModelManager modelManager; + QmlProfilerTraceView traceView; +}; + +} // namespace Internal +} // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/tests/tests.pri b/src/plugins/qmlprofiler/tests/tests.pri index 6d976a2716c..feeda0cc407 100644 --- a/src/plugins/qmlprofiler/tests/tests.pri +++ b/src/plugins/qmlprofiler/tests/tests.pri @@ -14,7 +14,8 @@ SOURCES += \ $$PWD/qmlprofilerattachdialog_test.cpp \ $$PWD/qmlprofilerbindingloopsrenderpass_test.cpp \ $$PWD/qmlprofilerclientmanager_test.cpp \ - $$PWD/qmlprofilerconfigwidget_test.cpp + $$PWD/qmlprofilerconfigwidget_test.cpp \ + $$PWD/qmlprofilertraceview_test.cpp HEADERS += \ $$PWD/debugmessagesmodel_test.h \ @@ -32,4 +33,5 @@ HEADERS += \ $$PWD/qmlprofilerattachdialog_test.h \ $$PWD/qmlprofilerbindingloopsrenderpass_test.h \ $$PWD/qmlprofilerclientmanager_test.h \ - $$PWD/qmlprofilerconfigwidget_test.h + $$PWD/qmlprofilerconfigwidget_test.h \ + $$PWD/qmlprofilertraceview_test.h |