| 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 "chrome/browser/ui/cocoa/download/download_shelf_controller.h" | 5 #import "chrome/browser/ui/cocoa/download/download_shelf_controller.h" |
| 6 | 6 |
| 7 #include "base/mac/bundle_locations.h" | 7 #include "base/mac/bundle_locations.h" |
| 8 #include "base/mac/mac_util.h" | 8 #include "base/mac/mac_util.h" |
| 9 #include "base/strings/sys_string_conversions.h" | 9 #include "base/strings/sys_string_conversions.h" |
| 10 #include "chrome/browser/download/download_stats.h" | 10 #include "chrome/browser/download/download_stats.h" |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 RecordDownloadShelfClose( | 245 RecordDownloadShelfClose( |
| 246 [downloadItemControllers_ count], numInProgress, !isUserAction); | 246 [downloadItemControllers_ count], numInProgress, !isUserAction); |
| 247 } | 247 } |
| 248 | 248 |
| 249 // Animate the shelf out, but not in. | 249 // Animate the shelf out, but not in. |
| 250 // TODO(rohitrao): We do not animate on the way in because Cocoa is already | 250 // TODO(rohitrao): We do not animate on the way in because Cocoa is already |
| 251 // doing a lot of work to set up the download arrow animation. I've chosen to | 251 // doing a lot of work to set up the download arrow animation. I've chosen to |
| 252 // do no animation over janky animation. Find a way to make animating in | 252 // do no animation over janky animation. Find a way to make animating in |
| 253 // smoother. | 253 // smoother. |
| 254 AnimatableView* view = [self animatableView]; | 254 AnimatableView* view = [self animatableView]; |
| 255 if (show) | 255 if (show) { |
| 256 [view setHeight:maxShelfHeight_]; | 256 [view setHeight:maxShelfHeight_]; |
| 257 else | 257 [view setHidden:NO]; |
| 258 } else { |
| 258 [view animateToNewHeight:0 duration:kDownloadShelfCloseDuration]; | 259 [view animateToNewHeight:0 duration:kDownloadShelfCloseDuration]; |
| 260 } |
| 259 | 261 |
| 260 barIsVisible_ = show; | 262 barIsVisible_ = show; |
| 261 [self updateCloseButton]; | 263 [self updateCloseButton]; |
| 262 } | 264 } |
| 263 | 265 |
| 264 - (DownloadShelf*)bridge { | 266 - (DownloadShelf*)bridge { |
| 265 return bridge_.get(); | 267 return bridge_.get(); |
| 266 } | 268 } |
| 267 | 269 |
| 268 - (BOOL)isVisible { | 270 - (BOOL)isVisible { |
| 269 return barIsVisible_; | 271 return barIsVisible_; |
| 270 } | 272 } |
| 271 | 273 |
| 272 - (void)animationDidEnd:(NSAnimation*)animation { | 274 - (void)animationDidEnd:(NSAnimation*)animation { |
| 273 if (![self isVisible]) | 275 if (![self isVisible]) { |
| 274 [self closed]; | 276 [self closed]; |
| 277 [[self view] setHidden:YES]; // So that it doesn't appear in AX hierarchy. |
| 278 } |
| 275 } | 279 } |
| 276 | 280 |
| 277 - (float)height { | 281 - (float)height { |
| 278 return maxShelfHeight_; | 282 return maxShelfHeight_; |
| 279 } | 283 } |
| 280 | 284 |
| 281 // If |skipFirst| is true, the frame of the leftmost item is not set. | 285 // If |skipFirst| is true, the frame of the leftmost item is not set. |
| 282 - (void)layoutItems:(BOOL)skipFirst { | 286 - (void)layoutItems:(BOOL)skipFirst { |
| 283 CGFloat currentX = 0; | 287 CGFloat currentX = 0; |
| 284 for (DownloadItemController* itemController | 288 for (DownloadItemController* itemController |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 } | 505 } |
| 502 | 506 |
| 503 // Set the tracking off to create a new tracking area for the control. | 507 // Set the tracking off to create a new tracking area for the control. |
| 504 // When changing the bounds/frame on a HoverButton, the tracking isn't updated | 508 // When changing the bounds/frame on a HoverButton, the tracking isn't updated |
| 505 // correctly, it needs to be turned off and back on. | 509 // correctly, it needs to be turned off and back on. |
| 506 [hoverCloseButton_ setTrackingEnabled:NO]; | 510 [hoverCloseButton_ setTrackingEnabled:NO]; |
| 507 [hoverCloseButton_ setFrame:bounds]; | 511 [hoverCloseButton_ setFrame:bounds]; |
| 508 [hoverCloseButton_ setTrackingEnabled:YES]; | 512 [hoverCloseButton_ setTrackingEnabled:YES]; |
| 509 } | 513 } |
| 510 @end | 514 @end |
| OLD | NEW |