Position markers correctly and update with scroll

This commit is contained in:
Thomas Wilshaw
2021-10-22 22:15:49 +01:00
parent 6fdfcb38d7
commit 3ff59544b2
2 changed files with 30 additions and 2 deletions
+24 -2
View File
@@ -67,7 +67,7 @@ void SeekableWidget::ConnectTimelinePoints(TimelinePoints *points)
connect(timeline_points_->markers(), &TimelineMarkerList::MarkerAdded, this, static_cast<void (SeekableWidget::*)()>(&SeekableWidget::update));
connect(timeline_points_->markers(), &TimelineMarkerList::MarkerRemoved, this, static_cast<void (SeekableWidget::*)()>(&SeekableWidget::update));
connect(timeline_points_->markers(), &TimelineMarkerList::MarkerAdded, this, static_cast<void (SeekableWidget::*)()>(&SeekableWidget::UpdateMarkers));
connect(timeline_points_->markers(), &TimelineMarkerList::MarkerAdded, this, &SeekableWidget::addMarker);
}
update();
@@ -131,6 +131,8 @@ void SeekableWidget::SetScroll(int s)
scroll_ = s;
update();
updateMarkerPositions();
}
void SeekableWidget::UpdateMarkers()
@@ -150,6 +152,26 @@ void SeekableWidget::UpdateMarkers()
}
}
void SeekableWidget::addMarker(TimelineMarker* marker)
{
if (!marker_map_.contains(marker)) {
Marker *marker_widget = new Marker(this);
marker_map_.insert(marker, marker_widget);
//marker_widget->setGeometry(TimeToScreen(marker->time().in()), 20, 20, 20);
marker_widget->move(TimeToScreen(marker->time().in()), 20);
marker_widget->show();
}
}
void SeekableWidget::updateMarkerPositions()
{
foreach (TimelineMarker *marker, marker_map_.keys()) {
Marker *m = marker_map_.value(marker);
m->move(TimeToScreen(marker->time().in()), 20);
}
}
int SeekableWidget::TimeToScreen(const rational &time) const
{
return qFloor(TimeToScene(time)) - scroll_;
@@ -224,7 +246,7 @@ void SeekableWidget::DrawTimelinePoints(QPainter* p, int marker_bottom)
if (marker->time().length() == 0) {
// Single point in time marker
DrawPlayhead(p, marker_left, marker_bottom);
//DrawPlayhead(p, marker_left, marker_bottom);
} else {
// Marker range
int rect_left = qMax(0, marker_left);
+6
View File
@@ -60,6 +60,10 @@ public slots:
void UpdateMarkers();
void addMarker(TimelineMarker* marker);
void updateMarkerPositions();
protected:
void SeekToScreenPoint(int screen);
@@ -111,6 +115,8 @@ private:
QVector<Marker*> marker_widgets;
QMap<TimelineMarker*, Marker*> marker_map_;
};
}