From 0cebbfc2bd3a22ee50f789fca623d9037660e495 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= Date: Wed, 4 Oct 2006 09:38:56 +0000 Subject: [PATCH] Connect changed page event after subpages are created so book->SetSelection does not cause any lazy creation and non-treebook-based build does not crash. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41623 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/widgets/widgets.cpp | 13 ++++++++++++- samples/widgets/widgets.h | 6 ++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/samples/widgets/widgets.cpp b/samples/widgets/widgets.cpp index 440cbcf32e..4c16ebb83c 100644 --- a/samples/widgets/widgets.cpp +++ b/samples/widgets/widgets.cpp @@ -270,7 +270,6 @@ BEGIN_EVENT_TABLE(WidgetsFrame, wxFrame) #if wxUSE_MENUS EVT_WIDGETS_PAGE_CHANGING(wxID_ANY, WidgetsFrame::OnPageChanging) - EVT_WIDGETS_PAGE_CHANGED(wxID_ANY, WidgetsFrame::OnPageChanged) EVT_MENU_RANGE(Widgets_GoToPage, Widgets_GoToPageLast, WidgetsFrame::OnGoToPage) @@ -571,6 +570,10 @@ void WidgetsFrame::InitBook() } } + Connect( wxID_ANY, + wxEVT_COMMAND_WIDGETS_PAGE_CHANGED, + wxWidgetsbookEventHandler(WidgetsFrame::OnPageChanged) ); + #if USE_TREEBOOK // for treebook page #0 is empty parent page only so select the first page // with some contents @@ -581,6 +584,11 @@ void WidgetsFrame::InitBook() wxTreeItemIdValue cookie; tree->EnsureVisible(tree->GetFirstChild(tree->GetRootItem(), cookie)); +#else + // for other books set selection twice to force connected event handler + // to force lazy creation of initial visible content + m_book->SetSelection(1); + m_book->SetSelection(0); #endif // USE_TREEBOOK } @@ -625,8 +633,11 @@ void WidgetsFrame::OnButtonClearLog(wxCommandEvent& WXUNUSED(event)) void WidgetsFrame::OnPageChanging(WidgetsBookCtrlEvent& event) { +#if USE_TREEBOOK + // don't allow selection of entries without pages (categories) if ( !m_book->GetPage(event.GetSelection()) ) event.Veto(); +#endif } void WidgetsFrame::OnPageChanged(WidgetsBookCtrlEvent& event) diff --git a/samples/widgets/widgets.h b/samples/widgets/widgets.h index 56a6ebfd92..7f077cfb54 100644 --- a/samples/widgets/widgets.h +++ b/samples/widgets/widgets.h @@ -18,14 +18,16 @@ #define WidgetsBookCtrl wxTreebook #define WidgetsBookCtrlEvent wxTreebookEvent #define EVT_WIDGETS_PAGE_CHANGING(id,func) EVT_TREEBOOK_PAGE_CHANGING(id,func) - #define EVT_WIDGETS_PAGE_CHANGED(id,func) EVT_TREEBOOK_PAGE_CHANGED(id,func) + #define wxEVT_COMMAND_WIDGETS_PAGE_CHANGED wxEVT_COMMAND_TREEBOOK_PAGE_CHANGED + #define wxWidgetsbookEventHandler(func) wxTreebookEventHandler(func) #else #include "wx/bookctrl.h" #define USE_TREEBOOK 0 #define WidgetsBookCtrl wxBookCtrl #define WidgetsBookCtrlEvent wxBookCtrlEvent #define EVT_WIDGETS_PAGE_CHANGING(id,func) EVT_BOOKCTRL_PAGE_CHANGING(id,func) - #define EVT_WIDGETS_PAGE_CHANGED(id,func) EVT_BOOKCTRL_PAGE_CHANGED(id,func) + #define wxEVT_COMMAND_WIDGETS_PAGE_CHANGED wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED + #define wxWidgetsbookEventHandler(func) wxBookctrlEventHandler(func) #endif #if wxUSE_LOG && !defined(__WXHANDHELD__) -- 2.47.2