]> git.saurik.com Git - wxWidgets.git/commitdiff
Use list mode in wxListbook list control instead of report.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 4 Jul 2012 17:09:53 +0000 (17:09 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 4 Jul 2012 17:09:53 +0000 (17:09 +0000)
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

include/wx/listbook.h
src/generic/listbkg.cpp

index 1d8853526c080df0194de7df535b86032a1df142..4e46af08474f9301161720fadc8246bfd5f4d27f 100644 (file)
@@ -88,10 +88,6 @@ protected:
     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);
index 0861211c0eeb4ab6d3d08253c9b03a0565d990db..88a3c4a7ffd464fc9286be8533025d914b1c0c4c 100644 (file)
 
 #include "wx/sysopt.h"
 
-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
 // ----------------------------------------------------------------------------
@@ -118,13 +100,10 @@ wxListbook::Create(wxWindow *parent,
                     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
@@ -138,20 +117,6 @@ wxListbook::Create(wxWindow *parent,
     return true;
 }
 
-// ----------------------------------------------------------------------------
-// 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
 // ----------------------------------------------------------------------------
@@ -259,39 +224,34 @@ bool wxListbook::SetPageImage(size_t n, int imageId)
 
 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);
+            style |= wxLC_LIST;
         }
 
-        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);
 }