X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0ec1179b86dac6c87ad9f2cd126f87e92642c62c..51623cc53f350935337e57930eaaf1afe9a48c3b:/include/wx/univ/combobox.h diff --git a/include/wx/univ/combobox.h b/include/wx/univ/combobox.h index a2d9292430..ac63fd63c3 100644 --- a/include/wx/univ/combobox.h +++ b/include/wx/univ/combobox.h @@ -22,16 +22,20 @@ class WXDLLIMPEXP_FWD_CORE wxListBox; // ---------------------------------------------------------------------------- // choose the next/prev/specified (by numArg) item -#define wxACTION_COMBOBOX_SELECT_NEXT _T("next") -#define wxACTION_COMBOBOX_SELECT_PREV _T("prev") -#define wxACTION_COMBOBOX_SELECT _T("select") +#define wxACTION_COMBOBOX_SELECT_NEXT wxT("next") +#define wxACTION_COMBOBOX_SELECT_PREV wxT("prev") +#define wxACTION_COMBOBOX_SELECT wxT("select") // ---------------------------------------------------------------------------- // wxComboBox: a combination of text control and a listbox // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxComboBox : public wxComboCtrl, public wxComboBoxBase +// NB: Normally we'd like wxComboBox to inherit from wxComboBoxBase, but here +// we can't really do that since both wxComboBoxBase and wxComboCtrl inherit +// from wxTextCtrl. +class WXDLLIMPEXP_CORE wxComboBox : + public wxWindowWithItems { public: // ctors and such @@ -91,7 +95,7 @@ public: // implement the combobox interface // wxTextCtrl methods - virtual wxString GetValue() const; + virtual wxString GetValue() const { return DoGetValue(); } virtual void SetValue(const wxString& value); virtual void WriteText(const wxString& value); virtual void Copy(); @@ -118,6 +122,17 @@ public: virtual bool CanUndo() const; virtual bool CanRedo() const; + // override these methods to disambiguate between two base classes versions + virtual void Clear() + { + wxComboCtrl::Clear(); + wxItemContainer::Clear(); + } + + // See wxComboBoxBase discussion of IsEmpty(). + bool IsListEmpty() const { return wxItemContainer::IsEmpty(); } + bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); } + // wxControlWithItems methods virtual void DoClear(); virtual void DoDeleteOneItem(unsigned int n); @@ -129,8 +144,6 @@ public: virtual int GetSelection() const; virtual wxString GetStringSelection() const; - wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST - // we have our own input handler and our own actions // (but wxComboCtrl already handled Popup/Dismiss) /* @@ -147,14 +160,12 @@ public: // we delegate our client data handling to wxListBox which we use for the // items, so override this and other methods dealing with the client data - virtual wxClientDataType GetClientDataType() const - { - return GetLBox()->GetClientDataType(); - } - + virtual wxClientDataType GetClientDataType() const; virtual void SetClientDataType(wxClientDataType clientDataItemsType); protected: + virtual wxString DoGetValue() const; + virtual int DoInsertItems(const wxArrayStringsAdapter& items, unsigned int pos, void **clientData, wxClientDataType type); @@ -170,6 +181,9 @@ protected: wxListBox *GetLBox() const { return m_lbox; } private: + // implement wxTextEntry pure virtual method + virtual wxWindow *GetEditableWindow() { return this; } + // the popup listbox wxListBox *m_lbox;