diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-02-03 16:17:19 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-02-03 16:51:05 +0000 |
commit | c0637b8283ec884cad6aa8119f1f99d010419df5 (patch) | |
tree | 5354d6adfedc4fe79049326bcf26f9a60b7e1c49 /src/plugins/qmldesigner/components/timelineeditor | |
parent | c7d8b9b01c140a44abf2c93a4354ac0f66a68590 (diff) |
QmlDesigner: Shorten life time of AnimationCurveDialog
The AnimationCurveDialog is now always deleted when closed.
This ensures that Qt Creator is shut down properly.
Task-number: QDS-1525
Change-Id: I8630648e1d558bb9ed9823756c99fbbf38f8e353
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/components/timelineeditor')
-rw-r--r-- | src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.cpp | 31 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.h | 5 |
2 files changed, 26 insertions, 10 deletions
diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.cpp index 4c4e1e38f0..20ac9e22cd 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.cpp @@ -104,10 +104,8 @@ QAction *createAction(const Core::Id &id, TimelineToolBar::TimelineToolBar(QWidget *parent) : QToolBar(parent) , m_grp() - , m_dialog(Core::ICore::dialogParent()) , m_curveModel(new AnimationCurveEditorModel(0., 500.)) { - m_dialog.setModel(m_curveModel); connect(m_curveModel, &AnimationCurveEditorModel::currentFrameChanged, this, @@ -128,7 +126,8 @@ void TimelineToolBar::reset() if (recording()) m_recording->setChecked(false); - m_curveModel->reset({}); + if (m_animatioCurveDialog) + m_curveModel->reset({}); } bool TimelineToolBar::recording() const @@ -173,7 +172,8 @@ void TimelineToolBar::setCurrentTimeline(const QmlTimeline &timeline) setStartFrame(timeline.startKeyframe()); setEndFrame(timeline.endKeyframe()); m_timelineLabel->setText(timeline.modelNode().id()); - m_curveModel->setTimeline(timeline); + if (m_animatioCurveDialog) + m_curveModel->setTimeline(timeline); } else { m_timelineLabel->setText(""); } @@ -181,7 +181,8 @@ void TimelineToolBar::setCurrentTimeline(const QmlTimeline &timeline) void TimelineToolBar::setStartFrame(qreal frame) { - m_curveModel->setMinimumTime(frame); + if (m_animatioCurveDialog) + m_curveModel->setMinimumTime(frame); auto text = QString::number(frame, 'f', 0); m_firstFrame->setText(text); @@ -190,7 +191,8 @@ void TimelineToolBar::setStartFrame(qreal frame) void TimelineToolBar::setCurrentFrame(qreal frame) { - m_curveModel->setCurrentFrame(std::round(frame)); + if (m_animatioCurveDialog) + m_curveModel->setCurrentFrame(std::round(frame)); auto text = QString::number(frame, 'f', 0); m_currentFrame->setText(text); @@ -198,7 +200,8 @@ void TimelineToolBar::setCurrentFrame(qreal frame) void TimelineToolBar::setEndFrame(qreal frame) { - m_curveModel->setMaximumTime(frame); + if (m_animatioCurveDialog) + m_curveModel->setMaximumTime(frame); auto text = QString::number(frame, 'f', 0); m_lastFrame->setText(text); @@ -232,9 +235,10 @@ void TimelineToolBar::openAnimationCurveEditor() timeline = tlv->timelineForState(tlv->currentState()); } - m_dialog.refresh(); + ensureAnimationCurveDialog(); + m_animatioCurveDialog->refresh(); m_curveModel->setTimeline(timeline); - m_dialog.show(); + m_animatioCurveDialog->show(); } void TimelineToolBar::updateCurve(DesignTools::PropertyTreeItem *item) @@ -501,6 +505,15 @@ void TimelineToolBar::setupCurrentFrameValidator() m_lastFrame->text().toInt()); } +void TimelineToolBar::ensureAnimationCurveDialog() +{ + if (!m_animatioCurveDialog) { + m_animatioCurveDialog = new AnimationCurveDialog(Core::ICore::dialogParent()); + m_animatioCurveDialog->setAttribute(Qt::WA_DeleteOnClose); + m_animatioCurveDialog->setModel(m_curveModel); + } +} + void TimelineToolBar::resizeEvent(QResizeEvent *event) { Q_UNUSED(event) diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.h b/src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.h index a95af873da..807d438e80 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.h +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.h @@ -30,6 +30,8 @@ #include <QToolBar> +#include <QPointer> + QT_FORWARD_DECLARE_CLASS(QLabel) QT_FORWARD_DECLARE_CLASS(QLineEdit) QT_FORWARD_DECLARE_CLASS(QObject) @@ -102,10 +104,11 @@ private: void createRightControls(); void addSpacing(int width); void setupCurrentFrameValidator(); + void ensureAnimationCurveDialog(); QList<QObject *> m_grp; - AnimationCurveDialog m_dialog; + QPointer<AnimationCurveDialog> m_animatioCurveDialog; AnimationCurveEditorModel *m_curveModel = nullptr; |