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