X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3ef4abec3f2863bb8297f24367c056d339981d62..947f3b358cae28b63c6f69af21c493cab355fb7e:/src/mac/carbon/toplevel.cpp diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index cd086d82e9..b26e92f1ce 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -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 ; @@ -485,7 +485,7 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler), wxToolTip::RelayEvent( g_MacLastWindow , eventleave); #endif - g_MacLastWindow->GetEventHandler()->ProcessEvent(eventleave); + g_MacLastWindow->HandleWindowEvent(eventleave); } if ( currentMouseWindow ) @@ -500,7 +500,7 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler), wxToolTip::RelayEvent( currentMouseWindow , evententer ); #endif - currentMouseWindow->GetEventHandler()->ProcessEvent(evententer); + currentMouseWindow->HandleWindowEvent(evententer); } g_MacLastWindow = currentMouseWindow ; @@ -532,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)) @@ -550,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(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 ) @@ -588,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(); + } } } @@ -641,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 ; @@ -652,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 ; @@ -686,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 } @@ -694,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 ; @@ -722,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() ) @@ -1010,17 +990,23 @@ 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 ) || col == wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDocumentWindowBackground)) ) + if ( col == wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDocumentWindowBackground)) ) { SetThemeWindowBackground( (WindowRef) m_macWindow, kThemeBrushDocumentWindowBackground, false ) ; SetBackgroundStyle(wxBG_STYLE_CUSTOM); } - else if ( col == wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ) || col == wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDialogBackgroundActive)) ) + else if ( col == wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDialogBackgroundActive)) ) { SetThemeWindowBackground( (WindowRef) m_macWindow, kThemeBrushDialogBackgroundActive, false ) ; SetBackgroundStyle(wxBG_STYLE_CUSTOM); @@ -1229,7 +1215,7 @@ void wxTopLevelWindowMac::DoMacCreateRealWindow( SetWindowBounds( (WindowRef) m_macWindow , kWindowStructureRgn , &theBoundsRect ) ; wxAssociateWinWithMacWindow( (WindowRef) m_macWindow , this ) ; - SetWindowTitleWithCFString( (WindowRef) m_macWindow , wxMacCFStringHolder( 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 @@ -1281,7 +1267,7 @@ void wxTopLevelWindowMac::DoMacCreateRealWindow( } wxWindowCreateEvent event(this); - GetEventHandler()->ProcessEvent(event); + HandleWindowEvent(event); } void wxTopLevelWindowMac::ClearBackground() @@ -1326,7 +1312,7 @@ void wxTopLevelWindowMac::MacActivate( long timestamp , bool WXUNUSED(inIsActiva void wxTopLevelWindowMac::SetTitle(const wxString& title) { wxWindow::SetLabel( title ) ; - SetWindowTitleWithCFString( (WindowRef) m_macWindow , wxMacCFStringHolder( title , m_font.GetEncoding() ) ) ; + SetWindowTitleWithCFString( (WindowRef) m_macWindow , wxCFStringRef( title , GetFont().GetEncoding() ) ) ; } wxString wxTopLevelWindowMac::GetTitle() const @@ -1358,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 { @@ -1441,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; } @@ -1732,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 @@ -1809,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() ); @@ -1850,7 +1836,7 @@ static SInt32 wxShapedMacWindowGetFeatures(WindowRef WXUNUSED(window), SInt32 pa *(OptionBits*)param = //kWindowCanGrow | //kWindowCanZoom | - //kWindowCanCollapse | + kWindowCanCollapse | //kWindowCanGetWindowRegion | //kWindowHasTitleBar | //kWindowSupportsDragHilite |