]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/toplevel.cpp
fix warnings about unused parameters/variables in release build
[wxWidgets.git] / src / mac / carbon / toplevel.cpp
index 6f7d25249998a6f080cb8412780cdd237befed34..b26e92f1ce18d50563b2ddf01502cc470cddad67 100644 (file)
@@ -61,7 +61,7 @@
 #define kWindowUnifiedTitleAndToolbarAttribute (1 << 7)
 
 // trace mask for activation tracing messages
-static const wxChar *TRACE_ACTIVATE = _T("activation");
+#define TRACE_ACTIVATE "activation"
 
 // ----------------------------------------------------------------------------
 // globals
@@ -211,25 +211,25 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
                 {
                     event.m_keyCode = WXK_CONTROL ;
                     event.SetEventType( ( modifiers & controlKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
-                    focus->GetEventHandler()->ProcessEvent( event ) ;
+                    focus->HandleWindowEvent( event ) ;
                 }
                 if ( /* focus && */ (modifiers ^ wxApp::s_lastModifiers ) & shiftKey )
                 {
                     event.m_keyCode = WXK_SHIFT ;
                     event.SetEventType( ( modifiers & shiftKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
-                    focus->GetEventHandler()->ProcessEvent( event ) ;
+                    focus->HandleWindowEvent( event ) ;
                 }
                 if ( /* focus && */ (modifiers ^ wxApp::s_lastModifiers ) & optionKey )
                 {
                     event.m_keyCode = WXK_ALT ;
                     event.SetEventType( ( modifiers & optionKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
-                    focus->GetEventHandler()->ProcessEvent( event ) ;
+                    focus->HandleWindowEvent( event ) ;
                 }
                 if ( /* focus && */ (modifiers ^ wxApp::s_lastModifiers ) & cmdKey )
                 {
                     event.m_keyCode = WXK_COMMAND ;
                     event.SetEventType( ( modifiers & cmdKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
-                    focus->GetEventHandler()->ProcessEvent( event ) ;
+                    focus->HandleWindowEvent( event ) ;
                 }
 
                 wxApp::s_lastModifiers = modifiers ;
@@ -390,59 +390,6 @@ void SetupMouseEvent( wxMouseEvent &wxevent , wxMacCarbonEvent &cEvent )
     }
 }
 
-ControlRef wxMacFindSubControl( wxTopLevelWindowMac* toplevelWindow, const Point& location , ControlRef superControl , ControlPartCode *outPart )
-{
-    if ( superControl )
-    {
-        UInt16 childrenCount = 0 ;
-        ControlHandle sibling ;
-        Rect r ;
-        OSStatus err = CountSubControls( superControl , &childrenCount ) ;
-        if ( err == errControlIsNotEmbedder )
-            return NULL ;
-
-        wxASSERT_MSG( err == noErr , wxT("Unexpected error when accessing subcontrols") ) ;
-
-        for ( UInt16 i = childrenCount ; i >=1  ; --i )
-        {
-            err = GetIndexedSubControl( superControl , i , & sibling ) ;
-            if ( err == errControlIsNotEmbedder )
-                return NULL ;
-
-            wxASSERT_MSG( err == noErr , wxT("Unexpected error when accessing subcontrols") ) ;
-            if ( IsControlVisible( sibling ) )
-            {
-                UMAGetControlBoundsInWindowCoords( sibling , &r ) ;
-                if ( MacPtInRect( location , &r ) )
-                {
-                    ControlHandle child = wxMacFindSubControl( toplevelWindow , location , sibling , outPart ) ;
-                    if ( child )
-                    {
-                        return child ;
-                    }
-                    else
-                    {
-                        Point testLocation = location ;
-
-                        if ( toplevelWindow )
-                        {
-                            testLocation.h -= r.left ;
-                            testLocation.v -= r.top ;
-                        }
-
-                        *outPart = TestControl( sibling , testLocation ) ;
-
-                        return sibling ;
-                    }
-                }
-            }
-        }
-    }
-
-    return NULL ;
-}
-
-
 #define NEW_CAPTURE_HANDLING 1
 
 pascal OSStatus
@@ -538,7 +485,7 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler),
             wxToolTip::RelayEvent( g_MacLastWindow , eventleave);
 #endif
 
-            g_MacLastWindow->GetEventHandler()->ProcessEvent(eventleave);
+            g_MacLastWindow->HandleWindowEvent(eventleave);
         }
 
         if ( currentMouseWindow )
@@ -553,7 +500,7 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler),
             wxToolTip::RelayEvent( currentMouseWindow , evententer );
 #endif
 
-            currentMouseWindow->GetEventHandler()->ProcessEvent(evententer);
+            currentMouseWindow->HandleWindowEvent(evententer);
         }
 
         g_MacLastWindow = currentMouseWindow ;
@@ -585,7 +532,7 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler),
             wxToolTip::RelayEvent( currentMouseWindow , wxevent );
 #endif
 
-        if ( currentMouseWindow->GetEventHandler()->ProcessEvent(wxevent) )
+        if ( currentMouseWindow->HandleWindowEvent(wxevent) )
         {
             if ((currentMouseWindowParent != NULL) &&
                 (currentMouseWindowParent->GetChildren().Find(currentMouseWindow) == NULL))
@@ -603,31 +550,6 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler),
                 if (currentMouseWindow->CanAcceptFocus() && wxWindow::FindFocus()!=currentMouseWindow)
                     currentMouseWindow->SetFocus();
             }
