//
-// Callback flags
+// Callback flags (see wxOwnerDrawnComboBox::OnDrawItem)
//
enum
{
// when set, we are painting the selected item in control,
// not in the popup
- wxCP_PAINTING_CONTROL = 0x0001
+ wxODCB_PAINTING_CONTROL = 0x0001
};
virtual void OnComboDoubleClick();
virtual bool LazyCreate();
- // Callbacks for drawing and measuring items. Override in a derived class for
- // owner-drawnness.
- // item: item index to be drawn, may be wxNOT_FOUND when painting combo control itself
- // and there is no valid selection
- // flags: wxCP_PAINTING_CONTROL is set if painting to combo control instead of list
- virtual void OnDrawItem( wxDC& dc, const wxRect& rect, int item, int flags ) const;
-
- // Return item width, or -1 for calculating from text extent (default)
- virtual wxCoord OnMeasureItemWidth( size_t item ) const;
-
-
// Item management
void SetSelection( int item );
void Insert( const wxString& item, int pos );
void SetString( int item, const wxString& str );
wxString GetString( int item ) const;
unsigned int GetCount() const;
- int FindString(const wxString& s) const;
+ int FindString(const wxString& s, bool bCase = false) const;
int GetSelection() const;
//void Populate( int n, const wxString choices[] );
// Re-calculates width for given item
void CheckWidth( int pos );
- // wxVListBox implementation
- virtual void OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const;
- //virtual wxCoord OnMeasureItem(size_t n) const;
- void OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const;
+ // Callbacks for drawing and measuring items. Override in a derived class for
+ // owner-drawnness. Font, background and text colour have been prepared according
+ // to selection, focus and such.
+ //
+ // 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
+ // wxOwnerDrawnComboBox, this method must be overridden.
+ virtual void OnDrawItem( wxDC& dc, const wxRect& rect, int item, int flags ) const;
- // Return item height
+ // This is same as in wxVListBox
virtual wxCoord OnMeasureItem( size_t item ) const;
+ // Return item width, or -1 for calculating from text extent (default)
+ virtual wxCoord OnMeasureItemWidth( size_t item ) const;
+
+ // Draw item and combo control background. Flags are same as with OnDrawItem.
+ // NB: Can't use name OnDrawBackground because of virtual function hiding warnings.
+ virtual void OnDrawBg(wxDC& dc, const wxRect& rect, int item, int flags) const;
+
+ // Additional wxVListBox implementation (no need to override in derived classes)
+ virtual void OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const;
+ void OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const;
+
// filter mouse move events happening outside the list box
// move selection with cursor
void OnMouseMove(wxMouseEvent& event);
class WXDLLIMPEXP_ADV wxOwnerDrawnComboBox : public wxComboCtrl,
public wxItemContainer
{
- friend class wxComboPopupWindow;
- friend class wxComboCtrlBase;
+ //friend class wxComboPopupWindow;
+ friend class wxVListBoxComboPopup;
public:
// ctors and such
bool Create(wxWindow *parent,
wxWindowID id,
- const wxString& value,
+ const wxString& value = wxEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
bool Create(wxWindow *parent,
wxWindowID id,
- const wxString& value = wxEmptyString,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- int n = 0,
- const wxString choices[] = (const wxString *) NULL,
+ const wxString& value,
+ const wxPoint& pos,
+ const wxSize& size,
+ int n,
+ const wxString choices[],
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxComboBoxNameStr);
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) const;
+ virtual int FindString(const wxString& s, bool bCase = false) const;
virtual void Select(int n);
virtual int GetSelection() const;
virtual void SetSelection(int n) { Select(n); }
protected:
+ // Callback for drawing. Font, background and text colour have been
+ // prepared according to selection, focus and such.
+ // 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
+ virtual void OnDrawItem( wxDC& dc, const wxRect& rect, int item, int flags ) const;
+
+ // Callback for item height, or -1 for default
+ virtual wxCoord OnMeasureItem( size_t item ) const;
+
+ // Callback for item width, or -1 for default/undetermined
+ virtual wxCoord OnMeasureItemWidth( size_t item ) const;
+
+ // Callback for background drawing. Flags are same as with
+ // OnDrawItem.
+ virtual void OnDrawBackground( wxDC& dc, const wxRect& rect, int item, int flags ) const;
+
// clears all allocated client datas
void ClearClientDatas();