aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/curveeditor
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/components/curveeditor')
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp6
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h2
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h11
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp4
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp10
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp27
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h4
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp4
8 files changed, 58 insertions, 10 deletions
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp
index db58ce4dbb..56b91d0af6 100644
--- a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp
+++ b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp
@@ -39,10 +39,10 @@
namespace DesignTools {
-CurveEditorModel::CurveEditorModel(double minTime, double maxTime, QObject *parent)
+CurveEditorModel::CurveEditorModel(QObject *parent)
: TreeModel(parent)
- , m_minTime(minTime)
- , m_maxTime(maxTime)
+ , m_minTime(CurveEditorStyle::defaultTimeMin)
+ , m_maxTime(CurveEditorStyle::defaultTimeMax)
{}
CurveEditorModel::~CurveEditorModel() {}
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h
index 952dc46c63..cf7575ca5c 100644
--- a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h
+++ b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h
@@ -57,7 +57,7 @@ signals:
void curveChanged(PropertyTreeItem *item);
public:
- CurveEditorModel(double minTime, double maxTime, QObject *parent = nullptr);
+ CurveEditorModel(QObject *parent = nullptr);
~CurveEditorModel() override;
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h b/src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h
index 6d6acebc51..f6c6c378c5 100644
--- a/src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h
+++ b/src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h
@@ -36,6 +36,8 @@
#include <QIcon>
#include <QKeySequence>
+#include <cmath>
+
namespace DesignTools {
struct TreeItemStyleOption
@@ -105,6 +107,13 @@ struct Shortcuts
struct CurveEditorStyle
{
+ static constexpr double defaultTimeMin = 0.0;
+ static constexpr double defaultTimeMax = 100.0;
+ static constexpr double defaultValueMin = -1.0;
+ static constexpr double defaultValueMax = 1.0;
+
+ static double defaultValueRange() { return std::fabs(defaultValueMin - defaultValueMax); }
+
Shortcuts shortcuts;
QBrush backgroundBrush = QBrush(QColor(5, 0, 100));
@@ -124,7 +133,7 @@ struct CurveEditorStyle
double valueAxisWidth = 60.0;
double valueOffsetTop = 10.0;
double valueOffsetBottom = 10.0;
- double labelDensityY = 1.5;
+ double labelDensityY = 2.0;
HandleItemStyleOption handleStyle;
KeyframeItemStyleOption keyframeStyle;
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp
index 9d858d684c..b84d386f8e 100644
--- a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp
+++ b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp
@@ -42,7 +42,7 @@ namespace QmlDesigner {
CurveEditorView::CurveEditorView(QObject *parent)
: AbstractView(parent)
, m_block(false)
- , m_model(new DesignTools::CurveEditorModel(0., 500.))
+ , m_model(new DesignTools::CurveEditorModel())
, m_editor(new DesignTools::CurveEditor(m_model))
{
Q_UNUSED(parent);
@@ -267,7 +267,7 @@ ModelNode getTargetNode1(DesignTools::PropertyTreeItem *item, const QmlTimeline
QString targetId = nodeItem->name();
if (timeline.isValid()) {
for (auto &&target : timeline.allTargets()) {
- if (target.displayName() == targetId)
+ if (target.isValid() && target.displayName() == targetId)
return target;
}
}
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