diff --git a/app/widget/timelineview/timelineviewclipitem.cpp b/app/widget/timelineview/timelineviewclipitem.cpp index 2f5a2c024..2d98fb3a3 100644 --- a/app/widget/timelineview/timelineviewclipitem.cpp +++ b/app/widget/timelineview/timelineviewclipitem.cpp @@ -21,12 +21,15 @@ #include "timelineviewclipitem.h" #include +#include +#include #include #include TimelineViewClipItem::TimelineViewClipItem(QGraphicsItem* parent) : QGraphicsRectItem(parent), - clip_(nullptr) + clip_(nullptr), + ghost_(nullptr) { setBrush(Qt::white); setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -61,3 +64,32 @@ void TimelineViewClipItem::paint(QPainter *painter, const QStyleOptionGraphicsIt painter->drawLine(QPointF(rect().left(), rect().bottom() - 1), QPointF(rect().right(), rect().bottom() - 1)); painter->drawLine(QPointF(rect().right(), rect().bottom() - 1), QPointF(rect().right(), rect().top())); } + +void TimelineViewClipItem::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + QGraphicsRectItem::mousePressEvent(event); + + ghost_ = new TimelineViewGhostItem(); + ghost_->setRect(rect()); + scene()->addItem(ghost_); +} + +void TimelineViewClipItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + QGraphicsRectItem::mouseMoveEvent(event); + + if (ghost_ != nullptr) { + ghost_->setPos(event->scenePos()); + } +} + +void TimelineViewClipItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + QGraphicsRectItem::mouseReleaseEvent(event); + + if (ghost_ != nullptr) { + scene()->removeItem(ghost_); + delete ghost_; + ghost_ = nullptr; + } +} diff --git a/app/widget/timelineview/timelineviewclipitem.h b/app/widget/timelineview/timelineviewclipitem.h index 405820b62..3cebb932a 100644 --- a/app/widget/timelineview/timelineviewclipitem.h +++ b/app/widget/timelineview/timelineviewclipitem.h @@ -24,6 +24,7 @@ #include #include "node/block/clip/clip.h" +#include "timelineviewghostitem.h" class TimelineViewClipItem : public QGraphicsRectItem { @@ -35,8 +36,14 @@ public: protected: virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; + virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override; + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; + private: ClipBlock* clip_; + + TimelineViewGhostItem* ghost_; }; #endif // TIMELINEVIEWCLIPITEM_H