| OLD | NEW |
| 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/cocoa/tabs/tab_strip_drag_controller.h" | 5 #import "chrome/browser/ui/cocoa/tabs/tab_strip_drag_controller.h" |
| 6 | 6 |
| 7 #import "base/mac/mac_util.h" | 7 #import "base/mac/mac_util.h" |
| 8 #include "base/mac/scoped_cftyperef.h" | 8 #include "base/mac/scoped_cftyperef.h" |
| 9 #import "chrome/browser/ui/cocoa/tabs/tab_controller.h" | 9 #import "chrome/browser/ui/cocoa/tabs/tab_controller.h" |
| 10 #import "chrome/browser/ui/cocoa/tabs/tab_controller_target.h" | 10 #import "chrome/browser/ui/cocoa/tabs/tab_controller_target.h" |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 [sourceController_ detachTabToNewWindow:[draggedTab_ tabView]]; | 257 [sourceController_ detachTabToNewWindow:[draggedTab_ tabView]]; |
| 258 dragWindow_ = [draggedController_ window]; | 258 dragWindow_ = [draggedController_ window]; |
| 259 [dragWindow_ setAlphaValue:0.0]; | 259 [dragWindow_ setAlphaValue:0.0]; |
| 260 if (![sourceController_ hasLiveTabs]) { | 260 if (![sourceController_ hasLiveTabs]) { |
| 261 sourceController_ = draggedController_; | 261 sourceController_ = draggedController_; |
| 262 sourceWindow_ = dragWindow_; | 262 sourceWindow_ = dragWindow_; |
| 263 } | 263 } |
| 264 | 264 |
| 265 // Disable window animation before calling |orderFront:| when detatching | 265 // Disable window animation before calling |orderFront:| when detatching |
| 266 // to a new window. | 266 // to a new window. |
| 267 NSWindowAnimationBehavior savedAnimationBehavior = 0; | 267 NSWindowAnimationBehavior savedAnimationBehavior; |
| 268 bool didSaveAnimationBehavior = false; |
| 268 if ([dragWindow_ respondsToSelector:@selector(animationBehavior)] && | 269 if ([dragWindow_ respondsToSelector:@selector(animationBehavior)] && |
| 269 [dragWindow_ respondsToSelector:@selector(setAnimationBehavior:)]) { | 270 [dragWindow_ respondsToSelector:@selector(setAnimationBehavior:)]) { |
| 271 didSaveAnimationBehavior = true; |
| 270 savedAnimationBehavior = [dragWindow_ animationBehavior]; | 272 savedAnimationBehavior = [dragWindow_ animationBehavior]; |
| 271 [dragWindow_ setAnimationBehavior:NSWindowAnimationBehaviorNone]; | 273 [dragWindow_ setAnimationBehavior:NSWindowAnimationBehaviorNone]; |
| 272 } | 274 } |
| 273 | 275 |
| 274 // If dragging the tab only moves the current window, do not show overlay | 276 // If dragging the tab only moves the current window, do not show overlay |
| 275 // so that sheets stay on top of the window. | 277 // so that sheets stay on top of the window. |
| 276 // Bring the target window to the front and make sure it has a border. | 278 // Bring the target window to the front and make sure it has a border. |
| 277 [dragWindow_ setLevel:NSFloatingWindowLevel]; | 279 [dragWindow_ setLevel:NSFloatingWindowLevel]; |
| 278 [dragWindow_ setHasShadow:YES]; | 280 [dragWindow_ setHasShadow:YES]; |
| 279 [dragWindow_ orderFront:nil]; | 281 [dragWindow_ orderFront:nil]; |
| 280 [dragWindow_ makeMainWindow]; | 282 [dragWindow_ makeMainWindow]; |
| 281 [draggedController_ showOverlay]; | 283 [draggedController_ showOverlay]; |
| 282 dragOverlay_ = [draggedController_ overlayWindow]; | 284 dragOverlay_ = [draggedController_ overlayWindow]; |
| 283 // Force the new tab button to be hidden. We'll reset it on mouse up. | 285 // Force the new tab button to be hidden. We'll reset it on mouse up. |
| 284 [draggedController_ showNewTabButton:NO]; | 286 [draggedController_ showNewTabButton:NO]; |
| 285 tearTime_ = [NSDate timeIntervalSinceReferenceDate]; | 287 tearTime_ = [NSDate timeIntervalSinceReferenceDate]; |
| 286 tearOrigin_ = sourceWindowFrame_.origin; | 288 tearOrigin_ = sourceWindowFrame_.origin; |
| 287 | 289 |
| 288 // Restore window animation behavior | 290 // Restore window animation behavior. |
| 289 if ([dragWindow_ respondsToSelector:@selector(animationBehavior)] && | 291 if (didSaveAnimationBehavior) |
| 290 [dragWindow_ respondsToSelector:@selector(setAnimationBehavior:)]) { | |
| 291 [dragWindow_ setAnimationBehavior:savedAnimationBehavior]; | 292 [dragWindow_ setAnimationBehavior:savedAnimationBehavior]; |
| 292 } | |
| 293 } | 293 } |
| 294 | 294 |
| 295 // TODO(pinkerton): http://crbug.com/25682 demonstrates a way to get here by | 295 // TODO(pinkerton): http://crbug.com/25682 demonstrates a way to get here by |
| 296 // some weird circumstance that doesn't first go through mouseDown:. We | 296 // some weird circumstance that doesn't first go through mouseDown:. We |
| 297 // really shouldn't go any farther. | 297 // really shouldn't go any farther. |
| 298 if (!draggedController_ || !sourceController_) | 298 if (!draggedController_ || !sourceController_) |
| 299 return; | 299 return; |
| 300 | 300 |
| 301 // When the user first tears off the window, we want slide the window to | 301 // When the user first tears off the window, we want slide the window to |
| 302 // the current mouse location (to reduce the jarring appearance). We do this | 302 // the current mouse location (to reduce the jarring appearance). We do this |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 NOTREACHED(); | 549 NOTREACHED(); |
| 550 } | 550 } |
| 551 } | 551 } |
| 552 if (useCache) { | 552 if (useCache) { |
| 553 workspaceIDCache_[windowID] = workspace; | 553 workspaceIDCache_[windowID] = workspace; |
| 554 } | 554 } |
| 555 return workspace; | 555 return workspace; |
| 556 } | 556 } |
| 557 | 557 |
| 558 @end | 558 @end |
| OLD | NEW |