From: Vadim Zeitlin Date: Sun, 9 Sep 2012 13:35:57 +0000 (+0000) Subject: Remove workarounds for wxTextCtrl::SetValue() events in pickers code. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/44b7211689ec6c63c8e98c73a7ecd13994328ba7 Remove workarounds for wxTextCtrl::SetValue() events in pickers code. 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 --- diff --git a/include/wx/clrpicker.h b/include/wx/clrpicker.h index 3be8c2f764..9228596daa 100644 --- a/include/wx/clrpicker.h +++ b/include/wx/clrpicker.h @@ -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) }; diff --git a/include/wx/filepicker.h b/include/wx/filepicker.h index b1502d0f0e..7445ff6c89 100644 --- a/include/wx/filepicker.h +++ b/include/wx/filepicker.h @@ -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; }; diff --git a/include/wx/fontpicker.h b/include/wx/fontpicker.h index 243e613871..d08b9e850d 100644 --- a/include/wx/fontpicker.h +++ b/include/wx/fontpicker.h @@ -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; diff --git a/src/common/clrpickercmn.cpp b/src/common/clrpickercmn.cpp index 510488dd11..9420551b5a 100644 --- a/src/common/clrpickercmn.cpp +++ b/src/common/clrpickercmn.cpp @@ -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()); } diff --git a/src/common/filepickercmn.cpp b/src/common/filepickercmn.cpp index 99cbb13d11..49abded37f 100644 --- a/src/common/filepickercmn.cpp +++ b/src/common/filepickercmn.cpp @@ -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()); } diff --git a/src/common/fontpickercmn.cpp b/src/common/fontpickercmn.cpp index 6718668c01..107d8c7a14 100644 --- a/src/common/fontpickercmn.cpp +++ b/src/common/fontpickercmn.cpp @@ -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())); }