From 0d4a26eff5b0765dc3ae8ad4562b1f1d6c8998cc Mon Sep 17 00:00:00 2001 From: Ken Thomases Date: Thu, 16 May 2013 18:43:28 -0500 Subject: [PATCH] winemac: Use window server's window list to find next window to offer focus to. ... rather than our orderedWineWindows array, which is going away. --- dlls/winemac.drv/cocoa_app.m | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index 67984cde6e6..74eff00740c 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -322,9 +322,21 @@ - (void) windowRejectedFocusEvent:(const macdrv_event*)event { if (event->window_got_focus.serial == windowFocusSerial) { + NSMutableArray* windows = [keyWindows mutableCopy]; + NSNumber* windowNumber; + WineWindow* window; + + for (windowNumber in [NSWindow windowNumbersWithOptions:NSWindowNumberListAllSpaces]) + { + window = (WineWindow*)[NSApp windowWithWindowNumber:[windowNumber integerValue]]; + if ([window isKindOfClass:[WineWindow class]] && [window screen] && + ![windows containsObject:window]) + [windows addObject:window]; + } + triedWindows = (NSMutableSet*)event->window_got_focus.tried_windows; [triedWindows addObject:(WineWindow*)event->window]; - for (NSWindow* window in [keyWindows arrayByAddingObjectsFromArray:[self orderedWineWindows]]) + for (window in windows) { if (![triedWindows containsObject:window] && [window canBecomeKeyWindow]) { @@ -333,6 +345,7 @@ - (void) windowRejectedFocusEvent:(const macdrv_event*)event } } triedWindows = nil; + [windows release]; } }