timeline: use scroll cooldown when dragging playhead

This commit is contained in:
itsmattkc
2022-07-16 17:12:35 -07:00
parent 98a71a47c8
commit 24ae3a25d3
4 changed files with 13 additions and 8 deletions
+2 -1
View File
@@ -46,6 +46,7 @@ TimeBasedWidget::TimeBasedWidget(bool ruler_text_visible, bool ruler_cache_statu
ruler_ = new TimeRuler(ruler_text_visible, ruler_cache_status_visible, this);
ConnectTimelineView(ruler_, true);
ruler()->SetSnapService(this);
connect(ruler(), &TimeRuler::DragReleased, this, static_cast<void(TimeBasedWidget::*)()>(&TimeBasedWidget::StopCatchUpScrollTimer));
scrollbar_ = new ResizableTimelineScrollBar(Qt::Horizontal, this);
connect(scrollbar_, &ResizableScrollBar::ResizeBegan, this, &TimeBasedWidget::ScrollBarResizeBegan);
@@ -348,7 +349,7 @@ void TimeBasedWidget::SetTime(const rational &time)
{
if (UserIsDraggingPlayhead()) {
// If the user is dragging the playhead, we will simply nudge over and not use autoscroll rules.
QMetaObject::invokeMethod(this, "CatchUpScrollToPlayhead", Qt::QueuedConnection);
SetCatchUpScrollValue(qRound(TimeToScene(time)) - scrollbar_->value());
} else {
// Otherwise, assume we jumped to this out of nowhere and must now autoscroll
switch (static_cast<AutoScroll::Method>(OLIVE_CONFIG("Autoscroll").toInt())) {
+7 -7
View File
@@ -121,9 +121,6 @@ public slots:
void DeleteSelected();
protected slots:
void SetTimeAndSignal(const rational& t);
protected:
ResizableTimelineScrollBar* scrollbar() const;
@@ -153,10 +150,6 @@ protected:
void SetCatchUpScrollValue(QScrollBar *b, int v, int maximum);
void SetCatchUpScrollValue(int v);
void StopCatchUpScrollTimer(QScrollBar *b);
void StopCatchUpScrollTimer()
{
StopCatchUpScrollTimer(scrollbar_);
}
virtual const QVector<Block*> *GetSnapBlocks() const { return nullptr; }
virtual const QVector<KeyframeViewInputConnection*> *GetSnapKeyframes() const { return nullptr; }
@@ -177,6 +170,13 @@ protected slots:
static void PageScrollInternal(QScrollBar* bar, int maximum, int screen_position, bool whole_page_scroll);
void SetTimeAndSignal(const olive::rational& t);
void StopCatchUpScrollTimer()
{
StopCatchUpScrollTimer(scrollbar_);
}
signals:
void TimeChanged(const rational&);
+1
View File
@@ -231,6 +231,7 @@ void SeekableWidget::mouseReleaseEvent(QMouseEvent *event)
}
dragging_ = false;
emit DragReleased();
}
void SeekableWidget::mouseDoubleClickEvent(QMouseEvent *event)
+3
View File
@@ -78,6 +78,9 @@ public slots:
virtual void TimebaseChangedEvent(const rational &) override;
signals:
void DragReleased();
protected:
virtual void mousePressEvent(QMouseEvent *event) override;
virtual void mouseMoveEvent(QMouseEvent *event) override;