focus_window_set.mm revision 558790d6acca3451cf3a6b497803a5f07d0bec58
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#import <Cocoa/Cocoa.h> 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/cocoa/focus_window_set.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ui { 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochvoid FocusWindowSet(const std::set<NSWindow*>& windows) { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NSArray* ordered_windows = [NSApp orderedWindows]; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NSWindow* frontmost_window = nil; 14558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch NSWindow* frontmost_miniaturized_window = nil; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = [ordered_windows count] - 1; i >= 0; i--) { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NSWindow* win = [ordered_windows objectAtIndex:i]; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (windows.find(win) != windows.end()) { 18558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch if ([win isVisible]) { 19558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch [win orderFront:nil]; 20558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch frontmost_window = win; 21558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } else if ([win isMiniaturized]) { 22558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch frontmost_miniaturized_window = win; 23558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 26558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch if (!frontmost_window && frontmost_miniaturized_window) { 27558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch [frontmost_miniaturized_window deminiaturize:nil]; 28558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch frontmost_window = frontmost_miniaturized_window; 29558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 30558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch if (frontmost_window) { 31558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch [NSApp activateIgnoringOtherApps:YES]; 32558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch [frontmost_window makeMainWindow]; 33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch [frontmost_window makeKeyWindow]; 34558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ui 38