Module: wine Branch: master Commit: 0d4a26eff5b0765dc3ae8ad4562b1f1d6c8998cc URL: http://source.winehq.org/git/wine.git/?a=commit;h=0d4a26eff5b0765dc3ae8ad456...
Author: Ken Thomases ken@codeweavers.com Date: Thu May 16 18:43:28 2013 -0500
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 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index 67984cd..74eff00 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -322,9 +322,21 @@ int macdrv_err_on; { 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 @@ int macdrv_err_on; } } triedWindows = nil; + [windows release]; } }