disable report view mode under Mac as it hangs the native wxListCtrl implementation (continuation of #9484)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54318 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -97,6 +97,10 @@ protected:
|
|||||||
wxBookCtrlBaseEvent* CreatePageChangingEvent() const;
|
wxBookCtrlBaseEvent* CreatePageChangingEvent() const;
|
||||||
void MakeChangedEvent(wxBookCtrlBaseEvent &event);
|
void MakeChangedEvent(wxBookCtrlBaseEvent &event);
|
||||||
|
|
||||||
|
// get flags for different list control modes
|
||||||
|
long GetListCtrlIconViewFlags() const;
|
||||||
|
long GetListCtrlReportViewFlags() const;
|
||||||
|
|
||||||
// event handlers
|
// event handlers
|
||||||
void OnListSelected(wxListEvent& event);
|
void OnListSelected(wxListEvent& event);
|
||||||
void OnSize(wxSizeEvent& event);
|
void OnSize(wxSizeEvent& event);
|
||||||
|
@@ -36,6 +36,12 @@
|
|||||||
#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
|
||||||
|
// it for now
|
||||||
|
#if !defined(__WXMAC__)
|
||||||
|
#define CAN_USE_REPORT_VIEW
|
||||||
|
#endif
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// various wxWidgets macros
|
// various wxWidgets macros
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -103,10 +109,17 @@ wxListbook::Create(wxWindow *parent,
|
|||||||
wxID_ANY,
|
wxID_ANY,
|
||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxDefaultSize,
|
wxDefaultSize,
|
||||||
wxLC_SINGLE_SEL | wxLC_REPORT | wxLC_NO_HEADER
|
wxLC_SINGLE_SEL |
|
||||||
|
#ifdef CAN_USE_REPORT_VIEW
|
||||||
|
GetListCtrlReportViewFlags()
|
||||||
|
#else // !CAN_USE_REPORT_VIEW
|
||||||
|
GetListCtrlIconViewFlags()
|
||||||
|
#endif // CAN_USE_REPORT_VIEW/!CAN_USE_REPORT_VIEW
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifdef CAN_USE_REPORT_VIEW
|
||||||
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
|
||||||
@@ -121,6 +134,24 @@ wxListbook::Create(wxWindow *parent,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxListCtrl flags
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
long wxListbook::GetListCtrlIconViewFlags() const
|
||||||
|
{
|
||||||
|
return (IsVertical() ? wxLC_ALIGN_LEFT : wxLC_ALIGN_TOP) | wxLC_ICON;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CAN_USE_REPORT_VIEW
|
||||||
|
|
||||||
|
long wxListbook::GetListCtrlReportViewFlags() const
|
||||||
|
{
|
||||||
|
return wxLC_REPORT | wxLC_NO_HEADER;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CAN_USE_REPORT_VIEW
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxListbook geometry management
|
// wxListbook geometry management
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -261,6 +292,7 @@ void wxListbook::SetImageList(wxImageList *imageList)
|
|||||||
{
|
{
|
||||||
wxListView * const list = GetListView();
|
wxListView * const list = GetListView();
|
||||||
|
|
||||||
|
#ifdef CAN_USE_REPORT_VIEW
|
||||||
// If imageList presence has changed, we update the list control view
|
// If imageList presence has changed, we update the list control view
|
||||||
if ( (imageList != NULL) != (GetImageList() != NULL) )
|
if ( (imageList != NULL) != (GetImageList() != NULL) )
|
||||||
{
|
{
|
||||||
@@ -285,17 +317,17 @@ void wxListbook::SetImageList(wxImageList *imageList)
|
|||||||
long style = wxLC_SINGLE_SEL;
|
long style = wxLC_SINGLE_SEL;
|
||||||
if ( imageList )
|
if ( imageList )
|
||||||
{
|
{
|
||||||
list->SetWindowStyleFlag(style |
|
style |= GetListCtrlIconViewFlags();
|
||||||
(IsVertical() ? wxLC_ALIGN_LEFT
|
|
||||||
: wxLC_ALIGN_TOP) |
|
|
||||||
wxLC_ICON);
|
|
||||||
}
|
}
|
||||||
else // no image list
|
else // no image list
|
||||||
{
|
{
|
||||||
list->SetWindowStyleFlag(style | wxLC_REPORT | wxLC_NO_HEADER);
|
style |= GetListCtrlReportViewFlags();
|
||||||
list->InsertColumn(0, wxT("Pages"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list->SetWindowStyleFlag(style);
|
||||||
|
if ( !imageList )
|
||||||
|
list->InsertColumn(0, wxT("Pages"));
|
||||||
|
|
||||||
// Add back the list control items
|
// Add back the list control items
|
||||||
for ( i = 0; i < GetPageCount(); i++ )
|
for ( i = 0; i < GetPageCount(); i++ )
|
||||||
{
|
{
|
||||||
@@ -308,6 +340,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