From 0fd9e2bf43d217d9a76003476661c8ab53606548 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Sat, 10 Jan 2015 15:02:12 +0100 Subject: [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) --- src/qt/bitcoinamountfield.cpp | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/qt/bitcoinamountfield.cpp b/src/qt/bitcoinamountfield.cpp index fdb9bcd6d6..3e0ca0282b 100644 --- a/src/qt/bitcoinamountfield.cpp +++ b/src/qt/bitcoinamountfield.cpp @@ -20,6 +20,7 @@ class AmountSpinBox: public QAbstractSpinBox { Q_OBJECT + public: explicit AmountSpinBox(QWidget *parent): QAbstractSpinBox(parent), @@ -72,23 +73,6 @@ public: 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) { bool valid = false; @@ -139,6 +123,7 @@ public: } return cachedMinimumSizeHint; } + private: int currentUnit; CAmount singleStep; @@ -179,6 +164,25 @@ protected: 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: void valueChanged(); }; -- cgit v1.2.3 From 80dd50ccba97fc7cd0d005f51622d6a2ad8dad84 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 13 Jan 2015 11:51:45 +0100 Subject: [Qt] group variables below initial if-clauses in AmountSpinBox::stepEnabled --- src/qt/bitcoinamountfield.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/qt/bitcoinamountfield.cpp b/src/qt/bitcoinamountfield.cpp index 3e0ca0282b..4c00aca985 100644 --- a/src/qt/bitcoinamountfield.cpp +++ b/src/qt/bitcoinamountfield.cpp @@ -166,11 +166,12 @@ protected: 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 + if (text().isEmpty()) // Allow step-up with empty field return StepUpEnabled; + + StepEnabled rv = 0; bool valid = false; CAmount val = value(&valid); if(valid) -- cgit v1.2.3