Added wxComboCtrl::SetHint(), GetHint()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -385,6 +385,10 @@ public:
|
||||
const wxBitmap& GetBitmapHover() const { return m_bmpHover; }
|
||||
const wxBitmap& GetBitmapDisabled() const { return m_bmpDisabled; }
|
||||
|
||||
// Hint functions mirrored from TextEntryBase
|
||||
virtual bool SetHint(const wxString& hint);
|
||||
virtual wxString GetHint() const;
|
||||
|
||||
// Margins functions mirrored from TextEntryBase
|
||||
// (wxComboCtrl does not inherit from wxTextEntry, but may embed a
|
||||
// wxTextCtrl, so we need these). Also note that these functions
|
||||
@@ -427,6 +431,16 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
// Returns true if hint text should be drawn in the control
|
||||
bool ShouldUseHintText(int flags = 0) const
|
||||
{
|
||||
return ( !m_text &&
|
||||
!(flags & wxCONTROL_ISSUBMENU) &&
|
||||
!m_valueString.length() &&
|
||||
m_hintText.length() &&
|
||||
!ShouldDrawFocus() );
|
||||
}
|
||||
|
||||
//
|
||||
// Override these for customization purposes
|
||||
//
|
||||
@@ -544,6 +558,9 @@ protected:
|
||||
// This is used when m_text is hidden (readonly).
|
||||
wxString m_valueString;
|
||||
|
||||
// This is used when control is unfocused and m_valueString is empty
|
||||
wxString m_hintText;
|
||||
|
||||
// the text control and button we show all the time
|
||||
wxTextCtrl* m_text;
|
||||
wxWindow* m_btn;
|
||||
|
@@ -448,6 +448,15 @@ public:
|
||||
*/
|
||||
static int GetFeatures();
|
||||
|
||||
/**
|
||||
Returns the current hint string.
|
||||
|
||||
See SetHint() for more information about hints.
|
||||
|
||||
@since 2.9.1
|
||||
*/
|
||||
virtual wxString GetHint() const;
|
||||
|
||||
/**
|
||||
Returns the insertion point for the combo control's text field.
|
||||
|
||||
@@ -620,6 +629,18 @@ public:
|
||||
*/
|
||||
void SetCustomPaintWidth(int width);
|
||||
|
||||
/**
|
||||
Sets a hint shown in an empty unfocused combo control.
|
||||
|
||||
Notice that hints are known as <em>cue banners</em> under MSW or
|
||||
<em>placeholder strings</em> under OS X.
|
||||
|
||||
@see wxTextEntry::SetHint()
|
||||
|
||||
@since 2.9.1
|
||||
*/
|
||||
virtual void SetHint(const wxString& hint);
|
||||
|
||||
/**
|
||||
Sets the insertion point in the text field.
|
||||
|
||||
|
@@ -904,6 +904,7 @@ wxComboCtrlBase::CreateTextCtrl(int style, const wxValidator& validator)
|
||||
m_text->Create(this, wxID_ANY, m_valueString,
|
||||
wxDefaultPosition, wxSize(10,-1),
|
||||
style, validator);
|
||||
m_text->SetHint(m_hintText);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2539,4 +2540,19 @@ void wxComboCtrlBase::Undo()
|
||||
m_text->Undo();
|
||||
}
|
||||
|
||||
bool wxComboCtrlBase::SetHint(const wxString& hint)
|
||||
{
|
||||
m_hintText = hint;
|
||||
bool res = true;
|
||||
if ( m_text )
|
||||
res = m_text->SetHint(hint);
|
||||
Refresh();
|
||||
return res;
|
||||
}
|
||||
|
||||
wxString wxComboCtrlBase::GetHint() const
|
||||
{
|
||||
return m_hintText;
|
||||
}
|
||||
|
||||
#endif // wxUSE_COMBOCTRL
|
||||
|
@@ -1089,7 +1089,20 @@ void wxOwnerDrawnComboBox::OnDrawItem( wxDC& dc,
|
||||
{
|
||||
if ( flags & wxODCB_PAINTING_CONTROL )
|
||||
{
|
||||
dc.DrawText( GetValue(),
|
||||
wxString text;
|
||||
|
||||
if ( !ShouldUseHintText() )
|
||||
{
|
||||
text = GetValue();
|
||||
}
|
||||
else
|
||||
{
|
||||
text = GetHint();
|
||||
wxColour col = wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT);
|
||||
dc.SetTextForeground(col);
|
||||
}
|
||||
|
||||
dc.DrawText( text,
|
||||
rect.x + GetMargins().x,
|
||||
(rect.height-dc.GetCharHeight())/2 + rect.y );
|
||||
}
|
||||
|
Reference in New Issue
Block a user