| Index: chrome/browser/cocoa/focus_tracker.mm
|
| ===================================================================
|
| --- chrome/browser/cocoa/focus_tracker.mm (revision 0)
|
| +++ chrome/browser/cocoa/focus_tracker.mm (revision 0)
|
| @@ -0,0 +1,46 @@
|
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#import "chrome/browser/cocoa/focus_tracker.h"
|
| +
|
| +#include "base/logging.h"
|
| +
|
| +@implementation FocusTracker
|
| +
|
| +- (id)initWithWindow:(NSWindow*)window {
|
| + if ((self = [super init])) {
|
| + NSResponder* current_focus = [window firstResponder];
|
| +
|
| + // Special case NSTextViews, because they are removed from the
|
| + // view hierarchy when their text field does not have focus. If
|
| + // an NSTextView is the current first responder, save a pointer to
|
| + // its NSTextField delegate instead.
|
| + if ([current_focus isKindOfClass:[NSTextView class]]) {
|
| + id delegate = [(NSTextView*)current_focus delegate];
|
| + if ([delegate isKindOfClass:[NSTextField class]])
|
| + current_focus = delegate;
|
| + else
|
| + current_focus = nil;
|
| + }
|
| +
|
| + if ([current_focus isKindOfClass:[NSView class]]) {
|
| + NSView* current_focus_view = (NSView*)current_focus;
|
| + focusedView_.reset([current_focus_view retain]);
|
| + }
|
| + }
|
| +
|
| + return self;
|
| +}
|
| +
|
| +- (BOOL)restoreFocusInWindow:(NSWindow*)window {
|
| + if (!focusedView_.get())
|
| + return NO;
|
| +
|
| + if ([focusedView_ window] && [focusedView_ window] == window)
|
| + return [window makeFirstResponder:focusedView_.get()];
|
| +
|
| + return NO;
|
| +}
|
| +
|
| +@end
|
|
|
| Property changes on: chrome/browser/cocoa/focus_tracker.mm
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|