]> git.saurik.com Git - wxWidgets.git/commitdiff
Remove workarounds for wxTextCtrl::SetValue() events in pickers code.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 9 Sep 2012 13:35:57 +0000 (13:35 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 9 Sep 2012 13:35:57 +0000 (13:35 +0000)
Simply use ChangeValue() instead of SetValue() to avoid the unwanted events
instead of using guard variables.

No real changes but the code is simpler and shorter now.

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

include/wx/clrpicker.h
include/wx/filepicker.h
include/wx/fontpicker.h
src/common/clrpickercmn.cpp
src/common/filepickercmn.cpp
src/common/fontpickercmn.cpp

index 3be8c2f764ef55dbe8ee785ba74b7f1be115fffe..9228596daaa70a5fb3388ff180291c1d0ca5361c 100644 (file)
@@ -98,7 +98,7 @@ protected:
 class WXDLLIMPEXP_CORE wxColourPickerCtrl : public wxPickerBase
 {
 public:
-    wxColourPickerCtrl() : m_bIgnoreNextTextCtrlUpdate(false) {}
+    wxColourPickerCtrl() {}
     virtual ~wxColourPickerCtrl() {}
 
 
@@ -107,7 +107,6 @@ public:
         const wxSize& size = wxDefaultSize, long style = wxCLRP_DEFAULT_STYLE,
         const wxValidator& validator = wxDefaultValidator,
         const wxString& name = wxColourPickerCtrlNameStr)
-        : m_bIgnoreNextTextCtrlUpdate(false)
         { Create(parent, id, col, pos, size, style, validator, name); }
 
     bool Create(wxWindow *parent, wxWindowID id,
@@ -148,9 +147,6 @@ protected:
     virtual long GetPickerStyle(long style) const
         { return (style & wxCLRP_SHOW_LABEL); }
 
-    // true if the next UpdateTextCtrl() call is to ignore
-    bool m_bIgnoreNextTextCtrlUpdate;
-
 private:
     DECLARE_DYNAMIC_CLASS(wxColourPickerCtrl)
 };
index b1502d0f0e9e2f347c19e21e7322cf9b2fff96e0..7445ff6c89063890806dfe24421f56f40f1f3ef3 100644 (file)
@@ -148,7 +148,7 @@ protected:
 class WXDLLIMPEXP_CORE wxFileDirPickerCtrlBase : public wxPickerBase
 {
 public:
-    wxFileDirPickerCtrlBase() : m_bIgnoreNextTextCtrlUpdate(false) {}
+    wxFileDirPickerCtrlBase() {}
 
 protected:
     // NB: no default values since this function will never be used
@@ -209,9 +209,6 @@ protected:
 
 protected:
 
-    // true if the next UpdateTextCtrl() call is to ignore
-    bool m_bIgnoreNextTextCtrlUpdate;
-
     // m_picker object as wxFileDirPickerWidgetBase interface
     wxFileDirPickerWidgetBase *m_pickerIface;
 };
index 243e613871da68409cc6935a663900fc30fd0073..d08b9e850da79a56b2e95c2cd04fd6ea982aa2b1 100644 (file)
@@ -100,8 +100,7 @@ class WXDLLIMPEXP_CORE wxFontPickerCtrl : public wxPickerBase
 {
 public:
     wxFontPickerCtrl()
-        : m_bIgnoreNextTextCtrlUpdate(false),
-        m_nMaxPointSize(wxFNTP_MAXPOINT_SIZE)
+        : m_nMaxPointSize(wxFNTP_MAXPOINT_SIZE)
     {
     }
 
@@ -116,8 +115,7 @@ public:
                      long style = wxFNTP_DEFAULT_STYLE,
                      const wxValidator& validator = wxDefaultValidator,
                      const wxString& name = wxFontPickerCtrlNameStr)
-        : m_bIgnoreNextTextCtrlUpdate(false),
-          m_nMaxPointSize(wxFNTP_MAXPOINT_SIZE)
+        : m_nMaxPointSize(wxFNTP_MAXPOINT_SIZE)
     {
         Create(parent, id, initial, pos, size, style, validator, name);
     }
@@ -165,9 +163,6 @@ protected:
     long GetPickerStyle(long style) const
         { return (style & (wxFNTP_FONTDESC_AS_LABEL|wxFNTP_USEFONT_FOR_LABEL)); }
 
-    // true if the next UpdateTextCtrl() call is to ignore
-    bool m_bIgnoreNextTextCtrlUpdate;
-
     // the maximum pointsize allowed to the user
     unsigned int m_nMaxPointSize;
 
index 510488dd116b28c68c54cfa8e47f59399d25dca5..9420551b5ac2d04d07475e8a1f56c12e023bace6 100644 (file)
@@ -96,13 +96,6 @@ void wxColourPickerCtrl::UpdatePickerFromTextCtrl()
 {
     wxASSERT(m_text);
 
-    if (m_bIgnoreNextTextCtrlUpdate)
-    {
-        // ignore this update
-        m_bIgnoreNextTextCtrlUpdate = false;
-        return;
-    }
-
     // wxString -> wxColour conversion
     wxColour col(m_text->GetValue());
     if ( !col.IsOk() )
@@ -123,11 +116,9 @@ void wxColourPickerCtrl::UpdateTextCtrlFromPicker()
     if (!m_text)
         return;     // no textctrl to update
 
-    // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED
-    //       which will trigger a unneeded UpdateFromTextCtrl(); thus before using
-    //       SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag...
-    m_bIgnoreNextTextCtrlUpdate = true;
-    m_text->SetValue(M_PICKER->GetColour().GetAsString());
+    // Take care to use ChangeValue() here and not SetValue() to avoid
+    // infinite recursion.
+    m_text->ChangeValue(M_PICKER->GetColour().GetAsString());
 }
 
 
index 99cbb13d115a1e8e595522452ac7fe8403b73e26..49abded37fa387a5d47e6aae8c1cb7f93d1e0881 100644 (file)
@@ -115,13 +115,6 @@ void wxFileDirPickerCtrlBase::UpdatePickerFromTextCtrl()
 {
     wxASSERT(m_text);
 
-    if (m_bIgnoreNextTextCtrlUpdate)
-    {
-        // ignore this update
-        m_bIgnoreNextTextCtrlUpdate = false;
-        return;
-    }
-
     // remove the eventually present path-separator from the end of the textctrl
     // string otherwise we would generate a wxFileDirPickerEvent when changing
     // from e.g. /home/user to /home/user/ and we want to avoid it !
@@ -150,11 +143,10 @@ void wxFileDirPickerCtrlBase::UpdateTextCtrlFromPicker()
     if (!m_text)
         return;     // no textctrl to update
 
-    // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED
-    //       which will trigger a unneeded UpdateFromTextCtrl(); thus before using
-    //       SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag...
-    m_bIgnoreNextTextCtrlUpdate = true;
-    m_text->SetValue(m_pickerIface->GetPath());
+    // Take care to use ChangeValue() here and not SetValue() to avoid
+    // generating an event that would trigger UpdateTextCtrlFromPicker()
+    // resulting in infinite recursion.
+    m_text->ChangeValue(m_pickerIface->GetPath());
 }
 
 
index 6718668c0104d4edcf3e7414e3a1b0767699d1de..107d8c7a1407e0649fceb74ff11f0f9b062f0482 100644 (file)
@@ -125,13 +125,6 @@ void wxFontPickerCtrl::UpdatePickerFromTextCtrl()
 {
     wxASSERT(m_text);
 
-    if (m_bIgnoreNextTextCtrlUpdate)
-    {
-        // ignore this update
-        m_bIgnoreNextTextCtrlUpdate = false;
-        return;
-    }
-
     // NB: we don't use the wxFont::wxFont(const wxString &) constructor
     //     since that constructor expects the native font description
     //     string returned by wxFont::GetNativeFontInfoDesc() and not
@@ -155,11 +148,9 @@ void wxFontPickerCtrl::UpdateTextCtrlFromPicker()
     if (!m_text)
         return;     // no textctrl to update
 
-    // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED
-    //       which will trigger a unneeded UpdateFromTextCtrl(); thus before using
-    //       SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag...
-    m_bIgnoreNextTextCtrlUpdate = true;
-    m_text->SetValue(Font2String(M_PICKER->GetSelectedFont()));
+    // Take care to use ChangeValue() here and not SetValue() to avoid
+    // infinite recursion.
+    m_text->ChangeValue(Font2String(M_PICKER->GetSelectedFont()));
 }