OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ui/app_list/cocoa/item_drag_controller.h" | 5 #import "ui/app_list/cocoa/item_drag_controller.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #import "ui/app_list/cocoa/apps_grid_view_item.h" | 8 #import "ui/app_list/cocoa/apps_grid_view_item.h" |
9 #include "ui/base/cocoa/window_size_constants.h" | 9 #include "ui/base/cocoa/window_size_constants.h" |
10 | 10 |
(...skipping 19 matching lines...) Expand all Loading... |
30 @end | 30 @end |
31 | 31 |
32 @implementation ItemDragController | 32 @implementation ItemDragController |
33 | 33 |
34 - (id)initWithGridCellSize:(NSSize)size { | 34 - (id)initWithGridCellSize:(NSSize)size { |
35 if ((self = [super init])) { | 35 if ((self = [super init])) { |
36 NSRect frameRect = NSMakeRect(0, | 36 NSRect frameRect = NSMakeRect(0, |
37 0, | 37 0, |
38 size.width * kDraggingIconScale, | 38 size.width * kDraggingIconScale, |
39 size.height * kDraggingIconScale); | 39 size.height * kDraggingIconScale); |
40 scoped_nsobject<NSView> dragView([[NSView alloc] initWithFrame:frameRect]); | 40 base::scoped_nsobject<NSView> dragView( |
| 41 [[NSView alloc] initWithFrame:frameRect]); |
41 [dragView setWantsLayer:YES]; | 42 [dragView setWantsLayer:YES]; |
42 [dragView setHidden:YES]; | 43 [dragView setHidden:YES]; |
43 | 44 |
44 dragLayer_.reset([[CALayer layer] retain]); | 45 dragLayer_.reset([[CALayer layer] retain]); |
45 [dragLayer_ setFrame:NSRectToCGRect(frameRect)]; | 46 [dragLayer_ setFrame:NSRectToCGRect(frameRect)]; |
46 [[dragView layer] addSublayer:dragLayer_]; | 47 [[dragView layer] addSublayer:dragLayer_]; |
47 | 48 |
48 [self setView:dragView]; | 49 [self setView:dragView]; |
49 } | 50 } |
50 return self; | 51 return self; |
51 } | 52 } |
52 | 53 |
53 - (void)initiate:(AppsGridViewItem*)item | 54 - (void)initiate:(AppsGridViewItem*)item |
54 mouseDownLocation:(NSPoint)mouseDownLocation | 55 mouseDownLocation:(NSPoint)mouseDownLocation |
55 currentLocation:(NSPoint)currentLocation | 56 currentLocation:(NSPoint)currentLocation |
56 timestamp:(NSTimeInterval)eventTimestamp { | 57 timestamp:(NSTimeInterval)eventTimestamp { |
57 [self clearAnimations]; | 58 [self clearAnimations]; |
58 [item setSelected:NO]; | 59 [item setSelected:NO]; |
59 NSView* itemView = [item view]; | 60 NSView* itemView = [item view]; |
60 NSPoint pointInGridCell = [itemView convertPoint:mouseDownLocation | 61 NSPoint pointInGridCell = [itemView convertPoint:mouseDownLocation |
61 fromView:nil]; | 62 fromView:nil]; |
62 mouseOffset_ = NSMakePoint(pointInGridCell.x - NSMidX([itemView bounds]), | 63 mouseOffset_ = NSMakePoint(pointInGridCell.x - NSMidX([itemView bounds]), |
63 NSMidY([itemView bounds]) - pointInGridCell.y); | 64 NSMidY([itemView bounds]) - pointInGridCell.y); |
64 | 65 |
65 // Take a snapshot of the grid cell without the text label and hide the cell. | 66 // Take a snapshot of the grid cell without the text label and hide the cell. |
66 // Also remove the cell highlight on the image, added when it was clicked. | 67 // Also remove the cell highlight on the image, added when it was clicked. |
67 NSButton* button = [item button]; | 68 NSButton* button = [item button]; |
68 scoped_nsobject<NSString> oldTitle([[item buttonTitle] retain]); | 69 base::scoped_nsobject<NSString> oldTitle([[item buttonTitle] retain]); |
69 [item setButtonTitle:[NSString string]]; | 70 [item setButtonTitle:[NSString string]]; |
70 [[button cell] setHighlighted:NO]; | 71 [[button cell] setHighlighted:NO]; |
71 NSBitmapImageRep* imageRep = | 72 NSBitmapImageRep* imageRep = |
72 [itemView bitmapImageRepForCachingDisplayInRect:[itemView visibleRect]]; | 73 [itemView bitmapImageRepForCachingDisplayInRect:[itemView visibleRect]]; |
73 [itemView cacheDisplayInRect:[itemView visibleRect] | 74 [itemView cacheDisplayInRect:[itemView visibleRect] |
74 toBitmapImageRep:imageRep]; | 75 toBitmapImageRep:imageRep]; |
75 [button setHidden:YES]; | 76 [button setHidden:YES]; |
76 [item setButtonTitle:oldTitle]; | 77 [item setButtonTitle:oldTitle]; |
77 | 78 |
78 [dragLayer_ setContents:reinterpret_cast<id>([imageRep CGImage])]; | 79 [dragLayer_ setContents:reinterpret_cast<id>([imageRep CGImage])]; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 targetOrigin.y - NSMidY([itemView bounds]) * (kDraggingIconScale - 1), | 154 targetOrigin.y - NSMidY([itemView bounds]) * (kDraggingIconScale - 1), |
154 startRect.size.width, | 155 startRect.size.width, |
155 startRect.size.height); | 156 startRect.size.height); |
156 | 157 |
157 NSDictionary* animationDict = @{ | 158 NSDictionary* animationDict = @{ |
158 NSViewAnimationTargetKey: [self view], | 159 NSViewAnimationTargetKey: [self view], |
159 NSViewAnimationStartFrameKey: [NSValue valueWithRect:startRect], | 160 NSViewAnimationStartFrameKey: [NSValue valueWithRect:startRect], |
160 NSViewAnimationEndFrameKey: [NSValue valueWithRect:targetRect] | 161 NSViewAnimationEndFrameKey: [NSValue valueWithRect:targetRect] |
161 }; | 162 }; |
162 | 163 |
163 scoped_nsobject<NSViewAnimation> translate([[NSViewAnimation alloc] | 164 base::scoped_nsobject<NSViewAnimation> translate([[NSViewAnimation alloc] |
164 initWithViewAnimations:[NSArray arrayWithObject:animationDict]]); | 165 initWithViewAnimations:[NSArray arrayWithObject:animationDict]]); |
165 [translate setDuration:kAnimationDuration]; | 166 [translate setDuration:kAnimationDuration]; |
166 [translate startAnimation]; | 167 [translate startAnimation]; |
167 } | 168 } |
168 | 169 |
169 - (void)animateTransformFrom:(CATransform3D)fromValue | 170 - (void)animateTransformFrom:(CATransform3D)fromValue |
170 useDelegate:(BOOL)useDelegate { | 171 useDelegate:(BOOL)useDelegate { |
171 CABasicAnimation* animation = | 172 CABasicAnimation* animation = |
172 [CABasicAnimation animationWithKeyPath:@"transform"]; | 173 [CABasicAnimation animationWithKeyPath:@"transform"]; |
173 [animation setFromValue:[NSValue valueWithCATransform3D:fromValue]]; | 174 [animation setFromValue:[NSValue valueWithCATransform3D:fromValue]]; |
(...skipping 25 matching lines...) Expand all Loading... |
199 if (!finished) | 200 if (!finished) |
200 return; | 201 return; |
201 | 202 |
202 DCHECK(shrinking_); | 203 DCHECK(shrinking_); |
203 [self clearAnimations]; | 204 [self clearAnimations]; |
204 [dragLayer_ setContents:nil]; | 205 [dragLayer_ setContents:nil]; |
205 [[self view] setHidden:YES]; | 206 [[self view] setHidden:YES]; |
206 } | 207 } |
207 | 208 |
208 @end | 209 @end |
OLD | NEW |