// Internal use: Skip popup animation.
wxCC_IFLAG_DISABLE_POPUP_ANIM = 0x2000,
// Internal use: Drop-button is a bitmap button or has non-default size
- // (but can still be on either side of the control).
+ // (but can still be on either side of the control), regardless whether
+ // specified by the platform or the application.
wxCC_IFLAG_HAS_NONSTANDARD_BUTTON = 0x4000
};
class WXDLLIMPEXP_CORE wxComboCtrlBase : public wxControl
{
friend class wxComboPopup;
+ friend class wxComboPopupEvtHandler;
public:
// ctors and such
wxComboCtrlBase() : wxControl() { Init(); }
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
wxPoint GetMargins() const
{ return DoGetMargins(); }
+ // Set custom style flags for embedded wxTextCtrl. Usually must be used
+ // with two-step creation, before Create() call.
+ void SetTextCtrlStyle( int style );
+
// Return internal flags
wxUint32 GetInternalFlags() const { return m_iFlags; }
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 the base class virtuals involved in geometry calculations
virtual wxSize DoGetBestSize() const;
+ // also set the embedded wxTextCtrl colours
+ virtual bool SetForegroundColour(const wxColour& colour);
+ virtual bool SetBackgroundColour(const wxColour& colour);
+
// NULL popup can be used to indicate default in a derived class
virtual void DoSetPopupControl(wxComboPopup* popup);
void OnTextCtrlEvent(wxCommandEvent& event);
void OnSysColourChanged(wxSysColourChangedEvent& event);
void OnKeyEvent(wxKeyEvent& event);
+ void OnCharEvent(wxKeyEvent& event);
// Set customization flags (directs how wxComboCtrlBase helpers behave)
void Customize( wxUint32 flags ) { m_iFlags |= flags; }
// 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;
wxEvtHandler* m_toplevEvtHandler;
// this is for the control in popup
- wxEvtHandler* m_popupExtraHandler;
+ wxEvtHandler* m_popupEvtHandler;
// this is for the popup window
wxEvtHandler* m_popupWinEvtHandler;
// platform-dependant customization and other flags
wxUint32 m_iFlags;
+ // custom style for m_text
+ int m_textCtrlStyle;
+
// draw blank button background under bitmap?
bool m_blankButtonBg;
// Default implementation draws value as string.
virtual void PaintComboControl( wxDC& dc, const wxRect& rect );
- // Receives key events from the parent wxComboCtrl.
+ // Receives wxEVT_KEY_DOWN key events from the parent wxComboCtrl.
// Events not handled should be skipped, as usual.
virtual void OnComboKeyEvent( wxKeyEvent& event );
+ // Receives wxEVT_CHAR key events from the parent wxComboCtrl.
+ // Events not handled should be skipped, as usual.
+ virtual void OnComboCharEvent( wxKeyEvent& event );
+
// Implement if you need to support special action when user
// double-clicks on the parent wxComboCtrl.
virtual void OnComboDoubleClick();