X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2ddb4d13585d5235556119fb1937273da9e433a3..f385b493dfd451e8d79f7b19c30e368a399a2ef5:/src/generic/treebkg.cpp diff --git a/src/generic/treebkg.cpp b/src/generic/treebkg.cpp index 47fefdc7d0..4f57582b0c 100644 --- a/src/generic/treebkg.cpp +++ b/src/generic/treebkg.cpp @@ -44,10 +44,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxTreebook, wxBookCtrlBase) IMPLEMENT_DYNAMIC_CLASS(wxTreebookEvent, wxNotifyEvent) +#if !WXWIN_COMPATIBILITY_EVENT_TYPES const wxEventType wxEVT_COMMAND_TREEBOOK_PAGE_CHANGING = wxNewEventType(); const wxEventType wxEVT_COMMAND_TREEBOOK_PAGE_CHANGED = wxNewEventType(); const wxEventType wxEVT_COMMAND_TREEBOOK_NODE_COLLAPSED = wxNewEventType(); const wxEventType wxEVT_COMMAND_TREEBOOK_NODE_EXPANDED = wxNewEventType(); +#endif const int wxID_TREEBOOKTREEVIEW = wxNewId(); BEGIN_EVENT_TABLE(wxTreebook, wxBookCtrlBase) @@ -98,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__ @@ -125,11 +130,11 @@ bool wxTreebook::InsertPage(size_t pagePos, return DoInsertPage(pagePos, page, text, bSelect, imageId); } -bool wxTreebook::AddSubPage(size_t pagePos, - wxWindow *page, - const wxString& text, - bool bSelect, - int imageId) +bool wxTreebook::InsertSubPage(size_t pagePos, + wxWindow *page, + const wxString& text, + bool bSelect, + int imageId) { return DoInsertSubPage(pagePos, page, text, bSelect, imageId); } @@ -201,8 +206,6 @@ bool wxTreebook::DoInsertPage(size_t pagePos, DoUpdateSelection(bSelect, pagePos); - m_bookctrl->InvalidateBestSize(); - return true; } @@ -244,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); @@ -256,8 +261,6 @@ bool wxTreebook::DoInsertSubPage(size_t pagePos, DoUpdateSelection(bSelect, newPos); - m_bookctrl->InvalidateBestSize(); - return true; } @@ -306,7 +309,6 @@ wxTreebookPage *wxTreebook::DoRemovePage(size_t pagePos) tree->DeleteChildren( pageId ); tree->Delete( pageId ); - tree->InvalidateBestSize(); return oldPage; } @@ -612,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));