Browse Source

[Qt] don't allow amount changes when AmountSpinBox is read-only

- before it was possible to use the steps to change e.g. amouns of
  authenticated or unauthenticated payment requests (AmountSpinBox is
  already set to read-only here) - this is now fixed
- also move the reimplemented stepEnabled() function to the
  protected section of our class, where it belongs (see Qt doc)
0.13
Philip Kaufmann 10 years ago
parent
commit
0fd9e2bf43
  1. 38
      src/qt/bitcoinamountfield.cpp

38
src/qt/bitcoinamountfield.cpp

@ -20,6 +20,7 @@
class AmountSpinBox: public QAbstractSpinBox class AmountSpinBox: public QAbstractSpinBox
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit AmountSpinBox(QWidget *parent): explicit AmountSpinBox(QWidget *parent):
QAbstractSpinBox(parent), QAbstractSpinBox(parent),
@ -72,23 +73,6 @@ public:
setValue(val); setValue(val);
} }
StepEnabled stepEnabled() const
{
StepEnabled rv = 0;
if(text().isEmpty()) // Allow step-up with empty field
return StepUpEnabled;
bool valid = false;
CAmount val = value(&valid);
if(valid)
{
if(val > 0)
rv |= StepDownEnabled;
if(val < BitcoinUnits::maxMoney())
rv |= StepUpEnabled;
}
return rv;
}
void setDisplayUnit(int unit) void setDisplayUnit(int unit)
{ {
bool valid = false; bool valid = false;
@ -139,6 +123,7 @@ public:
} }
return cachedMinimumSizeHint; return cachedMinimumSizeHint;
} }
private: private:
int currentUnit; int currentUnit;
CAmount singleStep; CAmount singleStep;
@ -179,6 +164,25 @@ protected:
return QAbstractSpinBox::event(event); return QAbstractSpinBox::event(event);
} }
StepEnabled stepEnabled() const
{
StepEnabled rv = 0;
if (isReadOnly()) // Disable steps when AmountSpinBox is read-only
return StepNone;
if(text().isEmpty()) // Allow step-up with empty field
return StepUpEnabled;
bool valid = false;
CAmount val = value(&valid);
if(valid)
{
if(val > 0)
rv |= StepDownEnabled;
if(val < BitcoinUnits::maxMoney())
rv |= StepUpEnabled;
}
return rv;
}
signals: signals:
void valueChanged(); void valueChanged();
}; };

Loading…
Cancel
Save