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::SetValue(value);
} }
// wxTextEntry overrides
virtual bool SetHint(const wxString& hint);
// wxWindow overrides // wxWindow overrides
virtual wxVisualAttributes GetDefaultAttributes() const virtual wxVisualAttributes GetDefaultAttributes() const
{ {

View File

@@ -456,6 +456,10 @@ public:
currently you should avoid calling methods such as WriteText() or currently you should avoid calling methods such as WriteText() or
Replace() when using hints and the text control is empty. 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 @since 2.9.0
*/ */
virtual bool SetHint(const wxString& hint); 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"), m_readonly = new MyTextCtrl( this, wxID_ANY, wxT("Read only"),
wxPoint(10,90), wxSize(140,wxDefaultCoord), wxTE_READONLY ); 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)); wxPoint(10, 130), wxSize(140, wxDefaultCoord));
m_limited->SetHint("Max 8 ch");
m_limited->SetMaxLength(8); m_limited->SetMaxLength(8);
// multi line text controls // multi line text controls

View File

@@ -1139,6 +1139,18 @@ bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event)
return handled; 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 // do the window-specific processing after processing the update event
void wxTextCtrlBase::DoUpdateWindowUI(wxUpdateUIEvent& event) void wxTextCtrlBase::DoUpdateWindowUI(wxUpdateUIEvent& event)
{ {