timeline: improved subtitle import behavior
This commit is contained in:
@@ -157,11 +157,6 @@ 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
|
||||
|
||||
@@ -109,8 +109,6 @@ public:
|
||||
|
||||
void AddTentativeSubtitleTrack();
|
||||
|
||||
void ClearTentativeSubtitleTrack();
|
||||
|
||||
/**
|
||||
* @brief Timelines should always be connected to sequences
|
||||
*/
|
||||
@@ -271,6 +269,9 @@ public:
|
||||
|
||||
};
|
||||
|
||||
public slots:
|
||||
void ClearTentativeSubtitleTrack();
|
||||
|
||||
signals:
|
||||
void BlockSelectionChanged(const QVector<Block*>& selected_blocks);
|
||||
|
||||
|
||||
@@ -97,6 +97,11 @@ void ImportTool::DragEnter(TimelineViewMouseEvent *event)
|
||||
PrepGhosts(ghost_offset_, drag_start_.GetTrack().index());
|
||||
|
||||
if (parent()->HasGhosts() || !parent()->GetConnectedNode()) {
|
||||
// We only clear the tentative track if the mimedata is about to be destroyed (i.e. the drag
|
||||
// is cancelled). If we do this in DragLeave, it leads to undesirable behavior if the cursor
|
||||
// is going between views (subtitle track rapidly appearing and disappearing)
|
||||
QObject::connect(event->GetMimeData(), &QObject::destroyed, parent(), &TimelineWidget::ClearTentativeSubtitleTrack);
|
||||
|
||||
event->accept();
|
||||
} else {
|
||||
event->ignore();
|
||||
@@ -167,7 +172,6 @@ void ImportTool::DragLeave(QDragLeaveEvent* event)
|
||||
{
|
||||
if (!dragged_footage_.isEmpty()) {
|
||||
parent()->ClearGhosts();
|
||||
parent()->ClearTentativeSubtitleTrack();
|
||||
dragged_footage_.clear();
|
||||
|
||||
event->accept();
|
||||
|
||||
@@ -124,9 +124,6 @@ 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,10 +43,6 @@ 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,34 +76,11 @@ 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);
|
||||
e.SetBypassImportBuffer(true);
|
||||
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();
|
||||
|
||||
@@ -42,15 +42,6 @@ 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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user