X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9d488cf1b5bd28722ae3020606e9674108dd417..6e644ef2d35230f9d4a5c0bb89b98edd3e4d6c69:/src/mac/carbon/toplevel.cpp diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index f1308198d4..32a04d0415 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "toplevel.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -49,11 +45,20 @@ #include "wx/sysopt.h" #endif +#ifndef __DARWIN__ #include +#endif //For targeting OSX #include "wx/mac/private.h" +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- + +// trace mask for activation tracing messages +static const wxChar *TRACE_ACTIVATE = _T("activation"); + // ---------------------------------------------------------------------------- // globals // ---------------------------------------------------------------------------- @@ -389,7 +394,7 @@ static void SetupMouseEvent( wxMouseEvent &wxevent , wxMacCarbonEvent &cEvent ) } } -ControlRef wxMacFindSubControl( wxTopLevelWindowMac* toplevelWindow, Point location , ControlRef superControl , ControlPartCode *outPart ) +ControlRef wxMacFindSubControl( wxTopLevelWindowMac* toplevelWindow, const Point& location , ControlRef superControl , ControlPartCode *outPart ) { if ( superControl ) { @@ -436,7 +441,7 @@ ControlRef wxMacFindSubControl( wxTopLevelWindowMac* toplevelWindow, Point locat return NULL ; } -ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow , Point location , WindowRef window , ControlPartCode *outPart ) +ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow , const Point& location , WindowRef window , ControlPartCode *outPart ) { #if TARGET_API_MAC_OSX if ( UMAGetSystemVersion() >= 0x1030 && ( toplevelWindow == 0 || toplevelWindow->MacUsesCompositing() ) ) @@ -447,6 +452,9 @@ ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow , Poi return wxMacFindSubControl( toplevelWindow , location , rootControl , outPart ) ; } + +#define NEW_CAPTURE_HANDLING 1 + pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , EventRef event , void *data ) { wxTopLevelWindowMac* toplevelWindow = (wxTopLevelWindowMac*) data ; @@ -464,11 +472,23 @@ pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , Ev wxWindow* currentMouseWindow = NULL ; ControlRef control = NULL ; +#if NEW_CAPTURE_HANDLING + if ( wxApp::s_captureWindow ) + { + window = (WindowRef) wxApp::s_captureWindow->MacGetTopLevelWindowRef() ; + windowPart = inContent ; + } +#endif + if ( window ) { QDGlobalToLocalPoint( UMAGetWindowPort(window ) , &windowMouseLocation ) ; - if ( wxApp::s_captureWindow && wxApp::s_captureWindow->MacGetTopLevelWindowRef() == (WXWindow) window && windowPart == inContent ) + if ( wxApp::s_captureWindow +#if !NEW_CAPTURE_HANDLING + && wxApp::s_captureWindow->MacGetTopLevelWindowRef() == (WXWindow) window && windowPart == inContent +#endif + ) { currentMouseWindow = wxApp::s_captureWindow ; } @@ -802,34 +822,6 @@ DEFINE_ONE_SHOT_HANDLER_GETTER( wxMacTopLevelEventHandler ) // Find an item given the Macintosh Window Reference -#if KEY_wxList_DEPRECATED -wxList wxWinMacWindowList(wxKEY_INTEGER); -wxTopLevelWindowMac *wxFindWinFromMacWindow(WindowRef inWindowRef) -{ - wxNode *node = wxWinMacWindowList.Find((long)inWindowRef); - if (!node) - return NULL; - return (wxTopLevelWindowMac *)node->GetData(); -} - -void wxAssociateWinWithMacWindow(WindowRef inWindowRef, wxTopLevelWindowMac *win) ; -void wxAssociateWinWithMacWindow(WindowRef inWindowRef, wxTopLevelWindowMac *win) -{ - // adding NULL WindowRef is (first) surely a result of an error and - // (secondly) breaks menu command processing - wxCHECK_RET( inWindowRef != (WindowRef) NULL, wxT("attempt to add a NULL WindowRef to window list") ); - - if ( !wxWinMacWindowList.Find((long)inWindowRef) ) - wxWinMacWindowList.Append((long)inWindowRef, win); -} - -void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win) ; -void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win) -{ - wxWinMacWindowList.DeleteObject(win); -} -#else - WX_DECLARE_HASH_MAP(WindowRef, wxTopLevelWindowMac*, wxPointerHash, wxPointerEqual, MacWindowMap); static MacWindowMap wxWinMacWindowList; @@ -864,7 +856,6 @@ void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win) } } } -#endif // deprecated wxList // ---------------------------------------------------------------------------- // wxTopLevelWindowMac creation @@ -1256,14 +1247,16 @@ void wxTopLevelWindowMac::MacDelayedDeactivation(long timestamp) { if(s_macDeactivateWindow) { - wxLogDebug(wxT("Doing delayed deactivation of %p"),s_macDeactivateWindow); + wxLogTrace(TRACE_ACTIVATE, + wxT("Doing delayed deactivation of %p"), + s_macDeactivateWindow); s_macDeactivateWindow->MacActivate(timestamp, false); } } void wxTopLevelWindowMac::MacActivate( long timestamp , bool inIsActivating ) { - // wxLogDebug(wxT("TopLevel=%p::MacActivate"),this); + wxLogTrace(TRACE_ACTIVATE, wxT("TopLevel=%p::MacActivate"), this); if(s_macDeactivateWindow==this) s_macDeactivateWindow=NULL; @@ -1556,7 +1549,10 @@ bool wxTopLevelWindowMac::SetShape(const wxRegion& region) { wxSize sz = GetClientSize(); wxRegion rgn(0, 0, sz.x, sz.y); - return SetShape(rgn); + if ( rgn.IsEmpty() ) + return false ; + else + return SetShape(rgn); } // Make a copy of the region