From: Robin Dunn Date: Fri, 22 Sep 2006 21:47:57 +0000 (+0000) Subject: Patch from Tim Kosse to allow virtual list ctrl to work when using the X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0100ee7daa81a7d557222536ebfc2b4aadc0c1b3 Patch from Tim Kosse to allow virtual list ctrl to work when using the generic control git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41377 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/listctrl_mac.cpp b/src/mac/carbon/listctrl_mac.cpp index bc6232271d..b0c23b8a83 100644 --- a/src/mac/carbon/listctrl_mac.cpp +++ b/src/mac/carbon/listctrl_mac.cpp @@ -205,6 +205,46 @@ void wxListCtrl::Init() m_dbImpl = NULL; } +class wxGenericListCtrlHook : public wxGenericListCtrl +{ +public: + wxGenericListCtrlHook(wxListCtrl* parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name) + : wxGenericListCtrl(parent, id, pos, size, style, validator, name), + m_nativeListCtrl(parent) + { + } + + virtual wxListItemAttr * OnGetItemAttr(long item) const + { + return m_nativeListCtrl->OnGetItemAttr(item); + } + + virtual int OnGetItemImage(long item) const + { + return m_nativeListCtrl->OnGetItemImage(item); + } + + virtual int OnGetItemColumnImage(long item, long column) const + { + return m_nativeListCtrl->OnGetItemColumnImage(item, column); + } + + virtual wxString OnGetItemText(long item, long column) const + { + return m_nativeListCtrl->OnGetItemText(item, column); + } + +protected: + wxListCtrl* m_nativeListCtrl; + +}; + bool wxListCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, @@ -217,15 +257,16 @@ bool wxListCtrl::Create(wxWindow *parent, // for now, we'll always use the generic list control for ICON and LIST views, // because they dynamically change the number of columns on resize. // Also, allow the user to set it to use the list ctrl as well. + // Also, use generic list control in VIRTUAL mode. if ( (wxSystemOptions::HasOption( wxMAC_ALWAYS_USE_GENERIC_LISTCTRL ) && (wxSystemOptions::GetOptionInt( wxMAC_ALWAYS_USE_GENERIC_LISTCTRL ) == 1)) || - (style & wxLC_ICON) || (style & wxLC_SMALL_ICON) || (style & wxLC_LIST)) + (style & wxLC_ICON) || (style & wxLC_SMALL_ICON) || (style & wxLC_LIST) || (style & wxLC_VIRTUAL)) { m_macIsUserPane = true; if ( !wxWindow::Create(parent, id, pos, size, style, name) ) return false; - m_genericImpl = new wxGenericListCtrl(this, id, pos, size, style, validator, name); + m_genericImpl = new wxGenericListCtrlHook(this, id, pos, size, style, validator, name); return true; }