-
-            // if built-in find control is finding the wrong control (ie static box instead of overlaid
-            // button, we cannot let the standard handler do its job, but must handle manually
-
-            if ( cEvent.GetKind() == kEventMouseDown )
-            {
-                if ( currentMouseWindow->MacIsReallyEnabled() )
-                {
-                    EventModifiers modifiers = cEvent.GetParameter<EventModifiers>(kEventParamKeyModifiers, typeUInt32) ;
-                    Point clickLocation = windowMouseLocation ;
-
-                    currentMouseWindow->MacRootWindowToWindow( &clickLocation.h , &clickLocation.v ) ;
-
-                    HandleControlClick( (ControlRef) currentMouseWindow->GetHandle() , clickLocation ,
-                        modifiers , (ControlActionUPP ) -1 ) ;
-
-                    if ((currentMouseWindowParent != NULL) &&
-                        (currentMouseWindowParent->GetChildren().Find(currentMouseWindow) == NULL))
-                    {
-                        currentMouseWindow = NULL;
-                    }
-                }
-
-                result = noErr ;
-            }
         }
 
         if ( cEvent.GetKind() == kEventMouseUp && wxApp::s_captureWindow )
@@ -641,11 +563,16 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler),
         wxWindow* cursorTarget = currentMouseWindow ;
         wxPoint cursorPoint( wxevent.m_x , wxevent.m_y ) ;
 
-        while ( cursorTarget && !cursorTarget->MacSetupCursor( cursorPoint ) )
+        extern wxCursor gGlobalCursor;
+
+        if (!gGlobalCursor.IsOk())
         {
-            cursorTarget = cursorTarget->GetParent() ;
-            if ( cursorTarget )
-                cursorPoint += cursorTarget->GetPosition();
+            while ( cursorTarget && !cursorTarget->MacSetupCursor( cursorPoint ) )
+            {
+                cursorTarget = cursorTarget->GetParent() ;
+                if ( cursorTarget )
+                    cursorPoint += cursorTarget->GetPosition();
+            }
         }
 
     }
@@ -694,7 +621,7 @@ wxMacTopLevelWindowEventHandler(EventHandlerCallRef WXUNUSED(handler),
             wxActivateEvent wxevent(wxEVT_ACTIVATE, true , toplevelWindow->GetId());
             wxevent.SetTimestamp( cEvent.GetTicks() ) ;
             wxevent.SetEventObject(toplevelWindow);
-            toplevelWindow->GetEventHandler()->ProcessEvent(wxevent);
+            toplevelWindow->HandleWindowEvent(wxevent);
             // we still sending an eventNotHandledErr in order to allow for default processing
         }
             break ;
