Allow setting hints for multi-line wxTextCtrl when supported.
Don't prevent people from using hints in wxMSW and wxGTK2, where they work with multiline text controls too, even though they do not work with wxGTK3 nor wxOSX. Closes #14456. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
73a38319d8
commit
e8374a47fe
@ -159,6 +159,7 @@ protected:
|
||||
virtual bool UseGTKStyleBase() const wxOVERRIDE { return true; }
|
||||
|
||||
virtual void DoSetValue(const wxString &value, int flags = 0) wxOVERRIDE;
|
||||
virtual wxString DoGetValue() const wxOVERRIDE;
|
||||
|
||||
// Override this to use either GtkEntry or GtkTextView IME depending on the
|
||||
// kind of control we are.
|
||||
|
@ -731,9 +731,6 @@ public:
|
||||
wxTextEntry::SetValue(value);
|
||||
}
|
||||
|
||||
// wxTextEntry overrides
|
||||
virtual bool SetHint(const wxString& hint) wxOVERRIDE;
|
||||
|
||||
// wxWindow overrides
|
||||
virtual wxVisualAttributes GetDefaultAttributes() const wxOVERRIDE
|
||||
{
|
||||
|
@ -473,9 +473,9 @@ public:
|
||||
focus and wxEVT_TEXT events, you must call wxEvent::Skip() on them
|
||||
so that the generic implementation works correctly.
|
||||
|
||||
@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.
|
||||
@remarks Hints can be used for single line text controls under all
|
||||
platforms, but only MSW and GTK+ 2 support them for multi-line text
|
||||
controls, they are ignored for them under the other platforms.
|
||||
|
||||
@since 2.9.0
|
||||
*/
|
||||
|
@ -1091,6 +1091,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
|
||||
|
||||
m_horizontal = new MyTextCtrl( this, wxID_ANY, wxT("Multiline text control with a horizontal scrollbar.\n"),
|
||||
wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE | wxHSCROLL);
|
||||
m_horizontal->SetHint("Enter multiline text here");
|
||||
|
||||
// a little hack to use the command line argument for encoding testing
|
||||
if ( wxTheApp->argc == 2 )
|
||||
|
@ -1178,14 +1178,6 @@ bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event)
|
||||
// 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)
|
||||
{
|
||||
|
@ -986,6 +986,11 @@ wxString wxTextCtrl::GetValue() const
|
||||
{
|
||||
wxCHECK_MSG( m_text != NULL, wxEmptyString, wxT("invalid text ctrl") );
|
||||
|
||||
return wxTextEntry::GetValue();
|
||||
}
|
||||
|
||||
wxString wxTextCtrl::DoGetValue() const
|
||||
{
|
||||
if ( IsMultiLine() )
|
||||
{
|
||||
GtkTextIter start;
|
||||
@ -998,7 +1003,7 @@ wxString wxTextCtrl::GetValue() const
|
||||
}
|
||||
else // single line
|
||||
{
|
||||
return wxTextEntry::GetValue();
|
||||
return wxTextEntry::DoGetValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -521,7 +521,7 @@ bool wxTextEntry::SetHint(const wxString& hint)
|
||||
{
|
||||
#if GTK_CHECK_VERSION(3,2,0)
|
||||
GtkEntry *entry = GetEntry();
|
||||
if (entry && gtk_check_version(3,2,0) == NULL)
|
||||
if (entry && GTK_IS_ENTRY(entry) && gtk_check_version(3,2,0) == NULL)
|
||||
{
|
||||
gtk_entry_set_placeholder_text(entry, wxGTK_CONV(hint));
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user