diff --git a/app/widget/timelineview/timelineview.cpp b/app/widget/timelineview/timelineview.cpp index 95bbf903d..83afcc0fc 100644 --- a/app/widget/timelineview/timelineview.cpp +++ b/app/widget/timelineview/timelineview.cpp @@ -109,7 +109,12 @@ void TimelineView::mousePressEvent(QMouseEvent *event) TimelineViewGhostItem* ghost = new TimelineViewGhostItem(); TimelineViewClipItem* clip_item = static_cast(item); - ghost->setRect(clip_item->rect()); + ClipBlock* clip = clip_item->clip(); + + ghost->SetIn(clip->in()); + ghost->SetOut(clip->out()); + ghost->SetTimebase(timebase_); + ghost->setPos(clip_item->pos()); ghost_items_.append(ghost); diff --git a/app/widget/timelineview/timelineviewclipitem.cpp b/app/widget/timelineview/timelineviewclipitem.cpp index ed0b5ce4f..d2c775726 100644 --- a/app/widget/timelineview/timelineviewclipitem.cpp +++ b/app/widget/timelineview/timelineviewclipitem.cpp @@ -34,6 +34,11 @@ TimelineViewClipItem::TimelineViewClipItem(QGraphicsItem* parent) : setFlag(QGraphicsItem::ItemIsSelectable, true); } +ClipBlock *TimelineViewClipItem::clip() +{ + return clip_; +} + void TimelineViewClipItem::SetClip(ClipBlock *clip) { clip_ = clip; diff --git a/app/widget/timelineview/timelineviewclipitem.h b/app/widget/timelineview/timelineviewclipitem.h index 3d0f1d592..18e21ee80 100644 --- a/app/widget/timelineview/timelineviewclipitem.h +++ b/app/widget/timelineview/timelineviewclipitem.h @@ -30,6 +30,7 @@ class TimelineViewClipItem : public TimelineViewRect public: TimelineViewClipItem(QGraphicsItem* parent = nullptr); + ClipBlock* clip(); void SetClip(ClipBlock* clip); protected: diff --git a/app/widget/timelineview/timelineviewghostitem.cpp b/app/widget/timelineview/timelineviewghostitem.cpp index 3089bb0f6..eff3a2879 100644 --- a/app/widget/timelineview/timelineviewghostitem.cpp +++ b/app/widget/timelineview/timelineviewghostitem.cpp @@ -23,8 +23,31 @@ #include TimelineViewGhostItem::TimelineViewGhostItem(QGraphicsItem *parent) : - QGraphicsRectItem(parent) + TimelineViewRect(parent) { setBrush(Qt::NoBrush); - setPen(QPen(Qt::yellow, 2)); + setPen(QPen(Qt::yellow, 2)); // FIXME: Make customizable via CSS +} + +void TimelineViewGhostItem::SetIn(const rational &in) +{ + in_ = in; + + UpdateRect(); +} + +void TimelineViewGhostItem::SetOut(const rational &out) +{ + out_ = out; + + UpdateRect(); +} + +void TimelineViewGhostItem::UpdateRect() +{ + rational length = out_ - in_; + + setRect(0, 0, TimeToScreenCoord(length), 100); + + setPos(TimeToScreenCoord(in_), 0); } diff --git a/app/widget/timelineview/timelineviewghostitem.h b/app/widget/timelineview/timelineviewghostitem.h index 6b7ffb51e..61837f689 100644 --- a/app/widget/timelineview/timelineviewghostitem.h +++ b/app/widget/timelineview/timelineviewghostitem.h @@ -21,15 +21,24 @@ #ifndef TIMELINEVIEWGHOSTITEM_H #define TIMELINEVIEWGHOSTITEM_H -#include +#include "timelineviewrect.h" -class TimelineViewGhostItem : public QGraphicsRectItem +class TimelineViewGhostItem : public TimelineViewRect { public: TimelineViewGhostItem(QGraphicsItem* parent = nullptr); + void SetIn(const rational& in); + void SetOut(const rational& out); + protected: + virtual void UpdateRect() override; + // virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; + +private: + rational in_; + rational out_; }; #endif // TIMELINEVIEWGHOSTITEM_H