diff --git a/src/bandwidth_limit.ui b/src/bandwidth_limit.ui index 25bf4caed..de114a61f 100644 --- a/src/bandwidth_limit.ui +++ b/src/bandwidth_limit.ui @@ -38,7 +38,7 @@ - 10000 + 65535 0 diff --git a/src/speedlimitdlg.cpp b/src/speedlimitdlg.cpp index 7272587d3..932c86f7d 100644 --- a/src/speedlimitdlg.cpp +++ b/src/speedlimitdlg.cpp @@ -50,8 +50,7 @@ long SpeedLimitDialog::askSpeedLimit(bool *ok, QString title, long default_value { SpeedLimitDialog dlg; dlg.setWindowTitle(title); - dlg.setMaxValue(max_value / 1024.); - dlg.setDefaultValue(default_value / 1024.); + dlg.setupDialog(max_value / 1024., default_value / 1024.); if (dlg.exec() == QDialog::Accepted) { *ok = true; int val = dlg.getSpeedLimit(); @@ -86,6 +85,8 @@ void SpeedLimitDialog::updateSliderValue(int val) const spinBandwidth->setSpecialValueText(QString::fromUtf8("∞")); spinBandwidth->setSuffix(QString::fromUtf8("")); } + if (val > bandwidthSlider->maximum()) + bandwidthSlider->setMaximum(val); bandwidthSlider->setValue(val); } @@ -97,18 +98,17 @@ long SpeedLimitDialog::getSpeedLimit() const return -1; } -void SpeedLimitDialog::setMaxValue(long val) const +void SpeedLimitDialog::setupDialog(long max_slider, long val) const { - if (val > 0) { - bandwidthSlider->setMaximum(val); - spinBandwidth->setMaximum(val); - } -} - -void SpeedLimitDialog::setDefaultValue(long val) const -{ - if (val < 0) val = 0; - if (val > bandwidthSlider->maximum()) val = bandwidthSlider->maximum(); + if (val < 0) + val = 0; + if (max_slider < 0) + max_slider = 1000; + // This can happen for example if global rate limit is lower + // than torrent rate limit. + if (val > max_slider) + max_slider = val; + bandwidthSlider->setMaximum(max_slider); bandwidthSlider->setValue(val); updateSpinValue(val); } \ No newline at end of file diff --git a/src/speedlimitdlg.h b/src/speedlimitdlg.h index fbf056aed..96a36171d 100644 --- a/src/speedlimitdlg.h +++ b/src/speedlimitdlg.h @@ -48,8 +48,7 @@ protected slots: void updateSpinValue(int val) const; void updateSliderValue(int val) const; long getSpeedLimit() const; - void setMaxValue(long val) const; - void setDefaultValue(long val) const; + void setupDialog(long max_slider, long val) const; }; #endif