Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(737)

Side by Side Diff: chrome/browser/ui/cocoa/base_bubble_controller.h

Issue 9732012: [Mac] Have BaseBubbleController dismiss bubbles when they would lose key state on 10.8. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/base_bubble_controller.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import <Cocoa/Cocoa.h> 5 #import <Cocoa/Cocoa.h>
6 6
7 #import "base/mac/cocoa_protocols.h" 7 #import "base/mac/cocoa_protocols.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 9
10 namespace BaseBubbleControllerInternal { 10 namespace BaseBubbleControllerInternal {
(...skipping 13 matching lines...) Expand all
24 // 2. Create a subclass of BaseBubbleController. 24 // 2. Create a subclass of BaseBubbleController.
25 // 3. Change the xib's File Owner to your subclass. 25 // 3. Change the xib's File Owner to your subclass.
26 // 4. Hook up the File Owner's |bubble_| to the InfoBubbleView in the xib. 26 // 4. Hook up the File Owner's |bubble_| to the InfoBubbleView in the xib.
27 @interface BaseBubbleController : NSWindowController<NSWindowDelegate> { 27 @interface BaseBubbleController : NSWindowController<NSWindowDelegate> {
28 @private 28 @private
29 NSWindow* parentWindow_; // weak 29 NSWindow* parentWindow_; // weak
30 NSPoint anchor_; 30 NSPoint anchor_;
31 IBOutlet InfoBubbleView* bubble_; // to set arrow position 31 IBOutlet InfoBubbleView* bubble_; // to set arrow position
32 // Bridge that listens for notifications. 32 // Bridge that listens for notifications.
33 scoped_ptr<BaseBubbleControllerInternal::Bridge> baseBridge_; 33 scoped_ptr<BaseBubbleControllerInternal::Bridge> baseBridge_;
34
35 // Non-nil only on 10.7+. Both weak, owned by AppKit.
36 // A local event tap that will dismiss the bubble when a click is delivered
37 // outside the window. This is needed because the window shares first
38 // responder with its parent.
39 id eventTap_;
40 // A notification observer that gets triggered when any window resigns key.
41 id resignationObserver_;
34 } 42 }
35 43
36 @property(nonatomic, readonly) NSWindow* parentWindow; 44 @property(nonatomic, readonly) NSWindow* parentWindow;
37 // The point in base screen coordinates at which the bubble should open and the 45 // The point in base screen coordinates at which the bubble should open and the
38 // arrow tip points. 46 // arrow tip points.
39 @property(nonatomic, assign) NSPoint anchorPoint; 47 @property(nonatomic, assign) NSPoint anchorPoint;
40 @property(nonatomic, readonly) InfoBubbleView* bubble; 48 @property(nonatomic, readonly) InfoBubbleView* bubble;
41 49
42 // Creates a bubble. |nibPath| is just the basename, e.g. @"FirstRunBubble". 50 // Creates a bubble. |nibPath| is just the basename, e.g. @"FirstRunBubble".
43 // |anchoredAt| is in screen space. You need to call -showWindow: to make the 51 // |anchoredAt| is in screen space. You need to call -showWindow: to make the
(...skipping 20 matching lines...) Expand all
64 // contentView with an instance of InfoBubbleView. 72 // contentView with an instance of InfoBubbleView.
65 - (id)initWithWindow:(NSWindow*)theWindow 73 - (id)initWithWindow:(NSWindow*)theWindow
66 parentWindow:(NSWindow*)parentWindow 74 parentWindow:(NSWindow*)parentWindow
67 anchoredAt:(NSPoint)anchoredAt; 75 anchoredAt:(NSPoint)anchoredAt;
68 76
69 // Creates an autoreleased separator view with a given frame. The height of the 77 // Creates an autoreleased separator view with a given frame. The height of the
70 // frame is ignored. 78 // frame is ignored.
71 - (NSBox*)separatorWithFrame:(NSRect)frame; 79 - (NSBox*)separatorWithFrame:(NSRect)frame;
72 80
73 @end 81 @end
82
83 // Methods for use by subclasses.
84 @interface BaseBubbleController (Protected)
85 // Registers event taps *after* the window is shown so that the bubble is
86 // dismissed when it resigns key. This only needs to be called if
87 // |-showWindow:| is overriden and does not call super. Noop on OSes <10.7.
88 - (void)registerKeyStateEventTap;
89 @end
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/base_bubble_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698