diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/curveeditor/detail')
4 files changed, 42 insertions, 3 deletions
diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp index 86aae0b2cc..90818be74b 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp @@ -87,6 +87,16 @@ QRectF CurveItem::boundingRect() const for (auto *item : m_keyframes) bbox(bounds, item->keyframe()); + if (auto *s = qobject_cast<GraphicsScene *>(scene())) { + bounds.setLeft(s->animationRangeMin()); + bounds.setRight(s->animationRangeMax()); + } + + if (qFuzzyCompare(bounds.height(), 0.0)) { + auto tmp = CurveEditorStyle::defaultValueRange() / 2.0; + bounds.adjust(0.0, -tmp, 0.0, tmp); + } + return m_transform.mapRect(bounds); } diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp index aca41b4d6d..e9f9050f62 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp @@ -114,9 +114,29 @@ double GraphicsScene::maximumValue() const return limits().top(); } +double GraphicsScene::animationRangeMin() const +{ + if (GraphicsView *gview = graphicsView()) + return gview->minimumTime(); + + return minimumTime(); +} + +double GraphicsScene::animationRangeMax() const +{ + if (GraphicsView *gview = graphicsView()) + return gview->maximumTime(); + + return maximumTime(); +} + QRectF GraphicsScene::rect() const { - return sceneRect(); + QRectF rect; + for (auto *curve : curves()) + rect |= curve->boundingRect(); + + return rect; } QVector<CurveItem *> GraphicsScene::curves() const @@ -410,6 +430,11 @@ QRectF GraphicsScene::limits() const } m_limits = QRectF(QPointF(min.x(), max.y()), QPointF(max.x(), min.y())); + if (qFuzzyCompare(m_limits.height(), 0.0)) { + auto tmp = CurveEditorStyle::defaultValueRange() / 2.0; + m_limits.adjust(0.0, tmp, 0.0, -tmp); + } + m_dirty = false; } return m_limits; diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h index 9443130b3e..c19f72b130 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h @@ -67,6 +67,10 @@ public: double maximumValue() const; + double animationRangeMin() const; + + double animationRangeMax() const; + QRectF rect() const; QVector<CurveItem *> curves() const; diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp index 9fec8b2fc5..c162b5fd90 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp @@ -126,12 +126,12 @@ double GraphicsView::maximumTime() const double GraphicsView::minimumValue() const { - return m_scene->empty() ? -1.0 : m_scene->minimumValue(); + return m_scene->empty() ? CurveEditorStyle::defaultValueMin : m_scene->minimumValue(); } double GraphicsView::maximumValue() const { - return m_scene->empty() ? 1.0 : m_scene->maximumValue(); + return m_scene->empty() ? CurveEditorStyle::defaultValueMax : m_scene->maximumValue(); } double GraphicsView::zoomX() const |