timeline: allow dropping on trackviewitem to overwrite at 0
Fixes #1928
This commit is contained in:
@@ -157,6 +157,11 @@ TimelineWidget::TimelineWidget(QWidget *parent) :
|
||||
connect(view, &TimelineView::DragLeft, this, &TimelineWidget::ViewDragLeft);
|
||||
connect(view, &TimelineView::DragDropped, this, &TimelineWidget::ViewDragDropped);
|
||||
|
||||
TrackView *tv = tview->track_view();
|
||||
connect(tv, &TrackView::DragEntered, this, &TimelineWidget::ViewDragEntered);
|
||||
connect(tv, &TrackView::DragLeft, this, &TimelineWidget::ViewDragLeft);
|
||||
connect(tv, &TrackView::DragDropped, this, &TimelineWidget::ViewDragDropped);
|
||||
|
||||
connect(tview->splitter(), &QSplitter::splitterMoved, this, &TimelineWidget::UpdateHorizontalSplitters);
|
||||
|
||||
// Connect each view's scroll to each other
|
||||
|
||||
@@ -124,6 +124,9 @@ void TrackView::InsertTrack(Track *track)
|
||||
TrackViewItem *tvi = new TrackViewItem(track);
|
||||
|
||||
connect(tvi, &TrackViewItem::AboutToDeleteTrack, this, &TrackView::AboutToDeleteTrack);
|
||||
connect(tvi, &TrackViewItem::DragEntered, this, &TrackView::DragEntered);
|
||||
connect(tvi, &TrackViewItem::DragLeft, this, &TrackView::DragLeft);
|
||||
connect(tvi, &TrackViewItem::DragDropped, this, &TrackView::DragDropped);
|
||||
|
||||
splitter_->Insert(track->Index(),
|
||||
track->GetTrackHeightInPixels(),
|
||||
|
||||
@@ -43,6 +43,10 @@ public:
|
||||
signals:
|
||||
void AboutToDeleteTrack(Track *track);
|
||||
|
||||
void DragEntered(TimelineViewMouseEvent* event);
|
||||
void DragLeft(QDragLeaveEvent* event);
|
||||
void DragDropped(TimelineViewMouseEvent* event);
|
||||
|
||||
protected:
|
||||
virtual void resizeEvent(QResizeEvent *e) override;
|
||||
|
||||
|
||||
@@ -76,11 +76,33 @@ TrackViewItem::TrackViewItem(Track* track, QWidget *parent) :
|
||||
|
||||
setMinimumHeight(mute_button_->height());
|
||||
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
setAcceptDrops(true);
|
||||
|
||||
connect(track, &Track::MutedChanged, mute_button_, &QPushButton::setChecked);
|
||||
connect(this, &QWidget::customContextMenuRequested, this, &TrackViewItem::ShowContextMenu);
|
||||
}
|
||||
|
||||
void TrackViewItem::dragEnterEvent(QDragEnterEvent *event)
|
||||
{
|
||||
TimelineViewMouseEvent e(0, 1, 1, track_->ToReference(), Qt::NoButton, event->keyboardModifiers());
|
||||
e.SetMimeData(event->mimeData());
|
||||
e.SetEvent(event);
|
||||
emit DragEntered(&e);
|
||||
}
|
||||
|
||||
void TrackViewItem::dragLeaveEvent(QDragLeaveEvent *event)
|
||||
{
|
||||
emit DragLeft(event);
|
||||
}
|
||||
|
||||
void TrackViewItem::dropEvent(QDropEvent *event)
|
||||
{
|
||||
TimelineViewMouseEvent e(0, 1, 1, track_->ToReference(), Qt::NoButton, event->keyboardModifiers());
|
||||
e.SetMimeData(event->mimeData());
|
||||
e.SetEvent(event);
|
||||
emit DragDropped(&e);
|
||||
}
|
||||
|
||||
QPushButton *TrackViewItem::CreateMSLButton(const QColor& checked_color) const
|
||||
{
|
||||
QPushButton* button = new QPushButton();
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "node/output/track/track.h"
|
||||
#include "widget/clickablelabel/clickablelabel.h"
|
||||
#include "widget/focusablelineedit/focusablelineedit.h"
|
||||
#include "widget/timelinewidget/view/timelineviewmouseevent.h"
|
||||
|
||||
namespace olive {
|
||||
|
||||
@@ -41,6 +42,15 @@ public:
|
||||
signals:
|
||||
void AboutToDeleteTrack(Track *track);
|
||||
|
||||
void DragEntered(TimelineViewMouseEvent* event);
|
||||
void DragLeft(QDragLeaveEvent* event);
|
||||
void DragDropped(TimelineViewMouseEvent* event);
|
||||
|
||||
protected:
|
||||
virtual void dragEnterEvent(QDragEnterEvent *event) override;
|
||||
virtual void dragLeaveEvent(QDragLeaveEvent *event) override;
|
||||
virtual void dropEvent(QDropEvent *event) override;
|
||||
|
||||
private:
|
||||
QPushButton* CreateMSLButton(const QColor &checked_color) const;
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#ifndef TIMELINEVIEWMOUSEEVENT_H
|
||||
#define TIMELINEVIEWMOUSEEVENT_H
|
||||
|
||||
#include <QEvent>
|
||||
#include <QMimeData>
|
||||
#include <QPointF>
|
||||
#include <QPoint>
|
||||
|
||||
Reference in New Issue
Block a user