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

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

Issue 3461016: [Mac] Convert the page info window to a bubble. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Address nits Created 10 years, 2 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
« no previous file with comments | « no previous file | chrome/browser/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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/cocoa_protocols_mac.h" 7 #import "base/cocoa_protocols_mac.h"
8 8
9 @class InfoBubbleView; 9 @class InfoBubbleView;
10 10
11 // Base class for bubble controllers. Manages a xib that contains an 11 // Base class for bubble controllers. Manages a xib that contains an
12 // InfoBubbleWindow which contains an InfoBubbleView. Contains code to close 12 // InfoBubbleWindow which contains an InfoBubbleView. Contains code to close
13 // the bubble window on clicks outside of the window, and the like. 13 // the bubble window on clicks outside of the window, and the like.
14 // To use this class: 14 // To use this class:
15 // 1. Create a new xib that contains a window. Change the window's class to 15 // 1. Create a new xib that contains a window. Change the window's class to
16 // InfoBubbleWindow. Give it a child view that autosizes to the window's full 16 // InfoBubbleWindow. Give it a child view that autosizes to the window's full
17 // size, give it class InfoBubbleView. Make the controller the window's 17 // size, give it class InfoBubbleView. Make the controller the window's
18 // delegate. 18 // delegate.
19 // 2. Create a subclass of BaseBubbleController. 19 // 2. Create a subclass of BaseBubbleController.
20 // 3. Change the xib's File Owner to your subclass. 20 // 3. Change the xib's File Owner to your subclass.
21 // 4. Hook up the File Owner's |bubble_| to the InfoBubbleView in the xib. 21 // 4. Hook up the File Owner's |bubble_| to the InfoBubbleView in the xib.
22 @interface BaseBubbleController : NSWindowController<NSWindowDelegate> { 22 @interface BaseBubbleController : NSWindowController<NSWindowDelegate> {
23 @private 23 @private
24 NSWindow* parentWindow_; // weak 24 NSWindow* parentWindow_; // weak
25 NSPoint anchor_; 25 NSPoint anchor_;
26 IBOutlet InfoBubbleView* bubble_; // to set arrow position 26 IBOutlet InfoBubbleView* bubble_; // to set arrow position
27 } 27 }
28 28
29 @property (nonatomic, readonly) NSWindow* parentWindow;
30 @property (nonatomic, readonly) InfoBubbleView* bubble;
31
29 // Creates a bubble. |nibPath| is just the basename, e.g. @"FirstRunBubble". 32 // Creates a bubble. |nibPath| is just the basename, e.g. @"FirstRunBubble".
30 // |anchoredAt| is in screen space. You need to call -showWindow: to make the 33 // |anchoredAt| is in screen space. You need to call -showWindow: to make the
31 // bubble visible. It will autorelease itself when the user dismisses the 34 // bubble visible. It will autorelease itself when the user dismisses the
32 // bubble. 35 // bubble.
33 // This is the designated initializer. 36 // This is the designated initializer.
34 - (id)initWithWindowNibPath:(NSString*)nibPath 37 - (id)initWithWindowNibPath:(NSString*)nibPath
35 parentWindow:(NSWindow*)parentWindow 38 parentWindow:(NSWindow*)parentWindow
36 anchoredAt:(NSPoint)anchoredAt; 39 anchoredAt:(NSPoint)anchoredAt;
37 40
38 41
39 // Creates a bubble. |nibPath| is just the basename, e.g. @"FirstRunBubble". 42 // Creates a bubble. |nibPath| is just the basename, e.g. @"FirstRunBubble".
40 // |view| must be in a window. The bubble will point at |offset| relative to 43 // |view| must be in a window. The bubble will point at |offset| relative to
41 // |view|'s lower left corner. You need to call -showWindow: to make the 44 // |view|'s lower left corner. You need to call -showWindow: to make the
42 // bubble visible. It will autorelease itself when the user dismisses the 45 // bubble visible. It will autorelease itself when the user dismisses the
43 // bubble. 46 // bubble.
44 - (id)initWithWindowNibPath:(NSString*)nibPath 47 - (id)initWithWindowNibPath:(NSString*)nibPath
45 relativeToView:(NSView*)view 48 relativeToView:(NSView*)view
46 offset:(NSPoint)offset; 49 offset:(NSPoint)offset;
47 50
48 51
49 @property (nonatomic, readonly) InfoBubbleView* bubble; 52 // For subclasses that do not load from a XIB, this will simply set the instance
53 // variables appropriately. This will also replace the |-[self window]|'s
54 // contentView with an instance of InfoBubbleView.
55 - (id)initWithWindow:(NSWindow*)theWindow
56 parentWindow:(NSWindow*)parentWindow
57 anchoredAt:(NSPoint)anchoredAt;
50 58
51 @end 59 @end
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/cocoa/base_bubble_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698