diff --git a/docs/changes.txt b/docs/changes.txt index 3c0a6f86cc..8bb007806a 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -1,6 +1,13 @@ wxWindows 2 Change Log ---------------------- +next release (2.1.12 or 2.2?) +----------------------------- + +wxGTK: + +- you can use UpdateUI handlers with wxTextCtrl + NOTE: for changes after wxWindows 2.1.0 b4, please see the CVS change log. diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 5f7b55bbeb..26181e21b2 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -37,6 +37,7 @@ #include "wx/window.h" #include "wx/checkbox.h" #include "wx/radiobut.h" + #include "wx/textctrl.h" #include "wx/settings.h" #include "wx/dialog.h" #endif //WX_PRECOMP @@ -1179,42 +1180,44 @@ void wxWindowBase::GetPositionConstraint(int *x, int *y) const // of control classes. void wxWindowBase::UpdateWindowUI() { - wxWindowID id = GetId(); - if ( id > 0 ) + wxUpdateUIEvent event(GetId()); + event.m_eventObject = this; + + if ( GetEventHandler()->ProcessEvent(event) ) { - wxUpdateUIEvent event(id); - event.m_eventObject = this; + if ( event.GetSetEnabled() ) + Enable(event.GetEnabled()); - if ( GetEventHandler()->ProcessEvent(event) ) + if ( event.GetSetText() ) { - if ( event.GetSetEnabled() ) - Enable(event.GetEnabled()); - - if ( event.GetSetText() ) + wxControl *control = wxDynamicCast(this, wxControl); + if ( control ) { - wxControl *control = wxDynamicCast(this, wxControl); - if ( control ) + wxTextCtrl *text = wxDynamicCast(control, wxTextCtrl); + if ( text ) + text->SetValue(event.GetText()); + else control->SetLabel(event.GetText()); } + } #if wxUSE_CHECKBOX - wxCheckBox *checkbox = wxDynamicCast(this, wxCheckBox); - if ( checkbox ) - { - if ( event.GetSetChecked() ) - checkbox->SetValue(event.GetChecked()); - } + wxCheckBox *checkbox = wxDynamicCast(this, wxCheckBox); + if ( checkbox ) + { + if ( event.GetSetChecked() ) + checkbox->SetValue(event.GetChecked()); + } #endif // wxUSE_CHECKBOX #if wxUSE_RADIOBUTTON - wxRadioButton *radiobtn = wxDynamicCast(this, wxRadioButton); - if ( radiobtn ) - { - if ( event.GetSetChecked() ) - radiobtn->SetValue(event.GetChecked()); - } -#endif // wxUSE_RADIOBUTTON + wxRadioButton *radiobtn = wxDynamicCast(this, wxRadioButton); + if ( radiobtn ) + { + if ( event.GetSetChecked() ) + radiobtn->SetValue(event.GetChecked()); } +#endif // wxUSE_RADIOBUTTON } } diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index ec0d15875c..fd5d34bc58 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -963,4 +963,6 @@ void wxTextCtrl::OnInternalIdle() if ((window) && !(GTK_WIDGET_NO_WINDOW(m_widget))) gdk_window_set_cursor( window, cursor.GetCursor() ); } + + UpdateWindowUI(); } diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp index ec0d15875c..fd5d34bc58 100644 --- a/src/gtk1/textctrl.cpp +++ b/src/gtk1/textctrl.cpp @@ -963,4 +963,6 @@ void wxTextCtrl::OnInternalIdle() if ((window) && !(GTK_WIDGET_NO_WINDOW(m_widget))) gdk_window_set_cursor( window, cursor.GetCursor() ); } + + UpdateWindowUI(); }