]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix wxTextEntryDialog::GetValue() when using SetTextValidator().
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 4 Apr 2013 00:11:00 +0000 (00:11 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 4 Apr 2013 00:11:00 +0000 (00:11 +0000)
Associating a validator with the text control in wxTextEntryDialog resulted in
GetValue() always returning an empty string which was completely unexpected.

Fix this by setting the value string manually to avoid interfering with any
possibly used validators.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73774 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/textdlgg.h
src/generic/textdlgg.cpp

index 4d37d24251304e4cd5d03c14f93b1fe662f419d0..2b78b8d9d74e3a770e27c520a9ba7dc802efd942 100644 (file)
@@ -69,8 +69,10 @@ public:
 #endif
     void SetTextValidator( wxTextValidatorStyle style = wxFILTER_NONE );
     wxTextValidator* GetTextValidator() { return (wxTextValidator*)m_textctrl->GetValidator(); }
-#endif
-  // wxUSE_VALIDATORS
+#endif // wxUSE_VALIDATORS
+
+    virtual bool TransferDataToWindow();
+    virtual bool TransferDataFromWindow();
 
     // implementation only
     void OnOK(wxCommandEvent& event);
index b00d192f7bd02ab21af62ced1efb07e8e06dfd33..7d52947e51a8239820d7890fc1b19a56ca52870b 100644 (file)
@@ -105,11 +105,6 @@ bool wxTextEntryDialog::Create(wxWindow *parent,
                     Expand().
                     TripleBorder(wxLEFT | wxRIGHT));
 
-#if wxUSE_VALIDATORS
-    wxTextValidator validator( wxFILTER_NONE, &m_value );
-    m_textctrl->SetValidator( validator );
-#endif // wxUSE_VALIDATORS
-
     // 3) buttons if any
     wxSizer *buttonSizer = CreateSeparatedButtonSizer(style & (wxOK | wxCANCEL));
     if ( buttonSizer )
@@ -134,19 +129,26 @@ bool wxTextEntryDialog::Create(wxWindow *parent,
     return true;
 }
 
+bool wxTextEntryDialog::TransferDataToWindow()
+{
+    m_textctrl->SetValue(m_value);
+
+    return wxDialog::TransferDataToWindow();
+}
+
+bool wxTextEntryDialog::TransferDataFromWindow()
+{
+    m_value = m_textctrl->GetValue();
+
+    return wxDialog::TransferDataFromWindow();
+}
+
 void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) )
 {
-#if wxUSE_VALIDATORS
-    if( Validate() && TransferDataFromWindow() )
+    if ( Validate() && TransferDataFromWindow() )
     {
         EndModal( wxID_OK );
     }
-#else
-    m_value = m_textctrl->GetValue();
-
-    EndModal(wxID_OK);
-#endif
-  // wxUSE_VALIDATORS
 }
 
 void wxTextEntryDialog::SetValue(const wxString& val)
@@ -167,8 +169,7 @@ void wxTextEntryDialog::SetTextValidator( long style )
 
 void wxTextEntryDialog::SetTextValidator( wxTextValidatorStyle style )
 {
-    wxTextValidator validator( style, &m_value );
-    m_textctrl->SetValidator( validator );
+    SetTextValidator(wxTextValidator(style));
 }
 
 void wxTextEntryDialog::SetTextValidator( const wxTextValidator& validator )
@@ -176,8 +177,7 @@ void wxTextEntryDialog::SetTextValidator( const wxTextValidator& validator )
     m_textctrl->SetValidator( validator );
 }
 
-#endif
-  // wxUSE_VALIDATORS
+#endif // wxUSE_VALIDATORS
 
 // ----------------------------------------------------------------------------
 // wxPasswordEntryDialog