aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/timelineeditor
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2020-02-03 16:17:19 +0100
committerTim Jenssen <tim.jenssen@qt.io>2020-02-03 16:51:05 +0000
commitc0637b8283ec884cad6aa8119f1f99d010419df5 (patch)
tree5354d6adfedc4fe79049326bcf26f9a60b7e1c49 /src/plugins/qmldesigner/components/timelineeditor
parentc7d8b9b01c140a44abf2c93a4354ac0f66a68590 (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.cpp31
-rw-r--r--src/plugins/qmldesigner/components/timelineeditor/timelinetoolbar.h5
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;