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
This commit is contained in:
@@ -270,7 +270,6 @@ BEGIN_EVENT_TABLE(WidgetsFrame, wxFrame)
|
|||||||
|
|
||||||
#if wxUSE_MENUS
|
#if wxUSE_MENUS
|
||||||
EVT_WIDGETS_PAGE_CHANGING(wxID_ANY, WidgetsFrame::OnPageChanging)
|
EVT_WIDGETS_PAGE_CHANGING(wxID_ANY, WidgetsFrame::OnPageChanging)
|
||||||
EVT_WIDGETS_PAGE_CHANGED(wxID_ANY, WidgetsFrame::OnPageChanged)
|
|
||||||
EVT_MENU_RANGE(Widgets_GoToPage, Widgets_GoToPageLast,
|
EVT_MENU_RANGE(Widgets_GoToPage, Widgets_GoToPageLast,
|
||||||
WidgetsFrame::OnGoToPage)
|
WidgetsFrame::OnGoToPage)
|
||||||
|
|
||||||
@@ -571,6 +570,10 @@ void WidgetsFrame::InitBook()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Connect( wxID_ANY,
|
||||||
|
wxEVT_COMMAND_WIDGETS_PAGE_CHANGED,
|
||||||
|
wxWidgetsbookEventHandler(WidgetsFrame::OnPageChanged) );
|
||||||
|
|
||||||
#if USE_TREEBOOK
|
#if USE_TREEBOOK
|
||||||
// for treebook page #0 is empty parent page only so select the first page
|
// for treebook page #0 is empty parent page only so select the first page
|
||||||
// with some contents
|
// with some contents
|
||||||
@@ -581,6 +584,11 @@ void WidgetsFrame::InitBook()
|
|||||||
|
|
||||||
wxTreeItemIdValue cookie;
|
wxTreeItemIdValue cookie;
|
||||||
tree->EnsureVisible(tree->GetFirstChild(tree->GetRootItem(), 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
|
#endif // USE_TREEBOOK
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -625,8 +633,11 @@ void WidgetsFrame::OnButtonClearLog(wxCommandEvent& WXUNUSED(event))
|
|||||||
|
|
||||||
void WidgetsFrame::OnPageChanging(WidgetsBookCtrlEvent& event)
|
void WidgetsFrame::OnPageChanging(WidgetsBookCtrlEvent& event)
|
||||||
{
|
{
|
||||||
|
#if USE_TREEBOOK
|
||||||
|
// don't allow selection of entries without pages (categories)
|
||||||
if ( !m_book->GetPage(event.GetSelection()) )
|
if ( !m_book->GetPage(event.GetSelection()) )
|
||||||
event.Veto();
|
event.Veto();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void WidgetsFrame::OnPageChanged(WidgetsBookCtrlEvent& event)
|
void WidgetsFrame::OnPageChanged(WidgetsBookCtrlEvent& event)
|
||||||
|
@@ -18,14 +18,16 @@
|
|||||||
#define WidgetsBookCtrl wxTreebook
|
#define WidgetsBookCtrl wxTreebook
|
||||||
#define WidgetsBookCtrlEvent wxTreebookEvent
|
#define WidgetsBookCtrlEvent wxTreebookEvent
|
||||||
#define EVT_WIDGETS_PAGE_CHANGING(id,func) EVT_TREEBOOK_PAGE_CHANGING(id,func)
|
#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
|
#else
|
||||||
#include "wx/bookctrl.h"
|
#include "wx/bookctrl.h"
|
||||||
#define USE_TREEBOOK 0
|
#define USE_TREEBOOK 0
|
||||||
#define WidgetsBookCtrl wxBookCtrl
|
#define WidgetsBookCtrl wxBookCtrl
|
||||||
#define WidgetsBookCtrlEvent wxBookCtrlEvent
|
#define WidgetsBookCtrlEvent wxBookCtrlEvent
|
||||||
#define EVT_WIDGETS_PAGE_CHANGING(id,func) EVT_BOOKCTRL_PAGE_CHANGING(id,func)
|
#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
|
#endif
|
||||||
|
|
||||||
#if wxUSE_LOG && !defined(__WXHANDHELD__)
|
#if wxUSE_LOG && !defined(__WXHANDHELD__)
|
||||||
|
Reference in New Issue
Block a user