From: David Elliott Date: Tue, 12 Aug 2003 04:30:50 +0000 (+0000) Subject: Implement Raise()/Lower() using [NSVIew sortSubviewsUsingFunction:context:] X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/4328a6ba2aaedae39e047311f59ff28839be36ed Implement Raise()/Lower() using [NSVIew sortSubviewsUsingFunction:context:] git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22776 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/cocoa/window.mm b/src/cocoa/window.mm index 80d7260ea0..c73a1fa0ca 100644 --- a/src/cocoa/window.mm +++ b/src/cocoa/window.mm @@ -536,20 +536,45 @@ void wxWindow::Clear() // TODO } +static int CocoaRaiseWindowCompareFunction(id first, id second, void *target) +{ + // first should be ordered higher + if(first==target) + return NSOrderedDescending; + // second should be ordered higher + if(second==target) + return NSOrderedAscending; + return NSOrderedSame; +} + // Raise the window to the top of the Z order void wxWindow::Raise() { - wxAutoNSAutoreleasePool pool; +// wxAutoNSAutoreleasePool pool; NSView *nsview = GetNSViewForSuperview(); - NSView *superview = [nsview superview]; - [nsview removeFromSuperview]; - [superview addSubview:nsview]; + [[nsview superview] sortSubviewsUsingFunction: + CocoaRaiseWindowCompareFunction + context: nsview]; +} + +static int CocoaLowerWindowCompareFunction(id first, id second, void *target) +{ + // first should be ordered lower + if(first==target) + return NSOrderedAscending; + // second should be ordered lower + if(second==target) + return NSOrderedDescending; + return NSOrderedSame; } // Lower the window to the bottom of the Z order void wxWindow::Lower() { - // TODO + NSView *nsview = GetNSViewForSuperview(); + [[nsview superview] sortSubviewsUsingFunction: + CocoaLowerWindowCompareFunction + context: nsview]; } bool wxWindow::DoPopupMenu(wxMenu *menu, int x, int y)