From dacf0efd9afa082b1bb591ffaa3df71c6a738fa7 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 18 Aug 2018 22:17:33 +1000 Subject: [PATCH] better timeline scrollbars --- panels/timeline.cpp | 15 +- panels/timeline.ui | 367 ++++++++++++++++++++++++------------------ ui/keyframeview.cpp | 2 +- ui/timelineheader.h | 2 +- ui/timelinewidget.cpp | 5 +- 5 files changed, 221 insertions(+), 170 deletions(-) diff --git a/panels/timeline.cpp b/panels/timeline.cpp index 7a7baef95..8d78f2f4c 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -69,6 +69,12 @@ Timeline::Timeline(QWidget *parent) : ui->toolArrowButton->click(); + int timeline_area_height = (ui->timeline_area->height()>>1); + ui->videoScrollArea->resize(ui->videoScrollArea->width(), timeline_area_height); + ui->audioScrollArea->resize(ui->audioScrollArea->width(), timeline_area_height); + connect(ui->audioScrollArea->horizontalScrollBar(), SIGNAL(valueChanged(int)), ui->videoScrollArea->horizontalScrollBar(), SLOT(setValue(int))); + connect(ui->audioScrollArea->horizontalScrollBar(), SIGNAL(valueChanged(int)), ui->headerScrollArea->horizontalScrollBar(), SLOT(setValue(int))); + update_sequence(); connect(&playback_updater, SIGNAL(timeout()), this, SLOT(repaint_timeline())); @@ -396,14 +402,7 @@ void Timeline::set_zoom(bool in) { zoom *= 2; } else { zoom /= 2; - } - ui->timeline_area->horizontalScrollBar()->setValue( - lerp( - ui->timeline_area->horizontalScrollBar()->value(), - getTimelineScreenPointFromFrame(playhead) - (ui->timeline_area->width()/2), - 0.99 - ) - ); + } redraw_all_clips(false); } diff --git a/panels/timeline.ui b/panels/timeline.ui index 3e301d5db..b7aaa8d9f 100644 --- a/panels/timeline.ui +++ b/panels/timeline.ui @@ -256,171 +256,228 @@ - - - Qt::ScrollBarAlwaysOff + + + + 1 + 0 + - - Qt::ScrollBarAlwaysOn - - - true - - - - - 0 - 0 - 819 - 557 - + + + 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 15 - + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 16777215 + 15 + + + + QFrame::NoFrame + + + QFrame::Plain + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + true + + + + + 0 + 0 + 821 + 16 + - - Qt::ClickFocus + + + 0 + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 15 + + + + Qt::ClickFocus + + + + - - - - - Qt::Vertical + + + + + + Qt::Vertical + + + false + + + false + + + + QFrame::NoFrame - - false + + Qt::ScrollBarAlwaysOn - - false + + Qt::ScrollBarAlwaysOff - - - QFrame::NoFrame + + true + + + Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft + + + + + 0 + 0 + 807 + 277 + - - Qt::ScrollBarAlwaysOn - - - Qt::ScrollBarAlwaysOff - - - true - - - Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft - - - - - 0 - 0 - 805 - 269 - + + + 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Qt::ClickFocus - - - - - - - - - QFrame::NoFrame - - - Qt::ScrollBarAlwaysOn - - - Qt::ScrollBarAlwaysOff - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - 0 - 0 - 805 - 269 - + + 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::ClickFocus - - - - - + + 0 + + + 0 + + + 0 + + + + + Qt::ClickFocus + + + + - - - + + + QFrame::NoFrame + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOn + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 807 + 263 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::ClickFocus + + + + + + + + + @@ -455,12 +512,6 @@
ui/audiomonitor.h
1 - - ScrollArea - QScrollArea -
ui/scrollarea.h
- 1 -
diff --git a/ui/keyframeview.cpp b/ui/keyframeview.cpp index 7a23e3cb5..11b7131ce 100644 --- a/ui/keyframeview.cpp +++ b/ui/keyframeview.cpp @@ -10,7 +10,7 @@ #include #include -#define KEYFRAME_SIZE 5 +#define KEYFRAME_SIZE 6 #define KEYFRAME_POINT_COUNT 4 KeyframeView::KeyframeView(QWidget *parent) : QWidget(parent), mouseover(false), visible_in(0), visible_out(0) { diff --git a/ui/timelineheader.h b/ui/timelineheader.h index e39e84db9..5ac8d8be8 100644 --- a/ui/timelineheader.h +++ b/ui/timelineheader.h @@ -10,7 +10,6 @@ public: explicit TimelineHeader(QWidget *parent = 0); void set_in_point(long p); void set_out_point(long p); - void set_visible_in(long i); bool snapping; @@ -40,6 +39,7 @@ private: signals: public slots: + void set_visible_in(long i); }; #endif // TIMELINEHEADER_H diff --git a/ui/timelinewidget.cpp b/ui/timelinewidget.cpp index 963429ad6..3609e2ac9 100644 --- a/ui/timelinewidget.cpp +++ b/ui/timelinewidget.cpp @@ -10,6 +10,7 @@ #include "ui/sourcetable.h" #include "panels/effectcontrols.h" #include "project/undo.h" +#include "ui_timeline.h" #include "effects/effect.h" #include "effects/transition.h" @@ -1576,8 +1577,8 @@ void TimelineWidget::redraw_clips() { } if (minimumWidth() != panel_width || clip_pixmap.height() != height() || panel_height != minimumHeight()) { - setMinimumWidth(panel_width); - container->setMinimumWidth(panel_width); + panel_timeline->ui->headers->setMinimumWidth(panel_width); + setMinimumWidth(panel_width); setMinimumHeight(panel_height); clip_pixmap = QPixmap(qMax(width(), panel_width), qMax(height(), panel_height)); }