X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e02c72fa45b840601743e11bc6550481a36fa437..835165d576b66441987b78519e6ef1fe74ea795a:/include/wx/odcombo.h diff --git a/include/wx/odcombo.h b/include/wx/odcombo.h index 334d725410..4879c2bbfc 100644 --- a/include/wx/odcombo.h +++ b/include/wx/odcombo.h @@ -40,7 +40,7 @@ enum // // Callback flags (see wxOwnerDrawnComboBox::OnDrawItem) // -enum +enum wxOwnerDrawnComboBoxPaintingFlags { // when set, we are painting the selected item in control, // not in the popup @@ -80,6 +80,7 @@ public: // required virtuals virtual void Init(); virtual bool Create(wxWindow* parent); + virtual void SetFocus(); virtual wxWindow *GetControl() { return this; } virtual void SetStringValue( const wxString& value ); virtual wxString GetStringValue() const; @@ -89,8 +90,10 @@ public: virtual wxSize GetAdjustedSize( int minWidth, int prefHeight, int maxHeight ); virtual void PaintComboControl( wxDC& dc, const wxRect& rect ); virtual void OnComboKeyEvent( wxKeyEvent& event ); + virtual void OnComboCharEvent( wxKeyEvent& event ); virtual void OnComboDoubleClick(); virtual bool LazyCreate(); + virtual bool FindItem(const wxString& item, wxString* trueItem); // Item management void SetSelection( int item ); @@ -117,8 +120,8 @@ public: protected: - // Called by OnComboDoubleClick and OnComboKeyEvent - bool HandleKey( int keycode, bool saturate, wxChar unicode = 0 ); + // Called by OnComboDoubleClick and OnCombo{Key,Char}Event + bool HandleKey( int keycode, bool saturate, wxChar keychar = 0 ); // sends combobox select event from the parent combo control void SendComboBoxEvent( int selection ); @@ -140,9 +143,10 @@ protected: // item: item index to be drawn, may be wxNOT_FOUND when painting combo control itself // and there is no valid selection // flags: wxODCB_PAINTING_CONTROL is set if painting to combo control instead of list - // NOTE: If wxVListBoxComboPopup is used with wxComboCtrl class not derived from + // + // NOTE: If wxVListBoxComboPopup is used with a wxComboCtrl class not derived from // wxOwnerDrawnComboBox, this method must be overridden. - virtual void OnDrawItem( wxDC& dc, const wxRect& rect, int item, int flags ) const; + virtual void OnDrawItem( wxDC& dc, const wxRect& rect, int item, int flags) const; // This is same as in wxVListBox virtual wxCoord OnMeasureItem( size_t item ) const; @@ -161,8 +165,8 @@ protected: // filter mouse move events happening outside the list box // move selection with cursor void OnMouseMove(wxMouseEvent& event); - void OnMouseWheel(wxMouseEvent& event); void OnKey(wxKeyEvent& event); + void OnChar(wxKeyEvent& event); void OnLeftClick(wxMouseEvent& event); // Return the widest item width (recalculating it if necessary) @@ -212,6 +216,8 @@ private: // Partial completion string wxString m_partialCompletionString; + wxString m_stringValue; + #if wxUSE_TIMER // Partial completion timer wxTimer m_partialCompletionTimer; @@ -266,11 +272,11 @@ public: wxOwnerDrawnComboBox(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - const wxArrayString& choices, - long style, + const wxString& value = wxEmptyString, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + const wxArrayString& choices = wxArrayString(), + long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr); @@ -304,14 +310,18 @@ public: } // wxControlWithItems methods - virtual void Clear(); - virtual void Delete(unsigned int n); virtual unsigned int GetCount() const; virtual wxString GetString(unsigned int n) const; virtual void SetString(unsigned int n, const wxString& s); virtual int FindString(const wxString& s, bool bCase = false) const; virtual void Select(int n); virtual int GetSelection() const; + + // Override these just to maintain consistency with virtual methods + // between classes. + virtual void Clear(); + virtual void GetSelection(long *from, long *to) const; + virtual void SetSelection(int n) { Select(n); } @@ -327,9 +337,13 @@ public: // Return the index of the widest item (recalculating it if necessary) virtual int GetWidestItem() { EnsurePopupControl(); return GetVListBoxComboPopup()->GetWidestItem(); } + virtual bool IsSorted() const { return HasFlag(wxCB_SORT); } + wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST protected: + virtual void DoClear(); + virtual void DoDeleteOneItem(unsigned int n); // Callback for drawing. Font, background and text colour have been // prepared according to selection, focus and such. @@ -359,12 +373,11 @@ protected: return (wxVListBoxComboPopup*) m_popupInterface; } - virtual int DoAppend(const wxString& item); - virtual int DoInsert(const wxString& item, unsigned int pos); + virtual int DoInsertItems(const wxArrayStringsAdapter& items, + unsigned int pos, + void **clientData, wxClientDataType type); virtual void DoSetItemClientData(unsigned int n, void* clientData); virtual void* DoGetItemClientData(unsigned int n) const; - virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData); - virtual wxClientData* DoGetItemClientObject(unsigned int n) const; // temporary storage for the initial choices //const wxString* m_baseChoices;