X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d0a84b63384ca1c1d8d20581fb56abbd1d826617..686ca1b5d4867bca6c82a82078fd26291c6e6659:/src/generic/toolbkg.cpp diff --git a/src/generic/toolbkg.cpp b/src/generic/toolbkg.cpp index 0822ab0ae8..310c29ab71 100644 --- a/src/generic/toolbkg.cpp +++ b/src/generic/toolbkg.cpp @@ -95,7 +95,7 @@ bool wxToolbook::Create(wxWindow *parent, orient = wxTB_VERTICAL; // TODO: make more configurable - + #if defined(__WXMAC__) && wxUSE_TOOLBAR && wxUSE_BMPBUTTON if (style & wxBK_BUTTONBAR) { @@ -245,39 +245,20 @@ int wxToolbook::GetSelection() const return m_selection; } -int wxToolbook::SetSelection(size_t n) +wxBookCtrlBaseEvent* wxToolbook::CreatePageChangingEvent() const { - wxCHECK_MSG( IS_VALID_PAGE(n), wxNOT_FOUND, - wxT("invalid page index in wxToolbook::SetSelection()") ); - - const int oldSel = m_selection; - - if ( int(n) != m_selection ) - { - wxToolbookEvent event(wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING, m_windowId); - event.SetSelection(n); - event.SetOldSelection(m_selection); - event.SetEventObject(this); - if ( !GetEventHandler()->ProcessEvent(event) || event.IsAllowed() ) - { - if ( m_selection != wxNOT_FOUND ) - m_pages[m_selection]->Hide(); - - wxWindow *page = m_pages[n]; - page->SetSize(GetPageRect()); - page->Show(); - - // change m_selection now to ignore the selection change event - m_selection = n; - GetToolBar()->ToggleTool(n + 1, true); + return new wxToolbookEvent(wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING, m_windowId); +} - // program allows the page change - event.SetEventType(wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED); - (void)GetEventHandler()->ProcessEvent(event); - } - } +void wxToolbook::MakeChangedEvent(wxBookCtrlBaseEvent &event) +{ + event.SetEventType(wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED); +} - return oldSel; +void wxToolbook::UpdateSelectedPage(size_t newsel) +{ + m_selection = newsel; + GetToolBar()->ToggleTool(newsel + 1, true); } // Not part of the wxBookctrl API, but must be called in OnIdle or @@ -314,14 +295,14 @@ int wxToolbook::HitTest(const wxPoint& pt, long *flags) const int pagePos = wxNOT_FOUND; if ( flags ) - *flags = wxNB_HITTEST_NOWHERE; + *flags = wxBK_HITTEST_NOWHERE; // convert from wxToolbook coordinates to wxToolBar ones const wxToolBarBase * const tbar = GetToolBar(); const wxPoint tbarPt = tbar->ScreenToClient(ClientToScreen(pt)); // is the point over the toolbar? - if ( wxRect(tbar->GetSize()).Inside(tbarPt) ) + if ( wxRect(tbar->GetSize()).Contains(tbarPt) ) { const wxToolBarToolBase * const tool = tbar->FindToolForPosition(tbarPt.x, tbarPt.y); @@ -330,13 +311,13 @@ int wxToolbook::HitTest(const wxPoint& pt, long *flags) const { pagePos = tbar->GetToolPos(tool->GetId()); if ( flags ) - *flags = wxNB_HITTEST_ONICON | wxNB_HITTEST_ONLABEL; + *flags = wxBK_HITTEST_ONICON | wxBK_HITTEST_ONLABEL; } } else // not over the toolbar { - if ( flags && GetPageRect().Inside(pt) ) - *flags |= wxNB_HITTEST_ONPAGE; + if ( flags && GetPageRect().Contains(pt) ) + *flags |= wxBK_HITTEST_ONPAGE; } return pagePos;