diff --git a/app/widget/slider/sliderbase.cpp b/app/widget/slider/sliderbase.cpp index 713ae15f3..6818b1696 100644 --- a/app/widget/slider/sliderbase.cpp +++ b/app/widget/slider/sliderbase.cpp @@ -278,7 +278,11 @@ void SliderBase::LabelPressed() case kFloat: case kRational: { - drag_ladder_ = new SliderLadder(drag_multiplier_, ladder_element_count_); + if (mode_ == kRational) { + drag_ladder_ = new SliderLadder(drag_multiplier_, ladder_element_count_, "00:00:00:00"); + } else { + drag_ladder_ = new SliderLadder(drag_multiplier_, ladder_element_count_, "00000000"); + } drag_ladder_->SetValue(ValueToString(value_)); drag_ladder_->show(); diff --git a/app/widget/slider/sliderladder.cpp b/app/widget/slider/sliderladder.cpp index 65e25876c..949a09ba9 100644 --- a/app/widget/slider/sliderladder.cpp +++ b/app/widget/slider/sliderladder.cpp @@ -37,8 +37,9 @@ namespace olive { -SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QWidget* parent) : - QFrame(parent, Qt::Popup) +SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QString width_hint, QWidget* parent) : + QFrame(parent, Qt::Popup), + width_hint_(width_hint) { QVBoxLayout* layout = new QVBoxLayout(this); layout->setMargin(0); @@ -52,17 +53,17 @@ SliderLadder::SliderLadder(double drag_multiplier, int nb_outer_values, QWidget* } for (int i=nb_outer_values-1;i>=0;i--) { - elements_.append(new SliderLadderElement(qPow(10, i + 1) * drag_multiplier)); + elements_.append(new SliderLadderElement(qPow(10, i + 1) * drag_multiplier, width_hint_)); } // Create center entry - SliderLadderElement* start_element = new SliderLadderElement(drag_multiplier); + SliderLadderElement* start_element = new SliderLadderElement(drag_multiplier, width_hint_); active_element_ = elements_.size(); start_element->SetHighlighted(true); elements_.append(start_element); for (int i=0;isetAlignment(Qt::AlignCenter); - label_->setFixedWidth(QtUtils::QFontMetricsWidth(label_->fontMetrics(), QStringLiteral("0000000"))); + label_->setFixedWidth(QtUtils::QFontMetricsWidth(label_->fontMetrics(), width_hint)); layout->addWidget(label_); QPalette p = palette(); @@ -291,12 +293,6 @@ void SliderLadderElement::UpdateLabel() } else { label_->setText(value_); } - - // Increase the ladder width if displaying timecode - if (value_.contains(":")) { - label_->setFixedWidth(QtUtils::QFontMetricsWidth(label_->fontMetrics(), QStringLiteral("00:00:00:00"))); - } - } } diff --git a/app/widget/slider/sliderladder.h b/app/widget/slider/sliderladder.h index ca67c303d..e98150544 100644 --- a/app/widget/slider/sliderladder.h +++ b/app/widget/slider/sliderladder.h @@ -33,7 +33,7 @@ class SliderLadderElement : public QWidget { Q_OBJECT public: - SliderLadderElement(const double& multiplier, QWidget* parent = nullptr); + SliderLadderElement(const double& multiplier, QString width_hint, QWidget* parent = nullptr); void SetHighlighted(bool e); @@ -58,13 +58,15 @@ private: bool multiplier_visible_; + QString width_hint; + }; class SliderLadder : public QFrame { Q_OBJECT public: - SliderLadder(double drag_multiplier, int nb_outer_values, QWidget* parent = nullptr); + SliderLadder(double drag_multiplier, int nb_outer_values, QString width_hint, QWidget* parent = nullptr); virtual ~SliderLadder() override; @@ -92,6 +94,8 @@ private: QTimer drag_timer_; + QString width_hint_; + private slots: void TimerUpdate();