X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be465555381c323bdf854da04ca943e15cbb2d2d..ff64116225fc4e7b330291f84e8df2e4e9d67f25:/include/wx/vlbox.h diff --git a/include/wx/vlbox.h b/include/wx/vlbox.h index ff1dc10de9..276076ece7 100644 --- a/include/wx/vlbox.h +++ b/include/wx/vlbox.h @@ -120,6 +120,9 @@ public: // get the margins around each item wxPoint GetMargins() const { return m_ptMargins; } + // get the background colour of selected cells + const wxColour& GetSelectionBackground() const { return m_colBgSel; } + // operations // ---------- @@ -127,19 +130,19 @@ public: // set the number of items to be shown in the control // // this is just a synonym for wxVScrolledWindow::SetLineCount() - void SetItemCount(size_t count); + virtual void SetItemCount(size_t count); // delete all items from the control void Clear() { SetItemCount(0); } - // set the selection to the specified item, if it is -1 the selection is - // unset + // set the selection to the specified item, if it is wxNOT_FOUND the + // selection is unset // // this function is only valid for the single selection listboxes void SetSelection(int selection); // selects or deselects the specified item which must be valid (i.e. not - // equal to -1) + // equal to wxNOT_FOUND) // // return true if the items selection status has changed or false // otherwise @@ -179,6 +182,9 @@ public: void SetMargins(const wxPoint& pt); void SetMargins(wxCoord x, wxCoord y) { SetMargins(wxPoint(x, y)); } + // change the background colour of the selected cells + void SetSelectionBackground(const wxColour& col); + protected: // the derived class must implement this function to actually draw the item @@ -221,28 +227,47 @@ protected: bool DoSelectAll(bool select); // change the current item (in single selection listbox it also implicitly - // changes the selection); current may be -1 in which case there will be - // no current item any more + // changes the selection); current may be wxNOT_FOUND in which case there + // will be no current item any more // // return true if the current item changed, false otherwise bool DoSetCurrent(int current); + // flags for DoHandleItemClick + enum + { + ItemClick_Shift = 1, // item shift-clicked + ItemClick_Ctrl = 2, // ctrl + ItemClick_Kbd = 4 // item selected from keyboard + }; + // common part of keyboard and mouse handling processing code - void DoHandleItemClick(int item, bool shiftDown, bool ctrlDown); + void DoHandleItemClick(int item, int flags); private: - // the current item or -1 + // the current item or wxNOT_FOUND // // if m_selStore == NULL this is also the selected item, otherwise the // selections are managed by m_selStore int m_current; + // the anchor of the selection for the multiselection listboxes: + // shift-clicking an item extends the selection from m_anchor to the item + // clicked, for example + // + // always wxNOT_FOUND for single selection listboxes + int m_anchor; + // the object managing our selected items if not NULL wxSelectionStore *m_selStore; // margins wxPoint m_ptMargins; + // the selection bg colour + wxColour m_colBgSel; + + DECLARE_EVENT_TABLE() };