aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp')
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp
index 2351793f8d..ee907ec8cd 100644
--- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp
+++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp
@@ -104,8 +104,24 @@ void GraphicsScene::keyframeMoved(KeyframeItem *movedItem, const QPointF &direct
}
}
+void GraphicsScene::handleUnderMouse(HandleItem *handle)
+{
+ const auto itemList = items();
+ for (auto *item : itemList) {
+ if (item == handle)
+ continue;
+
+ if (auto *handleItem = qgraphicsitem_cast<HandleItem *>(item)) {
+ if (handleItem->selected()) {
+ if (handleItem->slot() == handle->slot())
+ handleItem->setActivated(handle->isUnderMouse());
+ }
+ }
+ }
+}
+
void GraphicsScene::handleMoved(KeyframeItem *frame,
- HandleSlot handle,
+ HandleItem::Slot handle,
double angle,
double deltaLength)
{
@@ -151,12 +167,11 @@ void GraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
QGraphicsScene::mouseMoveEvent(mouseEvent);
- if (hasActiveItem())
- return;
-
const auto itemList = items();
for (auto *item : itemList) {
- if (auto *curveItem = qgraphicsitem_cast<CurveItem *>(item))
+ if (auto *handleItem = qgraphicsitem_cast<HandleItem *>(item))
+ handleItem->setIsUnderMouse(handleItem->contains(mouseEvent->scenePos()));
+ else if (auto *curveItem = qgraphicsitem_cast<CurveItem *>(item))
curveItem->setIsUnderMouse(curveItem->contains(mouseEvent->scenePos()));
}
}