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

Side by Side Diff: chrome/browser/ui/panels/panel_titlebar_view_cocoa.mm

Issue 8773030: Implement 3-stage minimize animation for Panels on OSX. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: feedback Created 9 years 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/panels/panel_window_controller_cocoa.h » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/ui/panels/panel_titlebar_view_cocoa.h" 5 #import "chrome/browser/ui/panels/panel_titlebar_view_cocoa.h"
6 6
7 #include <Carbon/Carbon.h> // kVK_Escape 7 #include <Carbon/Carbon.h> // kVK_Escape
8 #import <Cocoa/Cocoa.h> 8 #import <Cocoa/Cocoa.h>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 NSImage* image = gfx::GetCachedImageWithName(@"balloon_wrench.pdf"); 205 NSImage* image = gfx::GetCachedImageWithName(@"balloon_wrench.pdf");
206 [settingsButton_ setDefaultImage:image]; 206 [settingsButton_ setDefaultImage:image];
207 [settingsButton_ setDefaultOpacity:0.6]; 207 [settingsButton_ setDefaultOpacity:0.6];
208 [settingsButton_ setHoverImage:image]; 208 [settingsButton_ setHoverImage:image];
209 [settingsButton_ setHoverOpacity:0.9]; 209 [settingsButton_ setHoverOpacity:0.9];
210 [settingsButton_ setPressedImage:image]; 210 [settingsButton_ setPressedImage:image];
211 [settingsButton_ setPressedOpacity:1.0]; 211 [settingsButton_ setPressedOpacity:1.0];
212 [[settingsButton_ cell] setHighlightsBy:NSNoCellMask]; 212 [[settingsButton_ cell] setHighlightsBy:NSNoCellMask];
213 [self checkMouseAndUpdateSettingsButtonVisibility]; 213 [self checkMouseAndUpdateSettingsButtonVisibility];
214 214
215 // Update layout of controls in the titlebar.
216 [self updateCloseButtonLayout]; 215 [self updateCloseButtonLayout];
217 216
218 // Set autoresizing behavior: glued to edges on left, top and right. 217 // Set autoresizing behavior: glued to edges on left, top and right.
219 [self setAutoresizingMask:(NSViewMinYMargin | NSViewWidthSizable)]; 218 [self setAutoresizingMask:(NSViewMinYMargin | NSViewWidthSizable)];
220 219
221 [[NSNotificationCenter defaultCenter] 220 [[NSNotificationCenter defaultCenter]
222 addObserver:self 221 addObserver:self
223 selector:@selector(didChangeTheme:) 222 selector:@selector(didChangeTheme:)
224 name:kBrowserThemeDidChangeNotification 223 name:kBrowserThemeDidChangeNotification
225 object:nil]; 224 object:nil];
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 256
258 - (NSView*)icon { 257 - (NSView*)icon {
259 return icon_; 258 return icon_;
260 } 259 }
261 260
262 - (void)updateCloseButtonLayout { 261 - (void)updateCloseButtonLayout {
263 NSRect buttonFrame = [closeButton_ frame]; 262 NSRect buttonFrame = [closeButton_ frame];
264 NSRect bounds = [self bounds]; 263 NSRect bounds = [self bounds];
265 264
266 buttonFrame.origin.x = kButtonPadding; 265 buttonFrame.origin.x = kButtonPadding;
267 buttonFrame.origin.y = (NSHeight(bounds) - NSHeight(buttonFrame)) / 2; 266 // Lower Close Button's frame 1 px to avoid it 'peeking' in MINIMIZED mode.
267 buttonFrame.origin.y = (NSHeight(bounds) - NSHeight(buttonFrame)) / 2 - 1;
268 [closeButton_ setFrame:buttonFrame]; 268 [closeButton_ setFrame:buttonFrame];
269 269 if (!closeButtonTrackingArea_.get()) {
270 DCHECK(!closeButtonTrackingArea_.get()); 270 closeButtonTrackingArea_.reset(
271 closeButtonTrackingArea_.reset( 271 [[CrTrackingArea alloc] initWithRect:[closeButton_ bounds]
272 [[CrTrackingArea alloc] initWithRect:buttonFrame 272 options:(NSTrackingMouseEnteredAndExited |
273 options:(NSTrackingMouseEnteredAndExited | 273 NSTrackingActiveAlways)
274 NSTrackingActiveAlways) 274 proxiedOwner:self
275 proxiedOwner:self 275 userInfo:nil]);
276 userInfo:nil]); 276 NSWindow* panelWindow = [self window];
277 NSWindow* panelWindow = [self window]; 277 [closeButtonTrackingArea_.get() clearOwnerWhenWindowWillClose:panelWindow];
278 [closeButtonTrackingArea_.get() clearOwnerWhenWindowWillClose:panelWindow]; 278 [closeButton_ addTrackingArea:closeButtonTrackingArea_.get()];
279 [self addTrackingArea:closeButtonTrackingArea_.get()]; 279 }
280 } 280 }
281 281
282 - (void)updateIconAndTitleLayout { 282 - (void)updateIconAndTitleLayout {
283 NSRect closeButtonFrame = [closeButton_ frame]; 283 NSRect closeButtonFrame = [closeButton_ frame];
284 NSRect iconFrame = [icon_ frame]; 284 NSRect iconFrame = [icon_ frame];
285 [title_ sizeToFit]; 285 [title_ sizeToFit];
286 NSRect titleFrame = [title_ frame]; 286 NSRect titleFrame = [title_ frame];
287 NSRect settingsButtonFrame = [settingsButtonWrapper_ frame]; 287 NSRect settingsButtonFrame = [settingsButtonWrapper_ frame];
288 NSRect bounds = [self bounds]; 288 NSRect bounds = [self bounds];
289 289
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 } 497 }
498 498
499 - (void)checkMouseAndUpdateSettingsButtonVisibility { 499 - (void)checkMouseAndUpdateSettingsButtonVisibility {
500 BOOL mouseOverWindow = NSPointInRect([NSEvent mouseLocation], 500 BOOL mouseOverWindow = NSPointInRect([NSEvent mouseLocation],
501 [[self window] frame]); 501 [[self window] frame]);
502 [self updateSettingsButtonVisibility:mouseOverWindow]; 502 [self updateSettingsButtonVisibility:mouseOverWindow];
503 } 503 }
504 504
505 @end 505 @end
506 506
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/panels/panel_window_controller_cocoa.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698