| OLD | NEW |
| 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 #include "base/memory/scoped_ptr.h" | 7 #include <memory> |
| 8 |
| 8 #include "components/bubble/bubble_reference.h" | 9 #include "components/bubble/bubble_reference.h" |
| 9 | 10 |
| 10 @class InfoBubbleView; | 11 @class InfoBubbleView; |
| 11 class TabStripModelObserverBridge; | 12 class TabStripModelObserverBridge; |
| 12 | 13 |
| 13 // Base class for bubble controllers. Manages a xib that contains an | 14 // Base class for bubble controllers. Manages a xib that contains an |
| 14 // InfoBubbleWindow which contains an InfoBubbleView. Contains code to close | 15 // InfoBubbleWindow which contains an InfoBubbleView. Contains code to close |
| 15 // the bubble window on clicks outside of the window, and the like. | 16 // the bubble window on clicks outside of the window, and the like. |
| 16 // To use this class: | 17 // To use this class: |
| 17 // 1. Create a new xib that contains a window. Change the window's class to | 18 // 1. Create a new xib that contains a window. Change the window's class to |
| 18 // InfoBubbleWindow. Give it a child view that autosizes to the window's full | 19 // InfoBubbleWindow. Give it a child view that autosizes to the window's full |
| 19 // size, give it class InfoBubbleView. Make the controller the window's | 20 // size, give it class InfoBubbleView. Make the controller the window's |
| 20 // delegate. | 21 // delegate. |
| 21 // 2. Create a subclass of BaseBubbleController. | 22 // 2. Create a subclass of BaseBubbleController. |
| 22 // 3. Change the xib's File Owner to your subclass. | 23 // 3. Change the xib's File Owner to your subclass. |
| 23 // 4. Hook up the File Owner's |bubble_| to the InfoBubbleView in the xib. | 24 // 4. Hook up the File Owner's |bubble_| to the InfoBubbleView in the xib. |
| 24 @interface BaseBubbleController : NSWindowController<NSWindowDelegate> { | 25 @interface BaseBubbleController : NSWindowController<NSWindowDelegate> { |
| 25 @private | 26 @private |
| 26 NSWindow* parentWindow_; // weak | 27 NSWindow* parentWindow_; // weak |
| 27 NSPoint anchor_; | 28 NSPoint anchor_; |
| 28 // Offset of the anchor point relative to the parent window's upper-left-hand | 29 // Offset of the anchor point relative to the parent window's upper-left-hand |
| 29 // corner. Used to ensure that if the parent window is resized with the bubble | 30 // corner. Used to ensure that if the parent window is resized with the bubble |
| 30 // remaining visible, the bubble continues to be anchored correctly. | 31 // remaining visible, the bubble continues to be anchored correctly. |
| 31 NSPoint anchorOffset_; | 32 NSPoint anchorOffset_; |
| 32 | 33 |
| 33 IBOutlet InfoBubbleView* bubble_; // to set arrow position | 34 IBOutlet InfoBubbleView* bubble_; // to set arrow position |
| 34 // Bridge for tab change notifications. | 35 // Bridge for tab change notifications. |
| 35 scoped_ptr<TabStripModelObserverBridge> tabStripObserverBridge_; | 36 std::unique_ptr<TabStripModelObserverBridge> tabStripObserverBridge_; |
| 36 | 37 |
| 37 // Non-nil only on 10.7+. Both weak, owned by AppKit. | 38 // Non-nil only on 10.7+. Both weak, owned by AppKit. |
| 38 // A local event tap that will dismiss the bubble when a click is delivered | 39 // A local event tap that will dismiss the bubble when a click is delivered |
| 39 // outside the window. This is needed because the window shares first | 40 // outside the window. This is needed because the window shares first |
| 40 // responder with its parent. | 41 // responder with its parent. |
| 41 id eventTap_; | 42 id eventTap_; |
| 42 // A notification observer that gets triggered when any window resigns key. | 43 // A notification observer that gets triggered when any window resigns key. |
| 43 id resignationObserver_; | 44 id resignationObserver_; |
| 44 // The controlled window should be the key window when it's opened. True by | 45 // The controlled window should be the key window when it's opened. True by |
| 45 // default. | 46 // default. |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 | 99 |
| 99 @end | 100 @end |
| 100 | 101 |
| 101 // Methods for use by subclasses. | 102 // Methods for use by subclasses. |
| 102 @interface BaseBubbleController (Protected) | 103 @interface BaseBubbleController (Protected) |
| 103 // Registers event taps *after* the window is shown so that the bubble is | 104 // Registers event taps *after* the window is shown so that the bubble is |
| 104 // dismissed when it resigns key. This only needs to be called if | 105 // dismissed when it resigns key. This only needs to be called if |
| 105 // |-showWindow:| is overriden and does not call super. Noop on OSes <10.7. | 106 // |-showWindow:| is overriden and does not call super. Noop on OSes <10.7. |
| 106 - (void)registerKeyStateEventTap; | 107 - (void)registerKeyStateEventTap; |
| 107 @end | 108 @end |
| OLD | NEW |