From d4b29b3bcc66d2a1400ba06af0c9fcd4c06f00fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C4=83t=C4=83lin=20R=C4=83ceanu?= Date: Wed, 20 Feb 2019 15:39:03 +0200 Subject: [PATCH 1/4] Add support for wxEVT_SPIN_[UP|DOWN] events --- src/qt/spinbutt.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/qt/spinbutt.cpp b/src/qt/spinbutt.cpp index 688649461c..df62c3ac1e 100644 --- a/src/qt/spinbutt.cpp +++ b/src/qt/spinbutt.cpp @@ -20,6 +20,7 @@ public: private: void valueChanged(int value); + virtual void stepBy(int steps) wxOVERRIDE; // see QAbstractSpinBox::stepBy() }; wxQtSpinButton::wxQtSpinButton( wxWindow *parent, wxSpinButton *handler ) @@ -40,6 +41,26 @@ void wxQtSpinButton::valueChanged(int value) } } +void wxQtSpinButton::stepBy(int steps) +{ + wxSpinButton* handler = GetHandler(); + if ( !handler ) + return; + + int eventType = (steps < 0) ? wxEVT_SPIN_DOWN : wxEVT_SPIN_UP; + wxSpinEvent directionEvent(eventType, handler->GetId()); + directionEvent.SetPosition(value()); + directionEvent.SetInt(value() + steps * singleStep()); + directionEvent.SetEventObject(handler); + + handler->HandleWindowEvent(directionEvent); // should return value be checked here? + + if ( directionEvent.IsAllowed() ) + { + QSpinBox::stepBy(steps); + } +} + wxSpinButton::wxSpinButton() : m_qtSpinBox(NULL) From 0a1846eb9add6ba9fdd50281ff2301c573e4b51e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C4=83t=C4=83lin=20R=C4=83ceanu?= Date: Wed, 20 Feb 2019 16:06:05 +0200 Subject: [PATCH 2/4] Use correct event type for wxEVT_SPIN --- src/qt/spinbutt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/spinbutt.cpp b/src/qt/spinbutt.cpp index df62c3ac1e..f293aadad9 100644 --- a/src/qt/spinbutt.cpp +++ b/src/qt/spinbutt.cpp @@ -35,7 +35,7 @@ void wxQtSpinButton::valueChanged(int value) wxSpinButton *handler = GetHandler(); if ( handler ) { - wxCommandEvent event( wxEVT_SPIN, handler->GetId() ); + wxSpinEvent event( wxEVT_SPIN, handler->GetId() ); event.SetInt( value ); EmitEvent( event ); } From 7588ed0cf4a2792bc9fa24acb708e2b72ce26112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C4=83t=C4=83lin=20R=C4=83ceanu?= Date: Thu, 21 Feb 2019 08:19:02 +0200 Subject: [PATCH 3/4] Fix small styling issues in previous 2 commits --- src/qt/spinbutt.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qt/spinbutt.cpp b/src/qt/spinbutt.cpp index f293aadad9..bca7ea658e 100644 --- a/src/qt/spinbutt.cpp +++ b/src/qt/spinbutt.cpp @@ -43,17 +43,17 @@ void wxQtSpinButton::valueChanged(int value) void wxQtSpinButton::stepBy(int steps) { - wxSpinButton* handler = GetHandler(); + wxSpinButton* const handler = GetHandler(); if ( !handler ) return; - int eventType = (steps < 0) ? wxEVT_SPIN_DOWN : wxEVT_SPIN_UP; + int eventType = steps < 0 ? wxEVT_SPIN_DOWN : wxEVT_SPIN_UP; wxSpinEvent directionEvent(eventType, handler->GetId()); directionEvent.SetPosition(value()); directionEvent.SetInt(value() + steps * singleStep()); directionEvent.SetEventObject(handler); - handler->HandleWindowEvent(directionEvent); // should return value be checked here? + handler->HandleWindowEvent(directionEvent); if ( directionEvent.IsAllowed() ) { From 1af2b7f05a3af45796924ad7664609d44b69e030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C4=83t=C4=83lin=20R=C4=83ceanu?= Date: Thu, 21 Feb 2019 19:48:45 +0200 Subject: [PATCH 4/4] Correct condition check for vetoed events --- src/qt/spinbutt.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/qt/spinbutt.cpp b/src/qt/spinbutt.cpp index bca7ea658e..7ae3c303fb 100644 --- a/src/qt/spinbutt.cpp +++ b/src/qt/spinbutt.cpp @@ -53,9 +53,7 @@ void wxQtSpinButton::stepBy(int steps) directionEvent.SetInt(value() + steps * singleStep()); directionEvent.SetEventObject(handler); - handler->HandleWindowEvent(directionEvent); - - if ( directionEvent.IsAllowed() ) + if ( !handler->HandleWindowEvent(directionEvent) || directionEvent.IsAllowed() ) { QSpinBox::stepBy(steps); }