]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/vlbox.h
Further performance optimizations
[wxWidgets.git] / include / wx / vlbox.h
index f3ce27a421c1641813be50c7469315e3eaa45602..c6235d98b57ece587257822b4e99b2a411266d99 100644 (file)
@@ -13,8 +13,9 @@
 #define _WX_VLBOX_H_
 
 #include "wx/vscroll.h"         // base class
+#include "wx/bitmap.h"
 
-class WXDLLEXPORT wxSelectionStore;
+class WXDLLIMPEXP_FWD_CORE wxSelectionStore;
 
 #define wxVListBoxNameStr _T("wxVListBox")
 
@@ -31,7 +32,7 @@ class WXDLLEXPORT wxSelectionStore;
     It emits the same events as wxListBox and the same event macros may be used
     with it.
  */
-class WXDLLEXPORT wxVListBox : public wxVScrolledWindow
+class WXDLLIMPEXP_CORE wxVListBox : public wxVScrolledWindow
 {
 public:
     // constructors and such
@@ -74,7 +75,7 @@ public:
     // ---------
 
     // get the number of items in the control
-    size_t GetItemCount() const { return GetLineCount(); }
+    size_t GetItemCount() const { return GetRowCount(); }
 
     // does this control use multiple selection?
     bool HasMultipleSelection() const { return m_selStore != NULL; }
@@ -132,7 +133,7 @@ public:
 
     // set the number of items to be shown in the control
     //
-    // this is just a synonym for wxVScrolledWindow::SetLineCount()
+    // this is just a synonym for wxVScrolledWindow::SetRowCount()
     virtual void SetItemCount(size_t count);
 
     // delete all items from the control
@@ -188,12 +189,21 @@ public:
     // change the background colour of the selected cells
     void SetSelectionBackground(const wxColour& col);
 
+    // refreshes only the selected items
+    void RefreshSelected();
 
-    virtual void ApplyParentThemeBackground(const wxColour& WXUNUSED(bg))
-        { /* do nothing */ }
 
-    
+    virtual wxVisualAttributes GetDefaultAttributes() const
+    {
+        return GetClassDefaultAttributes(GetWindowVariant());
+    }
+
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
 protected:
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_THEME; }
+
     // the derived class must implement this function to actually draw the item
     // with the given index on the provided DC
     virtual void OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const = 0;
@@ -218,11 +228,11 @@ protected:
     // current
     virtual void OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const;
 
-    // we implement OnGetLineHeight() in terms of OnMeasureItem() because this
+    // we implement OnGetRowHeight() in terms of OnMeasureItem() because this
     // allows us to add borders to the items easily
     //
     // this function is not supposed to be overridden by the derived classes
-    virtual wxCoord OnGetLineHeight(size_t line) const;
+    virtual wxCoord OnGetRowHeight(size_t line) const;
 
 
     // event handlers
@@ -230,7 +240,7 @@ protected:
     void OnKeyDown(wxKeyEvent& event);
     void OnLeftDown(wxMouseEvent& event);
     void OnLeftDClick(wxMouseEvent& event);
-
+    void OnSetOrKillFocus(wxFocusEvent& event);
 
     // common part of all ctors
     void Init();
@@ -259,6 +269,14 @@ protected:
     // common part of keyboard and mouse handling processing code
     void DoHandleItemClick(int item, int flags);
 
+    // paint the background of the given item using the provided colour if it's
+    // valid, otherwise just return false and do nothing (this is used by
+    // OnDrawBackground())
+    bool DoDrawSolidBackground(const wxColour& col,
+                               wxDC& dc,
+                               const wxRect& rect,
+                               size_t n) const;
+
 private:
     // the current item or wxNOT_FOUND
     //
@@ -282,7 +300,6 @@ private:
     // the selection bg colour
     wxColour m_colBgSel;
 
-
     DECLARE_EVENT_TABLE()
     DECLARE_NO_COPY_CLASS(wxVListBox)
     DECLARE_ABSTRACT_CLASS(wxVListBox)