@@ -705,7 +632,7 @@ wxMacTopLevelWindowEventHandler(EventHandlerCallRef WXUNUSED(handler),
             wxActivateEvent wxevent(wxEVT_ACTIVATE, false , toplevelWindow->GetId());
             wxevent.SetTimestamp( cEvent.GetTicks() ) ;
             wxevent.SetEventObject(toplevelWindow);
-            toplevelWindow->GetEventHandler()->ProcessEvent(wxevent);
+            toplevelWindow->HandleWindowEvent(wxevent);
             // we still sending an eventNotHandledErr in order to allow for default processing
         }
             break ;
@@ -739,7 +666,7 @@ wxMacTopLevelWindowEventHandler(EventHandlerCallRef WXUNUSED(handler),
                 wxSizeEvent event( r.GetSize() , toplevelWindow->GetId() ) ;
                 event.SetEventObject( toplevelWindow ) ;
 
-                toplevelWindow->GetEventHandler()->ProcessEvent(event) ;
+                toplevelWindow->HandleWindowEvent(event) ;
                 toplevelWindow->wxWindowMac::MacSuperChangedPosition() ; // like this only children will be notified
             }
 
@@ -747,7 +674,7 @@ wxMacTopLevelWindowEventHandler(EventHandlerCallRef WXUNUSED(handler),
             {
                 wxMoveEvent event( r.GetLeftTop() , toplevelWindow->GetId() ) ;
                 event.SetEventObject( toplevelWindow ) ;
-                toplevelWindow->GetEventHandler()->ProcessEvent(event) ;
+                toplevelWindow->HandleWindowEvent(event) ;
             }
 
             result = noErr ;
@@ -775,7 +702,7 @@ wxMacTopLevelWindowEventHandler(EventHandlerCallRef WXUNUSED(handler),
                 wxSizeEvent wxevent( r , toplevelWindow->GetId() ) ;
                 wxevent.SetEventObject( toplevelWindow ) ;
                 wxRect adjustR = r ;
-                if ( toplevelWindow->GetEventHandler()->ProcessEvent(wxevent) )
+                if ( toplevelWindow->HandleWindowEvent(wxevent) )
                     adjustR = wxevent.GetRect() ;
 
                 if ( toplevelWindow->GetMaxWidth() != -1 && adjustR.GetWidth() > toplevelWindow->GetMaxWidth() )
@@ -938,7 +865,7 @@ wxMacDeferredWindowDeleter::wxMacDeferredWindowDeleter( WindowRef windowRef )
 
 wxMacDeferredWindowDeleter::~wxMacDeferredWindowDeleter()
 {
-    UMADisposeWindow( (WindowRef) m_macWindow ) ;
+    DisposeWindow( (WindowRef) m_macWindow ) ;
 }
 
 bool wxTopLevelWindowMac::Create(wxWindow *parent,
@@ -961,7 +888,7 @@ bool wxTopLevelWindowMac::Create(wxWindow *parent,
 
     DoMacCreateRealWindow( parent, title, pos , size , style , name ) ;
 
-    SetBackgroundColour(wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDialogBackgroundActive)));
+    SetBackgroundColour(wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ));
 
     if (GetExtraStyle() & wxFRAME_EX_METAL)
         MacSetMetalAppearance(true);
@@ -1063,16 +990,27 @@ wxPoint wxTopLevelWindowMac::GetClientAreaOrigin() const
     return wxPoint(0, 0) ;
 }
 
-bool wxTopLevelWindowMac::SetBackgroundColour(const wxColour& col )
+bool wxTopLevelWindowMac::SetBackgroundColour(const wxColour& c )
 {
+    wxColour col = c;
+    if ( col == wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) )
+        col = wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDocumentWindowBackground));
+    else if ( col == wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ) )
+        col = wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDialogBackgroundActive));
+        
     if ( !wxTopLevelWindowBase::SetBackgroundColour(col) && m_hasBgCol )
         return false ;
     
-    if ( col == wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) )
+    if ( col == wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDocumentWindowBackground)) )
+    {
         SetThemeWindowBackground( (WindowRef) m_macWindow,  kThemeBrushDocumentWindowBackground, false ) ;
-    else if ( col == wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ) )
+        SetBackgroundStyle(wxBG_STYLE_CUSTOM);
+    }
+    else if ( col == wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDialogBackgroundActive)) )
+    {
         SetThemeWindowBackground( (WindowRef) m_macWindow,  kThemeBrushDialogBackgroundActive, false ) ;
-    // TODO BETTER THEME SUPPORT
+        SetBackgroundStyle(wxBG_STYLE_CUSTOM);
+    }
     return true;
 }    
 
