X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e9717bd5d8ff2e3ff91d99d44850b1d2485f5edf..ca77701441e39245dcbfce903049e76f166979e5:/include/wx/msw/combobox.h diff --git a/include/wx/msw/combobox.h b/include/wx/msw/combobox.h index 6b53f6835e..ac803c17ed 100644 --- a/include/wx/msw/combobox.h +++ b/include/wx/msw/combobox.h @@ -21,11 +21,11 @@ // Combobox control // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxComboBox : public wxChoice, - public wxTextEntry +class WXDLLIMPEXP_CORE wxComboBox : public wxChoice, + public wxTextEntry { public: - wxComboBox() { } + wxComboBox() { Init(); } wxComboBox(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, @@ -36,8 +36,11 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr) { + Init(); Create(parent, id, value, pos, size, n, choices, style, validator, name); + } + wxComboBox(wxWindow *parent, wxWindowID id, const wxString& value, const wxPoint& pos, @@ -47,6 +50,8 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr) { + Init(); + Create(parent, id, value, pos, size, choices, style, validator, name); } @@ -70,6 +75,10 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr); + // See wxComboBoxBase discussion of IsEmpty(). + bool IsListEmpty() const { return wxItemContainer::IsEmpty(); } + bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); } + // resolve ambiguities among virtual functions inherited from both base // classes virtual void Clear(); @@ -77,11 +86,13 @@ public: virtual void SetValue(const wxString& value); virtual wxString GetStringSelection() const { return wxChoice::GetStringSelection(); } - + virtual void Popup() { MSWDoPopupOrDismiss(true); } + virtual void Dismiss() { MSWDoPopupOrDismiss(false); } virtual void SetSelection(int n) { wxChoice::SetSelection(n); } virtual void SetSelection(long from, long to) { wxTextEntry::SetSelection(from, to); } virtual int GetSelection() const { return wxChoice::GetSelection(); } + virtual bool ContainsHWND(WXHWND hWnd) const; virtual void GetSelection(long *from, long *to) const; virtual bool IsEditable() const; @@ -109,16 +120,19 @@ public: void OnUpdateDelete(wxUpdateUIEvent& event); void OnUpdateSelectAll(wxUpdateUIEvent& event); -protected: virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const; +#if wxUSE_UXTHEME + // override wxTextEntry method to work around Windows bug + virtual bool SetHint(const wxString& hint); +#endif // wxUSE_UXTHEME + +protected: #if wxUSE_TOOLTIPS virtual void DoSetToolTip(wxToolTip *tip); #endif - // this is the overridden wxTextEntry method which should only be called - // when we do have an edit control so it asserts if this is not the case - virtual WXHWND GetEditHWND() const; + virtual wxSize DoGetSizeFromTextSize(int xlen, int ylen = -1) const; // this is the implementation of GetEditHWND() which can also be used when // we don't have the edit control, it simply returns NULL then @@ -129,7 +143,26 @@ protected: // just testing for IsEditable() and using GetEditHWND() should be enough WXHWND GetEditHWNDIfAvailable() const; + virtual void EnableTextChangedEvents(bool enable) + { + m_allowTextEvents = enable; + } + private: + // there are the overridden wxTextEntry methods which should only be called + // when we do have an edit control so they assert if this is not the case + virtual wxWindow *GetEditableWindow(); + virtual WXHWND GetEditHWND() const; + + // common part of all ctors + void Init() + { + m_allowTextEvents = true; + } + + // normally true, false if text events are currently disabled + bool m_allowTextEvents; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox) DECLARE_EVENT_TABLE() };