]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/treebkg.cpp
Workaround to broken WinCE directory scanning for all includes (#ifdefed for other...
[wxWidgets.git] / src / generic / treebkg.cpp
index 32e8250290f98a3cdc5fc4ba55a8b4b3508c5f55..4f57582b0cdac4948fea8698e9358888e0365da4 100644 (file)
@@ -100,11 +100,14 @@ wxTreebook::Create(wxWindow *parent,
                     wxID_TREEBOOKTREEVIEW,
                     wxDefaultPosition,
                     wxDefaultSize,
-                    wxBORDER_SIMPLE |
+#ifndef __WXMSW__
+                    wxBORDER_SIMPLE | // On wxMSW this produces a black border which is wrong
+#endif
                     wxTR_DEFAULT_STYLE |
                     wxTR_HIDE_ROOT |
                     wxTR_SINGLE
                  );
+    GetTreeCtrl()->SetQuickBestSize(false); // do full size calculation
     GetTreeCtrl()->AddRoot(wxEmptyString); // label doesn't matter, it's hidden
 
 #ifdef __WXMSW__
@@ -203,8 +206,6 @@ bool wxTreebook::DoInsertPage(size_t pagePos,
 
     DoUpdateSelection(bSelect, pagePos);
 
-    m_bookctrl->InvalidateBestSize();
-
     return true;
 }
 
@@ -246,6 +247,8 @@ bool wxTreebook::DoInsertSubPage(size_t pagePos,
 
     wxTreeItemId newId = tree->AppendItem(parentId, text, imageId);
 
+    tree->InvalidateBestSize();
+
     if ( !newId.IsOk() )
     {
         (void)wxBookCtrlBase::DoRemovePage(newPos);
@@ -258,8 +261,6 @@ bool wxTreebook::DoInsertSubPage(size_t pagePos,
 
     DoUpdateSelection(bSelect, newPos);
 
-    m_bookctrl->InvalidateBestSize();
-
     return true;
 }
 
@@ -308,7 +309,6 @@ wxTreebookPage *wxTreebook::DoRemovePage(size_t pagePos)
 
     tree->DeleteChildren( pageId );
     tree->Delete( pageId );
-    tree->InvalidateBestSize();
 
     return oldPage;
 }
@@ -614,25 +614,22 @@ int wxTreebook::DoSetSelection(size_t pagePos)
             // find the next page suitable to be shown: the first (grand)child
             // of this one with a non-NULL associated page
             wxTreeItemId childId = m_treeIds[pagePos];
-            m_actualSelection = pagePos;
+            int actualPagePos = pagePos;
             while ( !page && childId.IsOk() )
             {
                 wxTreeItemIdValue cookie;
                 childId = tree->GetFirstChild( childId, cookie );
                 if ( childId.IsOk() )
                 {
-                    page = wxBookCtrlBase::GetPage(++m_actualSelection);
+                    page = wxBookCtrlBase::GetPage(++actualPagePos);
                 }
             }
 
-            wxASSERT_MSG( page, wxT("no page to show found!") );
+            m_actualSelection = page ? actualPagePos : m_selection;
         }
 
         if ( page )
-        {
-            page->SetSize(GetPageRect());
             page->Show();
-        }
 
         tree->SelectItem(DoInternalGetPage(pagePos));