On-demand creation of the pages for speedup of sample launch.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2006-06-06 14:10:06 +00:00
parent 3f60522a05
commit 453535a739
17 changed files with 151 additions and 15 deletions

View File

@@ -48,6 +48,7 @@
#include "wx/fontdlg.h"
#include "wx/textdlg.h"
#include "wx/imaglist.h"
#include "wx/wupdlock.h"
#include "widgets.h"
@@ -567,12 +568,17 @@ void WidgetsFrame::InitBook()
WidgetsPage *WidgetsFrame::CurrentPage()
{
wxWindow *page = m_book->GetCurrentPage();
if(!page) return NULL;
#if USE_TREEBOOK
return wxStaticCast(m_book->GetCurrentPage(), WidgetsPage);
return wxStaticCast(page, WidgetsPage);
#else
WidgetsBookCtrl *book = wxStaticCast(m_book->GetCurrentPage(), WidgetsBookCtrl);
if (!book) return NULL;
return wxStaticCast(book->GetCurrentPage(), WidgetsPage);
WidgetsBookCtrl *subBook = wxStaticCast(page, WidgetsBookCtrl);
if (!subBook) return NULL;
page = subBook->GetCurrentPage();
if(!page) return NULL;
return wxStaticCast(page, WidgetsPage);
#endif
}
@@ -603,8 +609,29 @@ void WidgetsFrame::OnButtonClearLog(wxCommandEvent& WXUNUSED(event))
void WidgetsFrame::OnPageChanged(WidgetsBookCtrlEvent& event)
{
// adjust "Page" menu selection
wxMenuItem *item = GetMenuBar()->FindItem(Widgets_GoToPage + event.GetSelection());
if (item) item->Check();
// lazy creation of the pages
WidgetsPage* page = CurrentPage();
if (page && (page->GetChildren().GetCount()==0))
{
wxWindowUpdateLocker noUpdates(page);
page->CreateContent();
WidgetsBookCtrl *book = wxStaticCast(page->GetParent(), WidgetsBookCtrl);
wxSize size;
for ( size_t i = 0; i < book->GetPageCount(); ++i )
{
wxWindow *page = book->GetPage(i);
if (page)
{
size.IncTo(page->GetSize());
}
}
page->SetSize(size);
}
event.Skip();
}