From 0e9cedf6904cfe9e4af11b8f9d09727a79565a50 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Fri, 11 Nov 2022 11:08:35 -0800 Subject: [PATCH] timeline: use last track's height when appending a new one --- .../timelinewidget/undo/timelineundogeneral.cpp | 3 +++ app/widget/timelinewidget/view/timelineview.cpp | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/widget/timelinewidget/undo/timelineundogeneral.cpp b/app/widget/timelinewidget/undo/timelineundogeneral.cpp index 634188e65..d46da4fb8 100644 --- a/app/widget/timelinewidget/undo/timelineundogeneral.cpp +++ b/app/widget/timelinewidget/undo/timelineundogeneral.cpp @@ -126,6 +126,9 @@ void TimelineAddTrackCommand::redo() // Add track to sequence track_->setParent(timeline_->GetParentGraph()); + if (timeline_->GetTrackCount() > 0) { + track_->SetTrackHeight(timeline_->GetTrackAt(timeline_->GetTrackCount()-1)->GetTrackHeight()); + } timeline_->ArrayAppend(); Node::ConnectEdge(track_, timeline_->track_input(timeline_->ArraySize() - 1)); diff --git a/app/widget/timelinewidget/view/timelineview.cpp b/app/widget/timelinewidget/view/timelineview.cpp index 18acf5484..468e7461e 100644 --- a/app/widget/timelinewidget/view/timelineview.cpp +++ b/app/widget/timelinewidget/view/timelineview.cpp @@ -722,10 +722,22 @@ int TimelineView::GetTrackY(int track_index) const int TimelineView::GetTrackHeight(int track_index) const { - if (!connected_track_list_ || track_index >= connected_track_list_->GetTrackCount()) { + if (!connected_track_list_ || connected_track_list_->GetTrackCount() == 0) { + // Handle null or empty track list return Track::GetDefaultTrackHeightInPixels(); } + if (track_index >= connected_track_list_->GetTrackCount()) { + // Handle new track at the end of the list + return connected_track_list_->GetTrackAt(connected_track_list_->GetTrackCount()-1)->GetTrackHeightInPixels(); + } + + if (track_index < 0) { + // Handle new track at the beginning of the list + return connected_track_list_->GetTrackAt(0)->GetTrackHeightInPixels(); + } + + // Track definitely exists, return its actual height return connected_track_list_->GetTrackAt(track_index)->GetTrackHeightInPixels(); }