X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/15f37147958a61adb54e0d64c82dc7b93c1f1cbe..3b2f109dbbea2847114c62315676eed7a3986dbc:/src/cocoa/toplevel.mm diff --git a/src/cocoa/toplevel.mm b/src/cocoa/toplevel.mm index 8cce120e00..626dba2773 100644 --- a/src/cocoa/toplevel.mm +++ b/src/cocoa/toplevel.mm @@ -222,7 +222,7 @@ void wxTopLevelWindowCocoa::CocoaDelegate_windowDidBecomeKey(void) wxLogTrace(wxTRACE_COCOA,wxT("wxTopLevelWindowCocoa=%p::CocoaDelegate_windowDidBecomeKey"),this); wxActivateEvent event(wxEVT_ACTIVATE, true, GetId()); event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); + HandleWindowEvent(event); } void wxTopLevelWindowCocoa::CocoaDelegate_windowDidResignKey(void) @@ -230,7 +230,7 @@ void wxTopLevelWindowCocoa::CocoaDelegate_windowDidResignKey(void) wxLogTrace(wxTRACE_COCOA,wxT("wxTopLevelWindowCocoa=%p::CocoaDelegate_windowDidResignKey"),this); wxActivateEvent event(wxEVT_ACTIVATE, false, GetId()); event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); + HandleWindowEvent(event); } void wxTopLevelWindowCocoa::CocoaDelegate_windowDidBecomeMain(void) @@ -301,7 +301,7 @@ bool wxTopLevelWindowCocoa::Show(bool show) // is shown. I doubt this will cause any problems though. wxSizeEvent event(GetSize(), GetId()); event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); + HandleWindowEvent(event); [m_cocoaNSWindow makeKeyAndOrderFront:m_cocoaNSWindow]; } @@ -385,16 +385,22 @@ void wxTopLevelWindowCocoa::CocoaSetWxWindowSize(int width, int height) { // Set the NSView size by setting the frame size to enclose it unsigned int styleMask = [m_cocoaNSWindow styleMask]; - NSRect frameRect = [m_cocoaNSWindow frame]; + NSRect oldFrameRect = [m_cocoaNSWindow frame]; NSRect contentRect = [NSWindow - contentRectForFrameRect: frameRect + contentRectForFrameRect: oldFrameRect styleMask: styleMask]; contentRect.size.width = width; contentRect.size.height = height; - frameRect = [NSWindow + NSRect newFrameRect = [NSWindow frameRectForContentRect: contentRect styleMask: styleMask]; - [m_cocoaNSWindow setFrame: frameRect display: NO]; + + // Cocoa uses +y is up but wxWidgets uses +y is down. We want an increase/decrease in height + // to not effect where the top of the window is placed so we set the new y origin relative the + // old one taking the height change into account. + newFrameRect.origin.y = oldFrameRect.origin.y + oldFrameRect.size.height - newFrameRect.size.height; + + [m_cocoaNSWindow setFrame: newFrameRect display: NO]; } void wxTopLevelWindowCocoa::DoMoveWindow(int x, int y, int width, int height)