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

Side by Side Diff: chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm

Issue 6783015: Improvements to tab title prefix eliding as per email discussions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 months 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
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/cocoa/tabs/tab_strip_controller.h" 5 #import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h"
6 6
7 #import <QuartzCore/QuartzCore.h> 7 #import <QuartzCore/QuartzCore.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <string> 10 #include <string>
(...skipping 1086 matching lines...) Expand 10 before | Expand all | Expand 10 after
1097 scoped_nsobject<TabContentsController> contentsController( 1097 scoped_nsobject<TabContentsController> contentsController(
1098 [[TabContentsController alloc] initWithContents:contents->tab_contents() 1098 [[TabContentsController alloc] initWithContents:contents->tab_contents()
1099 delegate:self]); 1099 delegate:self]);
1100 [tabContentsArray_ insertObject:contentsController atIndex:index]; 1100 [tabContentsArray_ insertObject:contentsController atIndex:index];
1101 1101
1102 // Make a new tab and add it to the strip. Keep track of its controller. 1102 // Make a new tab and add it to the strip. Keep track of its controller.
1103 TabController* newController = [self newTab]; 1103 TabController* newController = [self newTab];
1104 [newController setMini:tabStripModel_->IsMiniTab(modelIndex)]; 1104 [newController setMini:tabStripModel_->IsMiniTab(modelIndex)];
1105 [newController setPinned:tabStripModel_->IsTabPinned(modelIndex)]; 1105 [newController setPinned:tabStripModel_->IsTabPinned(modelIndex)];
1106 [newController setApp:tabStripModel_->IsAppTab(modelIndex)]; 1106 [newController setApp:tabStripModel_->IsAppTab(modelIndex)];
1107 [newController setUrl:contents->tab_contents()->GetURL()];
1107 [tabArray_ insertObject:newController atIndex:index]; 1108 [tabArray_ insertObject:newController atIndex:index];
1108 NSView* newView = [newController view]; 1109 NSView* newView = [newController view];
1109 1110
1110 // Set the originating frame to just below the strip so that it animates 1111 // Set the originating frame to just below the strip so that it animates
1111 // upwards as it's being initially layed out. Oddly, this works while doing 1112 // upwards as it's being initially layed out. Oddly, this works while doing
1112 // something similar in |-layoutTabs| confuses the window server. 1113 // something similar in |-layoutTabs| confuses the window server.
1113 [newView setFrame:NSOffsetRect([newView frame], 1114 [newView setFrame:NSOffsetRect([newView frame],
1114 0, -[[self class] defaultTabHeight])]; 1115 0, -[[self class] defaultTabHeight])];
1115 1116
1116 [self setTabTitle:newController withContents:contents->tab_contents()]; 1117 [self setTabTitle:newController withContents:contents->tab_contents()];
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
1494 TabController* tabController = [tabArray_ objectAtIndex:index]; 1495 TabController* tabController = [tabArray_ objectAtIndex:index];
1495 DCHECK([tabController isKindOfClass:[TabController class]]); 1496 DCHECK([tabController isKindOfClass:[TabController class]]);
1496 1497
1497 // Don't do anything if the change was already picked up by the move event. 1498 // Don't do anything if the change was already picked up by the move event.
1498 if (tabStripModel_->IsMiniTab(modelIndex) == [tabController mini]) 1499 if (tabStripModel_->IsMiniTab(modelIndex) == [tabController mini])
1499 return; 1500 return;
1500 1501
1501 [tabController setMini:tabStripModel_->IsMiniTab(modelIndex)]; 1502 [tabController setMini:tabStripModel_->IsMiniTab(modelIndex)];
1502 [tabController setPinned:tabStripModel_->IsTabPinned(modelIndex)]; 1503 [tabController setPinned:tabStripModel_->IsTabPinned(modelIndex)];
1503 [tabController setApp:tabStripModel_->IsAppTab(modelIndex)]; 1504 [tabController setApp:tabStripModel_->IsAppTab(modelIndex)];
1505 [tabController setUrl:contents->tab_contents()->GetURL()];
1504 [self updateFaviconForContents:contents->tab_contents() atIndex:modelIndex]; 1506 [self updateFaviconForContents:contents->tab_contents() atIndex:modelIndex];
1505 // If the tab is being restored and it's pinned, the mini state is set after 1507 // If the tab is being restored and it's pinned, the mini state is set after
1506 // the tab has already been rendered, so re-layout the tabstrip. In all other 1508 // the tab has already been rendered, so re-layout the tabstrip. In all other
1507 // cases, the state is set before the tab is rendered so this isn't needed. 1509 // cases, the state is set before the tab is rendered so this isn't needed.
1508 [self layoutTabs]; 1510 [self layoutTabs];
1509 1511
1510 [self updateCommonTitlePrefix]; 1512 [self updateCommonTitlePrefix];
1511 } 1513 }
1512 1514
1513 - (void)setFrameOfSelectedTab:(NSRect)frame { 1515 - (void)setFrameOfSelectedTab:(NSRect)frame {
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
2036 size_t tabIndex; 2038 size_t tabIndex;
2037 size_t tabCount = [tabArray_ count]; 2039 size_t tabCount = [tabArray_ count];
2038 2040
2039 // Add all tab titles to |tabTitleInfos|. 2041 // Add all tab titles to |tabTitleInfos|.
2040 for (tabIndex = 0; tabIndex < tabCount; ++tabIndex) { 2042 for (tabIndex = 0; tabIndex < tabCount; ++tabIndex) {
2041 TabController* tabController = [tabArray_ objectAtIndex:tabIndex]; 2043 TabController* tabController = [tabArray_ objectAtIndex:tabIndex];
2042 string16 title = base::SysNSStringToUTF16([tabController title]); 2044 string16 title = base::SysNSStringToUTF16([tabController title]);
2043 if (!title.empty() && ![tabController mini]) { 2045 if (!title.empty() && ![tabController mini]) {
2044 titles.push_back(new string16(title)); 2046 titles.push_back(new string16(title));
2045 tabTitleInfos.push_back(TitlePrefixMatcher::TitleInfo( 2047 tabTitleInfos.push_back(TitlePrefixMatcher::TitleInfo(
2046 titles[titles.size() - 1], tabIndex)); 2048 titles[titles.size() - 1], [tabController url], tabIndex));
2047 } 2049 }
2048 } 2050 }
2049 2051
2050 // Calculate the prefix length. 2052 // Calculate the prefix length.
2051 TitlePrefixMatcher::CalculatePrefixLengths(&tabTitleInfos); 2053 TitlePrefixMatcher::CalculatePrefixLengths(&tabTitleInfos);
2052 2054
2053 // Update the prefix length for each tab. 2055 // Update the prefix length for each tab.
2054 for (size_t infoIndex = 0; infoIndex < tabTitleInfos.size(); ++infoIndex) { 2056 for (size_t infoIndex = 0; infoIndex < tabTitleInfos.size(); ++infoIndex) {
2055 tabIndex = tabTitleInfos[infoIndex].caller_value; 2057 tabIndex = tabTitleInfos[infoIndex].caller_value;
2056 DCHECK(tabIndex < [tabArray_ count]); 2058 DCHECK(tabIndex < [tabArray_ count]);
(...skipping 30 matching lines...) Expand all
2087 } 2089 }
2088 2090
2089 NSString* menuTitle = 2091 NSString* menuTitle =
2090 l10n_util::GetNSStringWithFixup(IDS_PROFILES_CREATE_NEW_PROFILE_OPTION); 2092 l10n_util::GetNSStringWithFixup(IDS_PROFILES_CREATE_NEW_PROFILE_OPTION);
2091 [menu addItemWithTitle:menuTitle 2093 [menu addItemWithTitle:menuTitle
2092 action:NULL 2094 action:NULL
2093 keyEquivalent:@""]; 2095 keyEquivalent:@""];
2094 } 2096 }
2095 2097
2096 @end 2098 @end
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/tabs/tab_controller.mm ('k') | chrome/browser/ui/title_prefix_matcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698