]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/notebmac.cpp
moved wxUSE_MS_HTML_HELP back into setup_inc.h (undoing change of rev 1.41) as it...
[wxWidgets.git] / src / mac / carbon / notebmac.cpp
index dbea2f10221ab86d50a5be4f5333a895ed59e670..9d90682bc0e0edda80008210f817d75217da8110 100644 (file)
 
 #if wxUSE_NOTEBOOK
 
-#include "wx/app.h"
+#include "wx/notebook.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/string.h"
+    #include "wx/log.h"
+    #include "wx/app.h"
+    #include "wx/image.h"
+#endif
+
 #include "wx/string.h"
-#include "wx/log.h"
 #include "wx/imaglist.h"
-#include "wx/image.h"
-#include "wx/notebook.h"
 #include "wx/mac/uma.h"
 
 
@@ -75,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;
 
@@ -96,18 +104,18 @@ bool wxNotebook::Create( wxWindow *parent,
     ControlTabSize tabsize;
     switch (GetWindowVariant())
     {
-       case wxWINDOW_VARIANT_MINI:
+        case wxWINDOW_VARIANT_MINI:
             if ( UMAGetSystemVersion() >= 0x1030 )
                 tabsize = 3 ;
             else
                 tabsize = kControlSizeSmall;
             break;
 
-       case wxWINDOW_VARIANT_SMALL:
+        case wxWINDOW_VARIANT_SMALL:
             tabsize = kControlTabSizeSmall;
             break;
 
-       default:
+        default:
             tabsize = kControlTabSizeLarge;
             break;
     }
@@ -152,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 = 0)
 {
-    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 )
     {
-        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);
+            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() )
+            {
+                // program allows the page change
+                event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED);
+                (void)GetEventHandler()->ProcessEvent(event);
 
-            ChangePage(m_nSelection, nPage);
+                ChangePage(m_nSelection, nPage);
+            }
         }
-    }
 
     return m_nSelection;
 }
@@ -218,6 +228,11 @@ bool wxNotebook::SetPageImage(size_t nPage, int nImage)
 
         MacSetupTabs() ;
     }
+        else
+        {
+            ChangePage(m_nSelection, nPage);
+        }
+    }
 
     return true;
 }
@@ -322,7 +337,13 @@ int wxNotebook::HitTest(const wxPoint& pt, long * flags) const
 #if TARGET_API_MAC_OSX
     const int countPages = GetPageCount();
 
-    HIPoint hipoint = { pt.x , pt.y } ;
+    // we have to convert from Client to Window relative coordinates
+    wxPoint adjustedPt = pt + GetClientAreaOrigin();
+    // and now to HIView native ones
+    adjustedPt.x -= MacGetLeftBorderSize() ;
+    adjustedPt.y -= MacGetTopBorderSize() ;
+
+    HIPoint hipoint= { adjustedPt.x , adjustedPt.y } ;
     HIViewPartCode outPart = 0 ;
     OSStatus err = HIViewGetPartHit( m_peer->GetControlRef(), &hipoint, &outPart );
 
@@ -353,7 +374,7 @@ int wxNotebook::HitTest(const wxPoint& pt, long * flags) const
     }
 
     if ( outPart >= 1 && outPart <= countPages )
-        resultV = outPart ;
+        resultV = outPart - 1 ;
 #endif // TARGET_API_MAC_OSX
 
     if (flags != NULL)
@@ -361,10 +382,10 @@ int wxNotebook::HitTest(const wxPoint& pt, long * flags) const
         *flags = 0;
 
         // we cannot differentiate better
-        if (resultV >= 1)
-            *flags |= wxNB_HITTEST_ONLABEL;
+        if (resultV >= 0)
+            *flags |= wxBK_HITTEST_ONLABEL;
         else
-            *flags |= wxNB_HITTEST_NOWHERE;
+            *flags |= wxBK_HITTEST_NOWHERE;
     }
 
     return resultV;