QmlDesigner: Disable Timeview and CurveEditorView when widget is invisble

Task-number: QDS-5159
Change-Id: Ibae0b9742d4aaac6a1def1c84342a031baf75256
Reviewed-by: Knud Dollereder <knud.dollereder@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Thomas Hartmann
2021-09-28 17:54:31 +02:00
parent d52e7b9398
commit a07112258b
6 changed files with 44 additions and 11 deletions

View File

@@ -81,6 +81,18 @@ void CurveEditor::clearCanvas()
m_view->reset({}); m_view->reset({});
} }
void CurveEditor::showEvent(QShowEvent *event)
{
emit viewEnabledChanged(true);
QWidget::showEvent(event);
}
void CurveEditor::hideEvent(QHideEvent *event)
{
emit viewEnabledChanged(false);
QWidget::hideEvent(event);
}
QToolBar *CurveEditor::createToolBar(CurveEditorModel *model) QToolBar *CurveEditor::createToolBar(CurveEditorModel *model)
{ {
auto *bar = new QToolBar; auto *bar = new QToolBar;

View File

@@ -49,6 +49,13 @@ public:
void clearCanvas(); void clearCanvas();
signals:
void viewEnabledChanged(const bool);
protected:
void showEvent(QShowEvent *event) override;
void hideEvent(QHideEvent *event) override;
private: private:
QToolBar *createToolBar(CurveEditorModel *model); QToolBar *createToolBar(CurveEditorModel *model);

View File

@@ -51,6 +51,13 @@ CurveEditorView::CurveEditorView(QObject *parent)
connect(m_model, &CurveEditorModel::commitStartFrame, this, &CurveEditorView::commitStartFrame); connect(m_model, &CurveEditorModel::commitStartFrame, this, &CurveEditorView::commitStartFrame);
connect(m_model, &CurveEditorModel::commitEndFrame, this, &CurveEditorView::commitEndFrame); connect(m_model, &CurveEditorModel::commitEndFrame, this, &CurveEditorView::commitEndFrame);
connect(m_model, &CurveEditorModel::curveChanged, this, &CurveEditorView::commitKeyframes); connect(m_model, &CurveEditorModel::curveChanged, this, &CurveEditorView::commitKeyframes);
connect(m_editor, &CurveEditor::viewEnabledChanged, this, [this](bool enabled){
setEnabled(enabled);
if (enabled)
init();
});
setEnabled(false);
} }
CurveEditorView::~CurveEditorView() {} CurveEditorView::~CurveEditorView() {}
@@ -70,10 +77,8 @@ void CurveEditorView::modelAttached(Model *model)
{ {
AbstractView::modelAttached(model); AbstractView::modelAttached(model);
QmlTimeline timeline = activeTimeline(); if (isEnabled())
if (timeline.isValid()) { init();
m_model->setTimeline(timeline);
}
} }
void CurveEditorView::modelAboutToBeDetached(Model *model) void CurveEditorView::modelAboutToBeDetached(Model *model)
@@ -389,4 +394,13 @@ void CurveEditorView::commitEndFrame(int frame)
timeline.modelNode().variantProperty("endFrame").setValue(frame); timeline.modelNode().variantProperty("endFrame").setValue(frame);
} }
void CurveEditorView::init()
{
QmlTimeline timeline = activeTimeline();
if (timeline.isValid()) {
m_model->setTimeline(timeline);
}
}
} // namespace QmlDesigner } // namespace QmlDesigner

View File

@@ -85,6 +85,7 @@ private:
void commitCurrentFrame(int frame); void commitCurrentFrame(int frame);
void commitStartFrame(int frame); void commitStartFrame(int frame);
void commitEndFrame(int frame); void commitEndFrame(int frame);
void init();
private: private:
bool m_block; bool m_block;

View File

@@ -71,6 +71,7 @@ TimelineView::TimelineView(QObject *parent)
, m_timelineWidget(nullptr) , m_timelineWidget(nullptr)
{ {
EasingCurve::registerStreamOperators(); EasingCurve::registerStreamOperators();
setEnabled(false);
} }
TimelineView::~TimelineView() = default; TimelineView::~TimelineView() = default;

View File

@@ -606,13 +606,7 @@ void TimelineWidget::showEvent(QShowEvent *event)
{ {
Q_UNUSED(event) Q_UNUSED(event)
/*
m_timelineView->setEnabled(true); m_timelineView->setEnabled(true);
TODO See QDS-4191
*/
if (m_timelineView->model())
init();
graphicsScene()->setWidth(m_graphicsView->viewport()->width()); graphicsScene()->setWidth(m_graphicsView->viewport()->width());
graphicsScene()->invalidateLayout(); graphicsScene()->invalidateLayout();
@@ -620,6 +614,10 @@ void TimelineWidget::showEvent(QShowEvent *event)
graphicsScene()->onShow(); graphicsScene()->onShow();
QWidget::showEvent(event); QWidget::showEvent(event);
//All the events have to be fully processed before we call init()
if (m_timelineView->model())
QTimer::singleShot(0, [this]() { init(); });
} }
void TimelineWidget::resizeEvent(QResizeEvent *event) void TimelineWidget::resizeEvent(QResizeEvent *event)
@@ -630,7 +628,7 @@ void TimelineWidget::resizeEvent(QResizeEvent *event)
void TimelineWidget::hideEvent(QHideEvent *event) void TimelineWidget::hideEvent(QHideEvent *event)
{ {
/* m_timelineView->setEnabled(false); TODO See QDS-4191 */ m_timelineView->setEnabled(false);
QWidget::hideEvent(event); QWidget::hideEvent(event);
} }