| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/cocoa/tab_strip_controller.h" | 5 #import "chrome/browser/cocoa/tab_strip_controller.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/sys_string_conversions.h" | 8 #include "base/sys_string_conversions.h" |
| 9 #include "chrome/app/chrome_dll_resource.h" | 9 #include "chrome/app/chrome_dll_resource.h" |
| 10 #include "chrome/browser/browser.h" | 10 #include "chrome/browser/browser.h" |
| 11 #include "chrome/browser/metrics/user_metrics.h" | 11 #include "chrome/browser/metrics/user_metrics.h" |
| 12 #include "chrome/browser/profile.h" | 12 #include "chrome/browser/profile.h" |
| 13 #import "chrome/browser/cocoa/tab_strip_view.h" | 13 #import "chrome/browser/cocoa/tab_strip_view.h" |
| 14 #import "chrome/browser/cocoa/tab_cell.h" | 14 #import "chrome/browser/cocoa/tab_cell.h" |
| 15 #import "chrome/browser/cocoa/tab_contents_controller.h" | 15 #import "chrome/browser/cocoa/tab_contents_controller.h" |
| 16 #import "chrome/browser/cocoa/tab_controller.h" | 16 #import "chrome/browser/cocoa/tab_controller.h" |
| 17 #import "chrome/browser/cocoa/tab_strip_model_observer_bridge.h" | 17 #import "chrome/browser/cocoa/tab_strip_model_observer_bridge.h" |
| 18 #import "chrome/browser/cocoa/tab_view.h" | 18 #import "chrome/browser/cocoa/tab_view.h" |
| 19 #import "chrome/browser/cocoa/throbber_view.h" | 19 #import "chrome/browser/cocoa/throbber_view.h" |
| 20 #include "chrome/browser/tab_contents/tab_contents.h" | 20 #include "chrome/browser/tab_contents/tab_contents.h" |
| 21 #include "chrome/browser/tab_contents/tab_contents_view.h" | 21 #include "chrome/browser/tab_contents/tab_contents_view.h" |
| 22 #include "chrome/browser/tabs/tab_strip_model.h" | 22 #include "chrome/browser/tabs/tab_strip_model.h" |
| 23 #include "grit/generated_resources.h" | 23 #include "grit/generated_resources.h" |
| 24 | 24 |
| 25 NSString* const kTabStripNumberOfTabsChanged = @"kTabStripNumberOfTabsChanged"; |
| 26 |
| 25 // A simple view class that prevents the windowserver from dragging the | 27 // A simple view class that prevents the windowserver from dragging the |
| 26 // area behind tabs. Sometimes core animation confuses it. | 28 // area behind tabs. Sometimes core animation confuses it. |
| 27 @interface TabStripControllerDragBlockingView : NSView | 29 @interface TabStripControllerDragBlockingView : NSView |
| 28 @end | 30 @end |
| 29 @implementation TabStripControllerDragBlockingView | 31 @implementation TabStripControllerDragBlockingView |
| 30 - (BOOL)mouseDownCanMoveWindow {return NO;} | 32 - (BOOL)mouseDownCanMoveWindow {return NO;} |
| 31 - (void)drawRect:(NSRect)rect {} | 33 - (void)drawRect:(NSRect)rect {} |
| 32 @end | 34 @end |
| 33 | 35 |
| 34 @implementation TabStripController | 36 @implementation TabStripController |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 positioned:inForeground ? NSWindowAbove : NSWindowBelow | 332 positioned:inForeground ? NSWindowAbove : NSWindowBelow |
| 331 relativeTo:nil]; | 333 relativeTo:nil]; |
| 332 | 334 |
| 333 [self setTabTitle:newController withContents:contents]; | 335 [self setTabTitle:newController withContents:contents]; |
| 334 | 336 |
| 335 // We don't need to call |-layoutTabs| if the tab will be in the foreground | 337 // We don't need to call |-layoutTabs| if the tab will be in the foreground |
| 336 // because it will get called when the new tab is selected by the tab model. | 338 // because it will get called when the new tab is selected by the tab model. |
| 337 if (!inForeground) { | 339 if (!inForeground) { |
| 338 [self layoutTabs]; | 340 [self layoutTabs]; |
| 339 } | 341 } |
| 342 |
| 343 // Send a broadcast that the number of tabs have changed. |
| 344 [[NSNotificationCenter defaultCenter] |
| 345 postNotificationName:kTabStripNumberOfTabsChanged |
| 346 object:self]; |
| 340 } | 347 } |
| 341 | 348 |
| 342 // Called when a notification is received from the model to select a particular | 349 // Called when a notification is received from the model to select a particular |
| 343 // tab. Swaps in the toolbar and content area associated with |newContents|. | 350 // tab. Swaps in the toolbar and content area associated with |newContents|. |
| 344 - (void)selectTabWithContents:(TabContents*)newContents | 351 - (void)selectTabWithContents:(TabContents*)newContents |
| 345 previousContents:(TabContents*)oldContents | 352 previousContents:(TabContents*)oldContents |
| 346 atIndex:(NSInteger)index | 353 atIndex:(NSInteger)index |
| 347 userGesture:(bool)wasUserGesture { | 354 userGesture:(bool)wasUserGesture { |
| 348 // De-select all other tabs and select the new tab. | 355 // De-select all other tabs and select the new tab. |
| 349 int i = 0; | 356 int i = 0; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 // Remove the |index|th view from the tab strip | 397 // Remove the |index|th view from the tab strip |
| 391 NSView* tab = [self viewAtIndex:index]; | 398 NSView* tab = [self viewAtIndex:index]; |
| 392 [tab removeFromSuperview]; | 399 [tab removeFromSuperview]; |
| 393 | 400 |
| 394 NSValue *identifier = [NSValue valueWithPointer:tab]; | 401 NSValue *identifier = [NSValue valueWithPointer:tab]; |
| 395 [targetFrames_ removeObjectForKey:identifier]; | 402 [targetFrames_ removeObjectForKey:identifier]; |
| 396 | 403 |
| 397 // Once we're totally done with the tab, delete its controller | 404 // Once we're totally done with the tab, delete its controller |
| 398 [tabArray_ removeObjectAtIndex:index]; | 405 [tabArray_ removeObjectAtIndex:index]; |
| 399 | 406 |
| 407 // Send a broadcast that the number of tabs have changed. |
| 408 [[NSNotificationCenter defaultCenter] |
| 409 postNotificationName:kTabStripNumberOfTabsChanged |
| 410 object:self]; |
| 411 |
| 400 [self layoutTabs]; | 412 [self layoutTabs]; |
| 401 } | 413 } |
| 402 | 414 |
| 403 // A helper routine for creating an NSImageView to hold the fav icon for | 415 // A helper routine for creating an NSImageView to hold the fav icon for |
| 404 // |contents|. | 416 // |contents|. |
| 405 // TODO(pinkerton): fill in with code to use the real favicon, not the default | 417 // TODO(pinkerton): fill in with code to use the real favicon, not the default |
| 406 // for all cases. | 418 // for all cases. |
| 407 - (NSImageView*)favIconImageViewForContents:(TabContents*)contents { | 419 - (NSImageView*)favIconImageViewForContents:(TabContents*)contents { |
| 408 NSRect iconFrame = NSMakeRect(0, 0, 16, 16); | 420 NSRect iconFrame = NSMakeRect(0, 0, 16, 16); |
| 409 NSImageView* view = [[[NSImageView alloc] initWithFrame:iconFrame] | 421 NSImageView* view = [[[NSImageView alloc] initWithFrame:iconFrame] |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 selectedIndex = 0; | 554 selectedIndex = 0; |
| 543 } | 555 } |
| 544 TabContentsController* selectedController = | 556 TabContentsController* selectedController = |
| 545 [tabContentsArray_ objectAtIndex:selectedIndex]; | 557 [tabContentsArray_ objectAtIndex:selectedIndex]; |
| 546 if (!selectedController) | 558 if (!selectedController) |
| 547 return NSZeroRect; | 559 return NSZeroRect; |
| 548 return [selectedController growBoxRect]; | 560 return [selectedController growBoxRect]; |
| 549 } | 561 } |
| 550 | 562 |
| 551 @end | 563 @end |
| OLD | NEW |