@@ -1277,7 +1215,7 @@ void  wxTopLevelWindowMac::DoMacCreateRealWindow(
     SetWindowBounds(  (WindowRef) m_macWindow , kWindowStructureRgn , &theBoundsRect ) ;
 
     wxAssociateWinWithMacWindow( (WindowRef) m_macWindow , this ) ;
-    UMASetWTitle( (WindowRef) m_macWindow , title , m_font.GetEncoding() ) ;
+    SetWindowTitleWithCFString( (WindowRef) m_macWindow , wxCFStringRef( title , GetFont().GetEncoding() ) );
     m_peer = new wxMacControl(this , true /*isRootControl*/) ;
 
     // There is a bug in 10.2.X for ::GetRootControl returning the window view instead of
@@ -1329,7 +1267,7 @@ void  wxTopLevelWindowMac::DoMacCreateRealWindow(
     }
 
     wxWindowCreateEvent event(this);
-    GetEventHandler()->ProcessEvent(event);
+    HandleWindowEvent(event);
 }
 
 void wxTopLevelWindowMac::ClearBackground()
@@ -1374,7 +1312,7 @@ void wxTopLevelWindowMac::MacActivate( long timestamp , bool WXUNUSED(inIsActiva
 void wxTopLevelWindowMac::SetTitle(const wxString& title)
 {
     wxWindow::SetLabel( title ) ;
-    UMASetWTitle( (WindowRef)m_macWindow , title , m_font.GetEncoding() ) ;
+    SetWindowTitleWithCFString( (WindowRef) m_macWindow , wxCFStringRef( title , GetFont().GetEncoding() ) ) ;
 }
 
 wxString wxTopLevelWindowMac::GetTitle() const
@@ -1406,7 +1344,7 @@ bool wxTopLevelWindowMac::Show(bool show)
         // because apps expect a size event to occur at this moment
         wxSizeEvent event(GetSize() , m_windowId);
         event.SetEventObject(this);
-        GetEventHandler()->ProcessEvent(event);
+        HandleWindowEvent(event);
     }
     else
     {
@@ -1489,7 +1427,7 @@ bool wxTopLevelWindowMac::ShowWithEffect(wxShowEffect effect,
     // because apps expect a size event to occur at this moment
     wxSizeEvent event(GetSize() , m_windowId);
     event.SetEventObject(this);
-    GetEventHandler()->ProcessEvent(event);
+    HandleWindowEvent(event);
     
     return true;
 }
@@ -1780,7 +1718,7 @@ void wxTopLevelWindowMac::MacSetUnifiedAppearance( bool set )
     // for wx.
     // TODO: Determine if we need this on Leopard as well. (should be harmless either way,
     // though)
-    SetBackgroundColour( wxSYS_COLOUR_WINDOW ) ;
+    SetBackgroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW) ) ;
 }
 
 bool wxTopLevelWindowMac::MacGetUnifiedAppearance() const
@@ -1857,7 +1795,7 @@ bool wxTopLevelWindowMac::SetShape(const wxRegion& region)
 
     // Make a copy of the region
     RgnHandle  shapeRegion = NewRgn();
-    CopyRgn( (RgnHandle)region.GetWXHRGN(), shapeRegion );
+    HIShapeGetAsQDRgn( region.GetWXHRGN(), shapeRegion );
 
     // Dispose of any shape region we may already have
     RgnHandle oldRgn = (RgnHandle)GetWRefCon( (WindowRef)MacGetWindowRef() );
@@ -1898,7 +1836,7 @@ static SInt32 wxShapedMacWindowGetFeatures(WindowRef WXUNUSED(window), SInt32 pa
     *(OptionBits*)param =
         //kWindowCanGrow |
         //kWindowCanZoom |
-        //kWindowCanCollapse |
+        kWindowCanCollapse |
         //kWindowCanGetWindowRegion |
         //kWindowHasTitleBar |
         //kWindowSupportsDragHilite |