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& GetBitmapHover() const { return m_bmpHover; } | ||||||
|     const wxBitmap& GetBitmapDisabled() const { return m_bmpDisabled; } |     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 |     // Margins functions mirrored from TextEntryBase | ||||||
|     // (wxComboCtrl does not inherit from wxTextEntry, but may embed a |     // (wxComboCtrl does not inherit from wxTextEntry, but may embed a | ||||||
|     // wxTextCtrl, so we need these). Also note that these functions |     // wxTextCtrl, so we need these). Also note that these functions | ||||||
| @@ -427,6 +431,16 @@ public: | |||||||
|  |  | ||||||
| protected: | 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 |     // Override these for customization purposes | ||||||
|     // |     // | ||||||
| @@ -544,6 +558,9 @@ protected: | |||||||
|     // This is used when m_text is hidden (readonly). |     // This is used when m_text is hidden (readonly). | ||||||
|     wxString                m_valueString; |     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 |     // the text control and button we show all the time | ||||||
|     wxTextCtrl*             m_text; |     wxTextCtrl*             m_text; | ||||||
|     wxWindow*               m_btn; |     wxWindow*               m_btn; | ||||||
|   | |||||||
| @@ -448,6 +448,15 @@ public: | |||||||
|     */ |     */ | ||||||
|     static int GetFeatures(); |     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. |         Returns the insertion point for the combo control's text field. | ||||||
|  |  | ||||||
| @@ -620,6 +629,18 @@ public: | |||||||
|     */ |     */ | ||||||
|     void SetCustomPaintWidth(int width); |     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. |         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, |         m_text->Create(this, wxID_ANY, m_valueString, | ||||||
|                        wxDefaultPosition, wxSize(10,-1), |                        wxDefaultPosition, wxSize(10,-1), | ||||||
|                        style, validator); |                        style, validator); | ||||||
|  |         m_text->SetHint(m_hintText); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -2539,4 +2540,19 @@ void wxComboCtrlBase::Undo() | |||||||
|         m_text->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 | #endif // wxUSE_COMBOCTRL | ||||||
|   | |||||||
| @@ -1089,7 +1089,20 @@ void wxOwnerDrawnComboBox::OnDrawItem( wxDC& dc, | |||||||
| { | { | ||||||
|     if ( flags & wxODCB_PAINTING_CONTROL ) |     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.x + GetMargins().x, | ||||||
|                      (rect.height-dc.GetCharHeight())/2 + rect.y ); |                      (rect.height-dc.GetCharHeight())/2 + rect.y ); | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user