diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp')
-rw-r--r-- | src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp index 6c25256249..3b87f22c51 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp @@ -71,10 +71,10 @@ namespace QmlDesigner { static int deleteKey() { - if (Utils::HostOsInfo::isMacHost()) - return Qt::Key_Backspace; + if (Utils::HostOsInfo::isMacHost()) + return Qt::Key_Backspace; - return Qt::Key_Delete; + return Qt::Key_Delete; } QList<QmlTimelineKeyframeGroup> allTimelineFrames(const QmlTimeline &timeline) @@ -91,7 +91,7 @@ QList<QmlTimelineKeyframeGroup> allTimelineFrames(const QmlTimeline &timeline) } TimelineGraphicsScene::TimelineGraphicsScene(TimelineWidget *parent) - : QGraphicsScene(parent) + : AbstractScrollGraphicsScene(parent) , m_parent(parent) , m_layout(new TimelineGraphicsLayout(this)) , m_currentFrameIndicator(new TimelineFrameHandle) @@ -378,17 +378,17 @@ void TimelineGraphicsScene::commitCurrentFrame(qreal frame) } } -QList<TimelineKeyframeItem *> TimelineGraphicsScene::selectedKeyframes() const +QList<TimelineKeyframeItem *> AbstractScrollGraphicsScene::selectedKeyframes() const { return m_selectedKeyframes; } -bool TimelineGraphicsScene::hasSelection() const +bool AbstractScrollGraphicsScene::hasSelection() const { return !m_selectedKeyframes.empty(); } -bool TimelineGraphicsScene::isCurrent(TimelineKeyframeItem *keyframe) const +bool AbstractScrollGraphicsScene::isCurrent(TimelineKeyframeItem *keyframe) const { if (m_selectedKeyframes.empty()) return false; @@ -396,12 +396,12 @@ bool TimelineGraphicsScene::isCurrent(TimelineKeyframeItem *keyframe) const return m_selectedKeyframes.back() == keyframe; } -bool TimelineGraphicsScene::isKeyframeSelected(TimelineKeyframeItem *keyframe) const +bool AbstractScrollGraphicsScene::isKeyframeSelected(TimelineKeyframeItem *keyframe) const { return m_selectedKeyframes.contains(keyframe); } -bool TimelineGraphicsScene::multipleKeyframesSelected() const +bool AbstractScrollGraphicsScene::multipleKeyframesSelected() const { return m_selectedKeyframes.count() > 1; } @@ -456,19 +456,19 @@ void TimelineGraphicsScene::invalidateRecordButtonsStatus() TimelinePropertyItem::updateRecordButtonStatus(item); } -int TimelineGraphicsScene::scrollOffset() const +int AbstractScrollGraphicsScene::scrollOffset() const { return m_scrollOffset; } -void TimelineGraphicsScene::setScrollOffset(int offset) +void AbstractScrollGraphicsScene::setScrollOffset(int offset) { m_scrollOffset = offset; emitScrollOffsetChanged(); update(); } -QGraphicsView *TimelineGraphicsScene::graphicsView() const +QGraphicsView *AbstractScrollGraphicsScene::graphicsView() const { for (auto *v : views()) if (v->objectName() == "SceneView") @@ -477,7 +477,7 @@ QGraphicsView *TimelineGraphicsScene::graphicsView() const return nullptr; } -QGraphicsView *TimelineGraphicsScene::rulerView() const +QGraphicsView *AbstractScrollGraphicsScene::rulerView() const { for (auto *v : views()) if (v->objectName() == "RulerView") @@ -491,7 +491,7 @@ QmlTimeline TimelineGraphicsScene::currentTimeline() const return QmlTimeline(timelineModelNode()); } -QRectF TimelineGraphicsScene::selectionBounds() const +QRectF AbstractScrollGraphicsScene::selectionBounds() const { QRectF bbox; @@ -501,7 +501,7 @@ QRectF TimelineGraphicsScene::selectionBounds() const return bbox; } -void TimelineGraphicsScene::selectKeyframes(const SelectionMode &mode, +void AbstractScrollGraphicsScene::selectKeyframes(const SelectionMode &mode, const QList<TimelineKeyframeItem *> &items) { if (mode == SelectionMode::Remove || mode == SelectionMode::Toggle) { @@ -536,13 +536,14 @@ void TimelineGraphicsScene::selectKeyframes(const SelectionMode &mode, emit selectionChanged(); } -void TimelineGraphicsScene::clearSelection() +void AbstractScrollGraphicsScene::clearSelection() { for (auto *keyframe : m_selectedKeyframes) if (keyframe) keyframe->setHighlighted(false); m_selectedKeyframes.clear(); + emit selectionChanged(); } QList<QGraphicsItem *> TimelineGraphicsScene::itemsAt(const QPointF &pos) @@ -580,6 +581,7 @@ void TimelineGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) /* The tool has handle the event last. */ QGraphicsScene::mouseReleaseEvent(event); m_tools.mouseReleaseEvent(topItem, event); + m_parent->setFocus(); } void TimelineGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) @@ -681,7 +683,7 @@ ModelNode TimelineGraphicsScene::timelineModelNode() const void TimelineGraphicsScene::handleKeyframeDeletion() { QList<ModelNode> nodesToBeDeleted; - for (auto keyframe : m_selectedKeyframes) { + for (auto keyframe : selectedKeyframes()) { nodesToBeDeleted.append(keyframe->frameNode()); } deleteKeyframes(nodesToBeDeleted); @@ -710,7 +712,7 @@ void TimelineGraphicsScene::pasteKeyframesToTarget(const ModelNode &targetNode) void TimelineGraphicsScene::copySelectedKeyframes() { TimelineActions::copyKeyframes( - Utils::transform(m_selectedKeyframes, &TimelineKeyframeItem::frameNode)); + Utils::transform(selectedKeyframes(), &TimelineKeyframeItem::frameNode)); } void TimelineGraphicsScene::pasteSelectedKeyframes() @@ -733,7 +735,6 @@ void TimelineGraphicsScene::deleteKeyframeGroup(const ModelNode &group) ModelNode nonConst = group; nonConst.destroy(); }); - } void TimelineGraphicsScene::deleteKeyframes(const QList<ModelNode> &frames) @@ -756,7 +757,20 @@ void TimelineGraphicsScene::activateLayout() m_layout->activate(); } -void TimelineGraphicsScene::emitScrollOffsetChanged() +AbstractView *TimelineGraphicsScene::abstractView() const +{ + return timelineView(); +} + +int AbstractScrollGraphicsScene::getScrollOffset(QGraphicsScene *scene) +{ + auto scrollScene = qobject_cast<AbstractScrollGraphicsScene*>(scene); + if (scrollScene) + return scrollScene->scrollOffset(); + return 0; +} + +void AbstractScrollGraphicsScene::emitScrollOffsetChanged() { for (QGraphicsItem *item : items()) TimelineMovableAbstractItem::emitScrollOffsetChanged(item); @@ -783,4 +797,8 @@ bool TimelineGraphicsScene::event(QEvent *event) } } +QmlDesigner::AbstractScrollGraphicsScene::AbstractScrollGraphicsScene(QWidget *parent) + : QGraphicsScene(parent) +{} + } // namespace QmlDesigner |