Use wxLC_LIST instead of wxLC_REPORT when we don't have any icons. This makes
the code simpler as wxLC_LIST is more similar to wxLC_ICON which we used, and
continue to use, when we do have icons, because we don't need to add and
remove any columns on the fly.
And it fixes the appearance of wxListbook without images with wxBK_TOP or
wxBK_BOTTOM styles as it now lays out its items horizontally and not
vertically as before.
It also fixes the best size calculation of wxListbook control since the
changes to wxListCtrl best size calculations in r71733 as a nice side effect.
Closes #14451.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71965
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
wxBookCtrlEvent* CreatePageChangingEvent() const;
void MakeChangedEvent(wxBookCtrlEvent &event);
wxBookCtrlEvent* CreatePageChangingEvent() const;
void MakeChangedEvent(wxBookCtrlEvent &event);
- // get flags for different list control modes
- long GetListCtrlIconViewFlags() const;
- long GetListCtrlReportViewFlags() const;
-
// event handlers
void OnListSelected(wxListEvent& event);
void OnSize(wxSizeEvent& event);
// event handlers
void OnListSelected(wxListEvent& event);
void OnSize(wxSizeEvent& event);
-namespace
-{
-
-// 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
- return true;
-}
-
-} // anonymous namespace
-
// ----------------------------------------------------------------------------
// various wxWidgets macros
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// various wxWidgets macros
// ----------------------------------------------------------------------------
wxDefaultPosition,
wxDefaultSize,
wxLC_SINGLE_SEL |
wxDefaultPosition,
wxDefaultSize,
wxLC_SINGLE_SEL |
- (CanUseReportView() ? GetListCtrlReportViewFlags()
- : GetListCtrlIconViewFlags())
+ (IsVertical() ? wxLC_ALIGN_LEFT : wxLC_ALIGN_TOP) |
+ wxLC_LIST
- if ( CanUseReportView() )
- GetListView()->InsertColumn(0, wxT("Pages"));
-
#ifdef __WXMSW__
// On XP with themes enabled the GetViewRect used in GetControllerSize() to
// determine the space needed for the list view will incorrectly return
#ifdef __WXMSW__
// On XP with themes enabled the GetViewRect used in GetControllerSize() to
// determine the space needed for the list view will incorrectly return
-// ----------------------------------------------------------------------------
-// wxListCtrl flags
-// ----------------------------------------------------------------------------
-
-long wxListbook::GetListCtrlIconViewFlags() const
-{
- return (IsVertical() ? wxLC_ALIGN_LEFT : wxLC_ALIGN_TOP) | wxLC_ICON;
-}
-
-long wxListbook::GetListCtrlReportViewFlags() const
-{
- return wxLC_REPORT | wxLC_NO_HEADER;
-}
-
// ----------------------------------------------------------------------------
// wxListbook geometry management
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// wxListbook geometry management
// ----------------------------------------------------------------------------
void wxListbook::SetImageList(wxImageList *imageList)
{
void wxListbook::SetImageList(wxImageList *imageList)
{
- if ( CanUseReportView() )
+ wxListView * const list = GetListView();
+
+ // If imageList presence has changed, we update the list control style
+ if ( (imageList != NULL) != (GetImageList() != NULL) )
- wxListView * const list = GetListView();
+ // Preserve the selection which is lost when changing the mode
+ const int oldSel = GetSelection();
- // If imageList presence has changed, we update the list control view
- if ( (imageList != NULL) != (GetImageList() != NULL) )
+ // Update the style to use icon view for images, list view otherwise
+ long style = list->GetWindowStyle() & ~wxLC_MASK_TYPE;
+ if ( imageList )
+ {
+ style |= wxLC_ICON;
+ }
+ else // no image list
- // Preserve the selection which is lost when changing the mode
- const int oldSel = GetSelection();
-
- // Update the style to use icon view for images, report view otherwise
- long style = wxLC_SINGLE_SEL;
- if ( imageList )
- {
- style |= GetListCtrlIconViewFlags();
- }
- else // no image list
- {
- style |= GetListCtrlReportViewFlags();
- }
-
- list->SetWindowStyleFlag(style);
- if ( !imageList )
- list->InsertColumn(0, wxT("Pages"));
-
- // Restore selection
- if ( oldSel != wxNOT_FOUND )
- SetSelection(oldSel);
- list->SetImageList(imageList, wxIMAGE_LIST_NORMAL);
+ list->SetWindowStyleFlag(style);
+
+ // Restore selection
+ if ( oldSel != wxNOT_FOUND )
+ SetSelection(oldSel);
+ list->SetImageList(imageList, wxIMAGE_LIST_NORMAL);
+
wxBookCtrlBase::SetImageList(imageList);
}
wxBookCtrlBase::SetImageList(imageList);
}