X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/670f9935630beb2123a5ca62894ae92a3f0efa4f..80a779275ae04443c568dca919adb26cf6f5002c:/src/mac/carbon/notebmac.cpp diff --git a/src/mac/carbon/notebmac.cpp b/src/mac/carbon/notebmac.cpp index 28e18d9174..2aff7f536b 100644 --- a/src/mac/carbon/notebmac.cpp +++ b/src/mac/carbon/notebmac.cpp @@ -19,11 +19,11 @@ #include "wx/string.h" #include "wx/log.h" #include "wx/app.h" + #include "wx/image.h" #endif #include "wx/string.h" #include "wx/imaglist.h" -#include "wx/image.h" #include "wx/mac/uma.h" @@ -80,6 +80,9 @@ bool wxNotebook::Create( wxWindow *parent, { m_macIsUserPane = false ; + if (! (style & wxBK_ALIGN_MASK)) + style |= wxBK_TOP; + if ( !wxNotebookBase::Create( parent, id, pos, size, style, name ) ) return false; @@ -157,25 +160,27 @@ wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const return DoGetSizeFromClientSize( sizePage ); } -int wxNotebook::SetSelection(size_t nPage) +int wxNotebook::DoSetSelection(size_t nPage, int flags) { - wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("SetSelection: invalid notebook page") ); + wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("DoSetSelection: invalid notebook page") ); - if ( int(nPage) != m_nSelection ) + if ( m_nSelection == wxNOT_FOUND || nPage != (size_t)m_nSelection ) { - wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId); - event.SetSelection(nPage); - event.SetOldSelection(m_nSelection); - event.SetEventObject(this); - if ( !GetEventHandler()->ProcessEvent(event) || event.IsAllowed() ) + if ( flags & SetSelection_SendEvent ) { - // program allows the page change - event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED); - (void)GetEventHandler()->ProcessEvent(event); + if ( !SendPageChangingEvent(nPage) ) + { + // vetoed by program + return m_nSelection; + } + //else: program allows the page change - ChangePage(m_nSelection, nPage); + SendPageChangedEvent(m_nSelection, nPage); } + + ChangePage(m_nSelection, nPage); } + //else: no change return m_nSelection; } @@ -373,9 +378,9 @@ int wxNotebook::HitTest(const wxPoint& pt, long * flags) const // we cannot differentiate better if (resultV >= 0) - *flags |= wxNB_HITTEST_ONLABEL; + *flags |= wxBK_HITTEST_ONLABEL; else - *flags |= wxNB_HITTEST_NOWHERE; + *flags |= wxBK_HITTEST_NOWHERE; } return resultV; @@ -422,9 +427,13 @@ void wxNotebook::MacSetupTabs() m_peer->SetTabEnabled( ii + 1, true ) ; } +#if wxMAC_USE_CORE_GRAPHICS + Refresh(); +#else Rect bounds; m_peer->GetRectInWindowCoords( &bounds ) ; InvalWindowRect( (WindowRef)MacGetTopLevelWindowRef(), &bounds ); +#endif } wxRect wxNotebook::GetPageRect() const