From: Vadim Zeitlin Date: Tue, 10 Jul 2012 23:52:10 +0000 (+0000) Subject: Forbid setting hints for multi-line text controls. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/7dd65e5abec0e17660fcfad691f4f33686c01d9b 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 --- diff --git a/include/wx/textctrl.h b/include/wx/textctrl.h index f8a344d01e..57dfeb79b4 100644 --- a/include/wx/textctrl.h +++ b/include/wx/textctrl.h @@ -734,6 +734,9 @@ public: wxTextEntry::SetValue(value); } + // wxTextEntry overrides + virtual bool SetHint(const wxString& hint); + // wxWindow overrides virtual wxVisualAttributes GetDefaultAttributes() const { diff --git a/interface/wx/textentry.h b/interface/wx/textentry.h index 0a5a5e2230..790f08242f 100644 --- a/interface/wx/textentry.h +++ b/interface/wx/textentry.h @@ -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); diff --git a/samples/text/text.cpp b/samples/text/text.cpp index 12662153bd..094bcc3e6b 100644 --- a/samples/text/text.cpp +++ b/samples/text/text.cpp @@ -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 diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 541f996a32..dd84b88556 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -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) {