Add wxTextEntryBase::ForwardEnableTextChangedEvents().

Use this method to forward the status of text events in the implementation of
wxComboBox in wxOSX/Carbon. This ensures that the events are correctly [not]
generated when various wxComboBox methods are called.

The unit tests now also pass with wxOSX/Carbon.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63882 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2010-04-06 18:46:35 +00:00
parent e567904ae6
commit 356fd0b532
3 changed files with 21 additions and 7 deletions

View File

@ -132,7 +132,9 @@ class WXDLLIMPEXP_CORE wxComboBox : public wxControl, public wxComboBoxBase
virtual bool CanRedo() const;
virtual wxClientDataType GetClientDataType() const;
#endif
virtual wxTextWidgetImpl* GetTextPeer() const;
#endif // wxOSX_USE_CARBON

View File

@ -159,8 +159,8 @@ public:
{ return DoGetMargins(); }
// events
// ------
// implementation only
// -------------------
// generate the wxEVT_COMMAND_TEXT_UPDATED event for GetEditableWindow(),
// like SetValue() does and return true if the event was processed
@ -168,6 +168,21 @@ public:
// NB: this is public for wxRichTextCtrl use only right now, do not call it
static bool SendTextUpdatedEvent(wxWindow *win);
// this function is provided solely for the purpose of forwarding text
// change notifications state from one control to another, e.g. it can be
// used by a wxComboBox which derives from wxTextEntry if it delegates all
// of its methods to another wxTextCtrl
void ForwardEnableTextChangedEvents(bool enable)
{
// it's important to call the functions which update m_eventsBlock here
// and not just our own EnableTextChangedEvents() because our state
// (i.e. the result of EventsAllowed()) must change as well
if ( enable )
ResumeTextChangedEvents();
else
SuppressTextChangedEvents();
}
protected:
// flags for DoSetValue(): common part of SetValue() and ChangeValue() and
// also used to implement WriteText() in wxMSW
@ -231,6 +246,7 @@ protected:
SendTextUpdatedEvent();
}
private:
// suppress or resume the text changed events generation: don't use these
// functions directly, use EventsSuppressor class above instead

View File

@ -59,10 +59,6 @@ public:
m_cb = cb;
}
void ForwardEnableTextChangedEvents(bool enable)
{
EnableTextChangedEvents(enable);
}
protected:
void OnChar( wxKeyEvent& event )
{