From: Jean-Baptiste Mardelle Date: Sun, 3 Jul 2011 10:54:21 +0000 (+0000) Subject: Fix dragging of parameter widget with large range (for example size in geometry widget) X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=61e4c78559015d24b04c947f01fdeb1ce1a45eb9;p=kdenlive Fix dragging of parameter widget with large range (for example size in geometry widget) svn path=/trunk/kdenlive/; revision=5757 --- diff --git a/src/dragvalue.cpp b/src/dragvalue.cpp index e3416795..a69f6bd0 100644 --- a/src/dragvalue.cpp +++ b/src/dragvalue.cpp @@ -61,7 +61,7 @@ DragValue::DragValue(const QString &label, double defaultValue, int decimals, do QHBoxLayout *l = new QHBoxLayout; l->setSpacing(0); l->setContentsMargins(0, 0, 0, 0); - m_label = new CustomLabel(label, showSlider, this); + m_label = new CustomLabel(label, showSlider, m_maximum - m_minimum, this); l->addWidget(m_label); if (decimals == 0) { m_label->setMaximum(max - min); @@ -88,7 +88,10 @@ DragValue::DragValue(const QString &label, double defaultValue, int decimals, do m_doubleEdit->setAlignment(Qt::AlignRight | Qt::AlignVCenter); m_doubleEdit->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); m_doubleEdit->setRange(m_minimum, m_maximum); - m_doubleEdit->setSingleStep((m_maximum - m_minimum) / 100.0); + double factor = 100; + if (m_maximum - m_minimum > 10000) factor = 1000; + m_label->setStep(1); + m_doubleEdit->setSingleStep((m_maximum - m_minimum) / factor); l->addWidget(m_doubleEdit); connect(m_doubleEdit, SIGNAL(valueChanged(double)), this, SLOT(slotSetValue(double))); connect(m_doubleEdit, SIGNAL(editingFinished()), this, SLOT(slotEditingFinished())); @@ -339,7 +342,7 @@ void DragValue::setInTimelineProperty(bool intimeline) } -CustomLabel::CustomLabel(const QString &label, bool showSlider, QWidget* parent) : +CustomLabel::CustomLabel(const QString &label, bool showSlider, int range, QWidget* parent) : QProgressBar(parent), m_dragMode(false), m_showSlider(showSlider), @@ -351,9 +354,9 @@ CustomLabel::CustomLabel(const QString &label, bool showSlider, QWidget* parent) setFocusPolicy(Qt::ClickFocus); setCursor(Qt::PointingHandCursor); setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum); - setRange(0, 1000); - - if (!showSlider) { + if (showSlider) setRange(0, 1000); + else { + setRange(0, range); QSize sh; const QFontMetrics &fm = fontMetrics(); sh.setWidth(fm.width(" " + label + " ")); diff --git a/src/dragvalue.h b/src/dragvalue.h index b28e038b..22e9916c 100644 --- a/src/dragvalue.h +++ b/src/dragvalue.h @@ -38,7 +38,7 @@ class CustomLabel : public QProgressBar { Q_OBJECT public: - CustomLabel(const QString &label, bool showSlider = true, QWidget *parent = 0); + CustomLabel(const QString &label, bool showSlider = true, int range = 1000, QWidget *parent = 0); void setProgressValue(double value); void setStep(double step);