timeline: improved subtitle import behavior

This commit is contained in:
itsmattkc
2022-05-16 08:37:14 -07:00
parent d4987c3a78
commit 7130371690
7 changed files with 8 additions and 47 deletions
@@ -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
+3 -2
View File
@@ -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);
+5 -1
View File
@@ -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;