X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/54eb75b5fb74cea418d25703407dd146908ad267..396197cb567090122f9f2e640d2910c2491a7c47:/include/wx/mac/carbon/listctrl.h diff --git a/include/wx/mac/carbon/listctrl.h b/include/wx/mac/carbon/listctrl.h index fa7fae4247..f9c3e4201a 100644 --- a/include/wx/mac/carbon/listctrl.h +++ b/include/wx/mac/carbon/listctrl.h @@ -12,10 +12,17 @@ #ifndef _WX_LISTCTRL_H_ #define _WX_LISTCTRL_H_ +#include "wx/defs.h" #include "wx/generic/listctrl.h" +#define wxMAC_ALWAYS_USE_GENERIC_LISTCTRL wxT("mac.listctrl.always_use_generic") + class wxMacDataBrowserListCtrlControl; class wxMacListControl; +class wxListCtrlTextCtrlWrapper; +class wxListCtrlRenameTimer; + +WX_DECLARE_EXPORTED_LIST(wxListItem, wxColumnList); class WXDLLEXPORT wxListCtrl: public wxControl { @@ -101,10 +108,10 @@ class WXDLLEXPORT wxListCtrl: public wxControl // Sets the item text void SetItemText(long item, const wxString& str) ; - + void SetItemTextColour(long item, const wxColour& colour) ; wxColour GetItemTextColour(long item) const; - + void SetItemBackgroundColour(long item, const wxColour& colour) ; wxColour GetItemBackgroundColour(long item) const; @@ -115,7 +122,8 @@ class WXDLLEXPORT wxListCtrl: public wxControl long GetItemData(long item) const ; // Sets the item data - bool SetItemData(long item, long data) ; + bool SetItemPtrData(long item, wxUIntPtr data); + bool SetItemData(long item, long data) { return SetItemPtrData(item, data); } // Gets the item rectangle bool GetItemRect(long item, wxRect& rect, int code = wxLIST_RECT_BOUNDS) const ; @@ -137,7 +145,7 @@ class WXDLLEXPORT wxListCtrl: public wxControl // Gets the number of selected items in the list control int GetSelectedItemCount() const; - + wxRect GetViewRect() const; // Gets the text colour of the listview @@ -309,32 +317,89 @@ class WXDLLEXPORT wxListCtrl: public wxControl wxListCtrlCompare GetCompareFunc() { return m_compareFunc; }; long GetCompareFuncData() { return m_compareFuncData; }; - - // public overrides needed for pimpl approach + + // public overrides needed for pimpl approach virtual bool SetFont(const wxFont& font); virtual bool SetForegroundColour(const wxColour& colour); virtual bool SetBackgroundColour(const wxColour& colour); + virtual wxColour GetBackgroundColour(); + + // functions for editing/timer + void OnRenameTimer(); + bool OnRenameAccept(long itemEdit, const wxString& value); + void OnRenameCancelled(long itemEdit); + + void ChangeCurrent(long current); + void ResetCurrent() { ChangeCurrent((long)-1); } + bool HasCurrent() const { return m_current != (long)-1; } + + void OnLeftDown(wxMouseEvent& event); + void OnDblClick(wxMouseEvent& event); + + void FinishEditing(wxTextCtrl *text) + { + delete text; + m_textctrlWrapper = NULL; + SetFocus(); + } + + virtual int GetScrollPos(int orient) const; + + void OnRightDown(wxMouseEvent& event); + void OnMiddleDown(wxMouseEvent& event); + void OnChar(wxKeyEvent& event); + virtual void SetFocus(); + void FireMouseEvent(wxEventType eventType, wxPoint position); + + virtual void SetDropTarget( wxDropTarget *dropTarget ); + virtual wxDropTarget* GetDropTarget() const; + + // with CG, we need to get the context from an kEventControlDraw event + // unfortunately, the DataBrowser callbacks don't provide the context + // and we need it, so we need to set/remove it before and after draw + // events so we can access it in the callbacks. + void MacSetDrawingContext(void* context) { m_cgContext = context; } + void* MacGetDrawingContext() { return m_cgContext; } + + virtual wxVisualAttributes GetDefaultAttributes() const + { + return GetClassDefaultAttributes(GetWindowVariant()); + } + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); protected: + // protected overrides needed for pimpl approach virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); + virtual wxSize DoGetBestSize() const; + + long m_current; + wxListCtrlTextCtrlWrapper *m_textctrlWrapper; + wxListCtrlRenameTimer *m_renameTimer; // common part of all ctors void Init(); - + wxGenericListCtrl* m_genericImpl; // allow use of the generic impl. wxMacDataBrowserListCtrlControl* m_dbImpl; - void* /*EventHandlerRef*/ m_macListCtrlEventHandler; + void* m_macListCtrlEventHandler; + void* m_cgContext; wxListCtrlCompare m_compareFunc; long m_compareFuncData; - + wxTextCtrl* m_textCtrl; // The control used for editing a label wxImageList * m_imageListNormal; // The image list for normal icons wxImageList * m_imageListSmall; // The image list for small icons wxImageList * m_imageListState; // The image list state icons (not implemented yet) - + + wxColumnList m_colsInfo; // for storing info about each column + wxColour m_textColor; + wxColour m_bgColor; + // keep track of whether or not we should delete the image list ourselves. bool m_ownsImageListNormal, m_ownsImageListSmall, @@ -347,6 +412,9 @@ protected: // keep track of inserted/deleted columns int m_count; // for virtual lists, store item count + +private: + DECLARE_EVENT_TABLE() }; #endif