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

Side by Side Diff: chrome/browser/ui/cocoa/tabs/tab_window_controller.h

Issue 379293003: mac: Fix tab dragging visual bug in Yosemite. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Set the frame of the chromeContentView when adding it as a subview. Created 6 years, 5 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
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 #ifndef CHROME_BROWSER_UI_COCOA_TABS_TAB_WINDOW_CONTROLLER_H_ 5 #ifndef CHROME_BROWSER_UI_COCOA_TABS_TAB_WINDOW_CONTROLLER_H_
6 #define CHROME_BROWSER_UI_COCOA_TABS_TAB_WINDOW_CONTROLLER_H_ 6 #define CHROME_BROWSER_UI_COCOA_TABS_TAB_WINDOW_CONTROLLER_H_
7 7
8 // A class acting as the Objective-C window controller for a window that has 8 // A class acting as the Objective-C window controller for a window that has
9 // tabs which can be dragged around. Tabs can be re-arranged within the same 9 // tabs which can be dragged around. Tabs can be re-arranged within the same
10 // window or dragged into other TabWindowController windows. This class doesn't 10 // window or dragged into other TabWindowController windows. This class doesn't
11 // know anything about the actual tab implementation or model, as that is fairly 11 // know anything about the actual tab implementation or model, as that is fairly
12 // application-specific. It only provides an API to be overridden by subclasses 12 // application-specific. It only provides an API to be overridden by subclasses
13 // to fill in the details. 13 // to fill in the details.
14 14
15 #import <Cocoa/Cocoa.h> 15 #import <Cocoa/Cocoa.h>
16 16
17 #include "base/mac/scoped_nsobject.h" 17 #include "base/mac/scoped_nsobject.h"
18 18
19 @class FastResizeView; 19 @class FastResizeView;
20 @class FocusTracker; 20 @class FocusTracker;
21 @class TabStripView; 21 @class TabStripView;
22 @class TabView; 22 @class TabView;
23 23
24 @interface TabWindowController : NSWindowController<NSWindowDelegate> { 24 @interface TabWindowController : NSWindowController<NSWindowDelegate> {
25 @private 25 @private
26 // Wrapper view around web content, and the developer tools view.
26 base::scoped_nsobject<FastResizeView> tabContentArea_; 27 base::scoped_nsobject<FastResizeView> tabContentArea_;
28
29 // The tab strip overlaps the titlebar of the window.
27 base::scoped_nsobject<TabStripView> tabStripView_; 30 base::scoped_nsobject<TabStripView> tabStripView_;
28 31
32 // In OSX 10.10+, all views must be added to the NSWindow's contentView. Some
33 // views (like the tab strip and the profile icon) are placed on top of the
34 // title bar and require special treatment. All other views should be added
35 // as subviews of chromeContentView_. This allows tab dragging and fullscreen
36 // logic to easily move the views that don't need special treatment.
37 base::scoped_nsobject<NSView> chromeContentView_;
38
29 // The child window used during dragging to achieve the opacity tricks. 39 // The child window used during dragging to achieve the opacity tricks.
30 NSWindow* overlayWindow_; 40 NSWindow* overlayWindow_;
31 41
32 // The contentView of the original window that is moved (for the duration 42 // The contentView of the original window that is moved (for the duration
33 // of the drag) to the |overlayWindow_|. 43 // of the drag) to the |overlayWindow_|.
34 NSView* originalContentView_; // weak 44 NSView* originalContentView_; // weak
35 45
36 base::scoped_nsobject<FocusTracker> focusBeforeOverlay_; 46 base::scoped_nsobject<FocusTracker> focusBeforeOverlay_;
37 BOOL closeDeferred_; // If YES, call performClose: in removeOverlay:. 47 BOOL closeDeferred_; // If YES, call performClose: in removeOverlay:.
38 } 48 }
39 @property(readonly, nonatomic) TabStripView* tabStripView; 49 @property(readonly, nonatomic) TabStripView* tabStripView;
40 @property(readonly, nonatomic) FastResizeView* tabContentArea; 50 @property(readonly, nonatomic) FastResizeView* tabContentArea;
51 @property(readonly, nonatomic) NSView* chromeContentView;
41 52
42 // This is the designated initializer for this class. 53 // This is the designated initializer for this class.
43 - (id)initTabWindowControllerWithTabStrip:(BOOL)hasTabStrip; 54 - (id)initTabWindowControllerWithTabStrip:(BOOL)hasTabStrip;
44 55
45 // Used during tab dragging to turn on/off the overlay window when a tab 56 // Used during tab dragging to turn on/off the overlay window when a tab
46 // is torn off. If -deferPerformClose (below) is used, -removeOverlay will 57 // is torn off. If -deferPerformClose (below) is used, -removeOverlay will
47 // cause the controller to be autoreleased before returning. 58 // cause the controller to be autoreleased before returning.
48 - (void)showOverlay; 59 - (void)showOverlay;
49 - (void)removeOverlay; 60 - (void)removeOverlay;
50 - (NSWindow*)overlayWindow; 61 - (NSWindow*)overlayWindow;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 // Tells the tab strip to forget about this tab in preparation for it being 158 // Tells the tab strip to forget about this tab in preparation for it being
148 // put into a different tab strip, such as during a drop on another window. 159 // put into a different tab strip, such as during a drop on another window.
149 - (void)detachTabView:(NSView*)view; 160 - (void)detachTabView:(NSView*)view;
150 161
151 // Called when the size of the window content area has changed. Override to 162 // Called when the size of the window content area has changed. Override to
152 // position specific views. Base class implementation does nothing. 163 // position specific views. Base class implementation does nothing.
153 - (void)layoutSubviews; 164 - (void)layoutSubviews;
154 @end 165 @end
155 166
156 #endif // CHROME_BROWSER_UI_COCOA_TABS_TAB_WINDOW_CONTROLLER_H_ 167 #endif // CHROME_BROWSER_UI_COCOA_TABS_TAB_WINDOW_CONTROLLER_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/browser_window_controller_unittest.mm ('k') | chrome/browser/ui/cocoa/tabs/tab_window_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698