Don't generate events from wxMSW wxSpinCtrl::SetValue(wxString)
The function was documented to not generate the events, but actually did generate wxEVT_TEXT ones, even if it didn't generate wxEVT_SPINCTRL. This was inconsistent with wxGTK and generic wxSpinCtrlDouble used under MSW, so change this to avoid the unwanted events.
This commit is contained in:
@@ -115,7 +115,10 @@ Changes in behaviour not resulting in compilation errors
|
||||
- wxChoice::GetString() now consistently asserts when passed an invalid index.
|
||||
|
||||
- wxSpinCtrlDouble now always resets its value to GetMin() if an invalid text
|
||||
string is passed to its SetValue() after its creation.
|
||||
string is passed to its SetValue(wxString) overload after its creation.
|
||||
|
||||
- wxSpinCtrl::SetValue(wxString) overload doesn't generate any events with
|
||||
wxMSW, which was already the documented behaviour.
|
||||
|
||||
|
||||
Changes in behaviour which may result in build errors
|
||||
|
@@ -359,12 +359,9 @@ bool wxSpinCtrl::Create(wxWindow *parent,
|
||||
SetRange(min, max);
|
||||
SetValue(initial);
|
||||
|
||||
// Also set the text part of the control if it was specified independently
|
||||
// but don't generate an event for this, it would be unexpected.
|
||||
m_blockEvent = true;
|
||||
// Also set the text part of the control if it was specified independently.
|
||||
if ( !value.empty() )
|
||||
SetValue(value);
|
||||
m_blockEvent = false;
|
||||
|
||||
// Finally deal with the size: notice that this can only be done now both
|
||||
// windows are created and the text one is set up as buddy because
|
||||
@@ -449,10 +446,14 @@ wxString wxSpinCtrl::GetTextValue() const
|
||||
|
||||
void wxSpinCtrl::SetValue(const wxString& text)
|
||||
{
|
||||
m_blockEvent = true;
|
||||
|
||||
if ( !::SetWindowText(GetBuddyHwnd(), text.c_str()) )
|
||||
{
|
||||
wxLogLastError(wxT("SetWindowText(buddy)"));
|
||||
}
|
||||
|
||||
m_blockEvent = false;
|
||||
}
|
||||
|
||||
void wxSpinCtrl::SetValue(int val)
|
||||
|
@@ -177,9 +177,15 @@ TEST_CASE_METHOD(SpinCtrlDoubleTestCase,
|
||||
CHECK( m_spin->GetTextValue() == "57.30" );
|
||||
CHECK( m_spin->GetValue() == 57.3 );
|
||||
|
||||
CHECK( updatedSpin.GetCount() == 0 );
|
||||
CHECK( updatedText.GetCount() == 0 );
|
||||
|
||||
m_spin->SetValue("");
|
||||
CHECK( m_spin->GetTextValue() == "" );
|
||||
CHECK( m_spin->GetValue() == 0 );
|
||||
|
||||
CHECK( updatedSpin.GetCount() == 0 );
|
||||
CHECK( updatedText.GetCount() == 0 );
|
||||
}
|
||||
|
||||
#if wxUSE_UIACTIONSIMULATOR
|
||||
|
@@ -276,9 +276,15 @@ TEST_CASE_METHOD(SpinCtrlTestCase2, "SpinCtrl::Value", "[spinctrl]")
|
||||
CHECK( m_spin->GetTextValue() == "57" );
|
||||
CHECK( m_spin->GetValue() == 57 );
|
||||
|
||||
CHECK(updatedSpin.GetCount() == 0);
|
||||
CHECK(updatedText.GetCount() == 0);
|
||||
|
||||
m_spin->SetValue("");
|
||||
CHECK( m_spin->GetTextValue() == "" );
|
||||
CHECK( m_spin->GetValue() == 0 );
|
||||
|
||||
CHECK(updatedSpin.GetCount() == 0);
|
||||
CHECK(updatedText.GetCount() == 0);
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(SpinCtrlTestCase2, "SpinCtrl::Base", "[spinctrl]")
|
||||
|
Reference in New Issue
Block a user