@@ -309,9 +309,11 @@ void Track::Retranslate()
|
||||
|
||||
void Track::SetIndex(const int &index)
|
||||
{
|
||||
int old = index_;
|
||||
|
||||
index_ = index;
|
||||
|
||||
emit IndexChanged(index);
|
||||
emit IndexChanged(old, index_);
|
||||
}
|
||||
|
||||
Block *Track::BlockContainingTime(const rational &time) const
|
||||
|
||||
@@ -388,7 +388,7 @@ signals:
|
||||
/**
|
||||
* @brief Signal emitted when the index has changed
|
||||
*/
|
||||
void IndexChanged(int i);
|
||||
void IndexChanged(int old, int now);
|
||||
|
||||
/**
|
||||
* @brief Signal emitted when preview (waveform) has changed and UI should be updated
|
||||
|
||||
@@ -98,6 +98,12 @@ protected:
|
||||
y_axis_enabled_ = e;
|
||||
}
|
||||
|
||||
protected slots:
|
||||
/**
|
||||
* @brief Slot called whenever the view resizes or the scene contents change to enforce minimum scene sizes
|
||||
*/
|
||||
void UpdateSceneRect();
|
||||
|
||||
private:
|
||||
qreal GetPlayheadX();
|
||||
|
||||
@@ -121,12 +127,6 @@ private:
|
||||
|
||||
double y_scale_;
|
||||
|
||||
private slots:
|
||||
/**
|
||||
* @brief Slot called whenever the view resizes or the scene contents change to enforce minimum scene sizes
|
||||
*/
|
||||
void UpdateSceneRect();
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -882,6 +882,7 @@ void TimelineWidget::AddTrack(Track *track)
|
||||
}
|
||||
|
||||
connect(track, &Track::IndexChanged, this, &TimelineWidget::TrackUpdated);
|
||||
connect(track, &Track::IndexChanged, this, &TimelineWidget::TrackIndexChanged);
|
||||
connect(track, &Track::PreviewChanged, this, &TimelineWidget::TrackUpdated);
|
||||
connect(track, &Track::BlocksRefreshed, this, &TimelineWidget::TrackUpdated);
|
||||
connect(track, &Track::TrackHeightChangedInPixels, this, &TimelineWidget::TrackUpdated);
|
||||
@@ -892,12 +893,15 @@ void TimelineWidget::AddTrack(Track *track)
|
||||
void TimelineWidget::RemoveTrack(Track *track)
|
||||
{
|
||||
disconnect(track, &Track::IndexChanged, this, &TimelineWidget::TrackUpdated);
|
||||
disconnect(track, &Track::IndexChanged, this, &TimelineWidget::TrackIndexChanged);
|
||||
disconnect(track, &Track::PreviewChanged, this, &TimelineWidget::TrackUpdated);
|
||||
disconnect(track, &Track::BlocksRefreshed, this, &TimelineWidget::TrackUpdated);
|
||||
disconnect(track, &Track::TrackHeightChangedInPixels, this, &TimelineWidget::TrackUpdated);
|
||||
disconnect(track, &Track::BlockAdded, this, &TimelineWidget::AddBlock);
|
||||
disconnect(track, &Track::BlockRemoved, this, &TimelineWidget::RemoveBlock);
|
||||
|
||||
RemoveSelection(TimeRange(0, RATIONAL_MAX), track->ToReference());
|
||||
|
||||
foreach (Block* b, track->Blocks()) {
|
||||
RemoveBlock(b);
|
||||
}
|
||||
@@ -1060,6 +1064,19 @@ void TimelineWidget::SampleRateChanged()
|
||||
UpdateViewTimebases();
|
||||
}
|
||||
|
||||
void TimelineWidget::TrackIndexChanged(int old, int now)
|
||||
{
|
||||
Track* track = static_cast<Track*>(sender());
|
||||
|
||||
Track::Reference old_ref(track->type(), old);
|
||||
Track::Reference new_ref(track->type(), now);
|
||||
|
||||
auto track_selections = selections_.take(old_ref);
|
||||
if (!track_selections.isEmpty()) {
|
||||
selections_.insert(new_ref, track_selections);
|
||||
}
|
||||
}
|
||||
|
||||
void TimelineWidget::AddGhost(TimelineViewGhostItem *ghost)
|
||||
{
|
||||
ghost_items_.append(ghost);
|
||||
|
||||
@@ -351,6 +351,8 @@ private slots:
|
||||
|
||||
void SampleRateChanged();
|
||||
|
||||
void TrackIndexChanged(int old, int now);
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ TrackViewItem::TrackViewItem(Track* track, QWidget *parent) :
|
||||
label_ = new ClickableLabel();
|
||||
connect(label_, &ClickableLabel::MouseDoubleClicked, this, &TrackViewItem::LabelClicked);
|
||||
connect(track_, &Track::LabelChanged, this, &TrackViewItem::UpdateLabel);
|
||||
connect(track_, &Track::IndexChanged, this, &TrackViewItem::UpdateLabel);
|
||||
UpdateLabel();
|
||||
stack_->addWidget(label_);
|
||||
|
||||
|
||||
@@ -533,7 +533,15 @@ void TimelineView::SetScrollCoordinates(const QPoint &pt)
|
||||
|
||||
void TimelineView::ConnectTrackList(TrackList *list)
|
||||
{
|
||||
if (connected_track_list_) {
|
||||
disconnect(connected_track_list_, &TrackList::TrackListChanged, this, &TimelineView::TrackListChanged);
|
||||
}
|
||||
|
||||
connected_track_list_ = list;
|
||||
|
||||
if (connected_track_list_) {
|
||||
connect(connected_track_list_, &TrackList::TrackListChanged, this, &TimelineView::TrackListChanged);
|
||||
}
|
||||
}
|
||||
|
||||
void TimelineView::SetBeamCursor(const TimelineCoordinate &coord)
|
||||
@@ -589,4 +597,10 @@ void TimelineView::UserSetTime(const int64_t &time)
|
||||
emit TimeChanged(time);
|
||||
}
|
||||
|
||||
void TimelineView::TrackListChanged()
|
||||
{
|
||||
UpdateSceneRect();
|
||||
viewport()->update();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -141,6 +141,9 @@ private:
|
||||
|
||||
bool show_waveforms_;
|
||||
|
||||
private slots:
|
||||
void TrackListChanged();
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user