Forbid setting hints for multi-line text controls.

This doesn't work anyhow, so make it explicit by asserting if an attempt to do
it is made. And document this.

Also add a test of SetHint() to the text sample to verify it still works.

Closes #14456.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72010 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-07-10 23:52:10 +00:00
parent 52ae1e9018
commit 7dd65e5abe
4 changed files with 21 additions and 1 deletions

View File

@ -734,6 +734,9 @@ public:
wxTextEntry::SetValue(value);
}
// wxTextEntry overrides
virtual bool SetHint(const wxString& hint);
// wxWindow overrides
virtual wxVisualAttributes GetDefaultAttributes() const
{

View File

@ -456,6 +456,10 @@ public:
currently you should avoid calling methods such as WriteText() or
Replace() when using hints and the text control is empty.
@remarks Hints can only be used for single line text controls,
native multi-line text controls don't support hints under any
platform and hence wxWidgets doesn't provide them neither.
@since 2.9.0
*/
virtual bool SetHint(const wxString& hint);

View File

@ -1077,8 +1077,9 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
m_readonly = new MyTextCtrl( this, wxID_ANY, wxT("Read only"),
wxPoint(10,90), wxSize(140,wxDefaultCoord), wxTE_READONLY );
m_limited = new MyTextCtrl(this, wxID_ANY, wxT("Max 8 ch"),
m_limited = new MyTextCtrl(this, wxID_ANY, "",
wxPoint(10, 130), wxSize(140, wxDefaultCoord));
m_limited->SetHint("Max 8 ch");
m_limited->SetMaxLength(8);
// multi line text controls

View File

@ -1139,6 +1139,18 @@ bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event)
return handled;
}
// ----------------------------------------------------------------------------
// Other miscellaneous stuff
// ----------------------------------------------------------------------------
bool wxTextCtrlBase::SetHint(const wxString& hint)
{
wxCHECK_MSG( IsSingleLine(), false,
wxS("Hints can only be set for single line text controls") );
return wxTextEntry::SetHint(hint);
}
// do the window-specific processing after processing the update event
void wxTextCtrlBase::DoUpdateWindowUI(wxUpdateUIEvent& event)
{