From d9d551f6a20a33fc94a824f7d7253e07dd6481f9 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Tue, 14 Apr 2009 20:09:39 +0000 Subject: [PATCH] adapting TextUpdateEvents, using wxTextEntry API git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60154 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/combobox.h | 2 ++ include/wx/osx/textctrl.h | 18 +++++----------- src/osx/carbon/combobox.cpp | 12 ++++++++++- src/osx/textctrl_osx.cpp | 43 ++++++++----------------------------- 4 files changed, 27 insertions(+), 48 deletions(-) diff --git a/include/wx/osx/combobox.h b/include/wx/osx/combobox.h index 9f9602903c..92ff947afe 100644 --- a/include/wx/osx/combobox.h +++ b/include/wx/osx/combobox.h @@ -158,6 +158,8 @@ protected: virtual void SetClientDataType(wxClientDataType clientDataItemsType); + virtual void EnableTextChangedEvents(bool enable); + // the subcontrols wxComboBoxText* m_text; wxComboBoxChoice* m_choice; diff --git a/include/wx/osx/textctrl.h b/include/wx/osx/textctrl.h index 749220e843..5692278383 100644 --- a/include/wx/osx/textctrl.h +++ b/include/wx/osx/textctrl.h @@ -79,7 +79,6 @@ public: // editing virtual void Clear(); - virtual void Replace(long from, long to, const wxString& value); virtual void Remove(long from, long to); // sets/clears the dirty flag @@ -100,7 +99,6 @@ public: // writing text inserts it at the current position; // appending always inserts it at the end virtual void WriteText(const wxString& text); - virtual void AppendText(const wxString& text); // translate between the position (which is just an index into the textctrl // considering all its contents as a single strings) and (x, y) coordinates @@ -176,7 +174,6 @@ protected: virtual wxSize DoGetBestSize() const; - virtual void DoSetValue(const wxString& value, int flags = 0); virtual wxString DoGetValue() const; bool m_editable; @@ -187,17 +184,12 @@ protected: // need to make this public because of the current implementation via callbacks unsigned long m_maxLength; - bool GetTriggerOnSetValue() const - { - return m_triggerOnSetValue; + virtual void EnableTextChangedEvents(bool enable) + { + m_triggerUpdateEvents = enable; } - - void SetTriggerOnSetValue(bool trigger) - { - m_triggerOnSetValue = trigger; - } - - bool m_triggerOnSetValue ; + + bool m_triggerUpdateEvents ; private : wxMenu *m_privateContextMenu; diff --git a/src/osx/carbon/combobox.cpp b/src/osx/carbon/combobox.cpp index 53b729485e..79564de842 100644 --- a/src/osx/carbon/combobox.cpp +++ b/src/osx/carbon/combobox.cpp @@ -57,9 +57,12 @@ public: : wxTextCtrl( cb , 1 ) { m_cb = cb; - SetTriggerOnSetValue( false ); } + void ForwardEnableTextChangedEvents(bool enable) + { + EnableTextChangedEvents(enable); + } protected: void OnChar( wxKeyEvent& event ) { @@ -147,6 +150,7 @@ protected: event.Skip(); } + private: wxComboBox *m_cb; @@ -394,6 +398,12 @@ bool wxComboBox::Create(wxWindow *parent, return true; } +void wxComboBox::EnableTextChangedEvents(bool enable) +{ + if ( m_text ) + m_text->ForwardEnableTextChangedEvents(enable); +} + wxString wxComboBox::DoGetValue() const { wxCHECK_MSG( m_text, wxString(), "can't be called for read-only combobox" ); diff --git a/src/osx/textctrl_osx.cpp b/src/osx/textctrl_osx.cpp index cc5ac72d18..1059c4b6c6 100644 --- a/src/osx/textctrl_osx.cpp +++ b/src/osx/textctrl_osx.cpp @@ -80,7 +80,7 @@ void wxTextCtrl::Init() m_maxLength = 0; m_privateContextMenu = NULL; - m_triggerOnSetValue = true ; + m_triggerUpdateEvents = true ; } wxTextCtrl::~wxTextCtrl() @@ -167,20 +167,6 @@ void wxTextCtrl::GetSelection(long* from, long* to) const GetTextPeer()->GetSelection( from , to ) ; } -void wxTextCtrl::DoSetValue(const wxString& str, int flags) -{ - // optimize redraws - if ( GetValue() == str ) - return; - - GetTextPeer()->SetStringValue( str ) ; - - if ( (flags & SetValue_SendEvent) && m_triggerOnSetValue ) - { - SendTextUpdatedEvent(); - } -} - void wxTextCtrl::SetMaxLength(unsigned long len) { m_maxLength = len ; @@ -225,10 +211,8 @@ void wxTextCtrl::Cut() { GetTextPeer()->Cut() ; - wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, m_windowId ); - event.SetEventObject( this ); - HandleWindowEvent( event ); - } + SendTextUpdatedEvent(); + } } void wxTextCtrl::Paste() @@ -238,10 +222,7 @@ void wxTextCtrl::Paste() GetTextPeer()->Paste() ; // TODO: eventually we should add setting the default style again - - wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, m_windowId ); - event.SetEventObject( this ); - HandleWindowEvent( event ); + SendTextUpdatedEvent(); } } @@ -307,14 +288,11 @@ wxTextPos wxTextCtrl::GetLastPosition() const return GetTextPeer()->GetLastPosition() ; } -void wxTextCtrl::Replace(long from, long to, const wxString& str) -{ - GetTextPeer()->Replace( from , to , str ) ; -} - void wxTextCtrl::Remove(long from, long to) { GetTextPeer()->Remove( from , to ) ; + if ( m_triggerUpdateEvents ) + SendTextUpdatedEvent(); } void wxTextCtrl::SetSelection(long from, long to) @@ -325,17 +303,14 @@ void wxTextCtrl::SetSelection(long from, long to) void wxTextCtrl::WriteText(const wxString& str) { GetTextPeer()->WriteText( str ) ; -} - -void wxTextCtrl::AppendText(const wxString& text) -{ - SetInsertionPointEnd(); - WriteText( text ); + if ( m_triggerUpdateEvents ) + SendTextUpdatedEvent(); } void wxTextCtrl::Clear() { GetTextPeer()->Clear() ; + SendTextUpdatedEvent(); } bool wxTextCtrl::IsModified() const -- 2.45.2