Allow use of report mode non-native wxListCtrl in wxListBook under Mac.
The use of wxListBook in report mode was disabled for wxOSX in r54001 and r54318 (see #9484) because it created problems with the native wxListCtrl implementation but the report mode can be used if we're using the generic wxListCtrl version so do allow to use it if the system option governing the choice of the version to use is set to "generic". Of course, the real fix would be to correct the bugs in the native wxListCtrl version and use report mode always but for now this at least restores correct behaviour with the generic version. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -36,11 +36,25 @@
|
|||||||
#include "wx/statline.h"
|
#include "wx/statline.h"
|
||||||
#include "wx/imaglist.h"
|
#include "wx/imaglist.h"
|
||||||
|
|
||||||
// FIXME: native OS X wxListCtrl hangs if this code is used for it so disable
|
#include "wx/sysopt.h"
|
||||||
// it for now
|
|
||||||
#if !defined(__WXMAC__)
|
namespace
|
||||||
#define CAN_USE_REPORT_VIEW
|
{
|
||||||
|
|
||||||
|
// FIXME: This function exists because native OS X wxListCtrl seems to have
|
||||||
|
// problems with report view, either imperfect display or reported hanging, so
|
||||||
|
// disable it for now (but it should be fixed, and this function removed).
|
||||||
|
bool CanUseReportView()
|
||||||
|
{
|
||||||
|
#if defined(__WXMAC__) && !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON
|
||||||
|
if (wxSystemOptions::GetOptionInt(wxMAC_ALWAYS_USE_GENERIC_LISTCTRL) == 0)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
#endif
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// various wxWidgets macros
|
// various wxWidgets macros
|
||||||
@@ -109,16 +123,12 @@ wxListbook::Create(wxWindow *parent,
|
|||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxDefaultSize,
|
wxDefaultSize,
|
||||||
wxLC_SINGLE_SEL |
|
wxLC_SINGLE_SEL |
|
||||||
#ifdef CAN_USE_REPORT_VIEW
|
(CanUseReportView() ? GetListCtrlReportViewFlags()
|
||||||
GetListCtrlReportViewFlags()
|
: GetListCtrlIconViewFlags())
|
||||||
#else // !CAN_USE_REPORT_VIEW
|
|
||||||
GetListCtrlIconViewFlags()
|
|
||||||
#endif // CAN_USE_REPORT_VIEW/!CAN_USE_REPORT_VIEW
|
|
||||||
);
|
);
|
||||||
|
|
||||||
#ifdef CAN_USE_REPORT_VIEW
|
if ( CanUseReportView() )
|
||||||
GetListView()->InsertColumn(0, wxT("Pages"));
|
GetListView()->InsertColumn(0, wxT("Pages"));
|
||||||
#endif // CAN_USE_REPORT_VIEW
|
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
// On XP with themes enabled the GetViewRect used in GetControllerSize() to
|
// On XP with themes enabled the GetViewRect used in GetControllerSize() to
|
||||||
@@ -142,15 +152,11 @@ long wxListbook::GetListCtrlIconViewFlags() const
|
|||||||
return (IsVertical() ? wxLC_ALIGN_LEFT : wxLC_ALIGN_TOP) | wxLC_ICON;
|
return (IsVertical() ? wxLC_ALIGN_LEFT : wxLC_ALIGN_TOP) | wxLC_ICON;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CAN_USE_REPORT_VIEW
|
|
||||||
|
|
||||||
long wxListbook::GetListCtrlReportViewFlags() const
|
long wxListbook::GetListCtrlReportViewFlags() const
|
||||||
{
|
{
|
||||||
return wxLC_REPORT | wxLC_NO_HEADER;
|
return wxLC_REPORT | wxLC_NO_HEADER;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // CAN_USE_REPORT_VIEW
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxListbook geometry management
|
// wxListbook geometry management
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -258,7 +264,8 @@ bool wxListbook::SetPageImage(size_t n, int imageId)
|
|||||||
|
|
||||||
void wxListbook::SetImageList(wxImageList *imageList)
|
void wxListbook::SetImageList(wxImageList *imageList)
|
||||||
{
|
{
|
||||||
#ifdef CAN_USE_REPORT_VIEW
|
if ( CanUseReportView() )
|
||||||
|
{
|
||||||
wxListView * const list = GetListView();
|
wxListView * const list = GetListView();
|
||||||
|
|
||||||
// If imageList presence has changed, we update the list control view
|
// If imageList presence has changed, we update the list control view
|
||||||
@@ -288,7 +295,7 @@ void wxListbook::SetImageList(wxImageList *imageList)
|
|||||||
}
|
}
|
||||||
|
|
||||||
list->SetImageList(imageList, wxIMAGE_LIST_NORMAL);
|
list->SetImageList(imageList, wxIMAGE_LIST_NORMAL);
|
||||||
#endif // CAN_USE_REPORT_VIEW
|
}
|
||||||
|
|
||||||
wxBookCtrlBase::SetImageList(imageList);
|
wxBookCtrlBase::SetImageList(imageList);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user