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

Side by Side Diff: chrome/browser/ui/cocoa/menu_controller.mm

Issue 11316127: Alternate NTP: Limit width of tab titles in recent tabs menu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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) 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/menu_controller.h" 5 #import "chrome/browser/ui/cocoa/menu_controller.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/sys_string_conversions.h" 8 #include "base/sys_string_conversions.h"
9 #import "chrome/browser/ui/cocoa/event_utils.h" 9 #import "chrome/browser/ui/cocoa/event_utils.h"
10 #include "ui/base/accelerators/accelerator_cocoa.h" 10 #include "ui/base/accelerators/accelerator_cocoa.h"
11 #include "ui/base/l10n/l10n_util_mac.h" 11 #include "ui/base/l10n/l10n_util_mac.h"
12 #include "ui/base/models/simple_menu_model.h" 12 #include "ui/base/models/simple_menu_model.h"
13 #include "ui/base/text/text_elider.h"
13 #include "ui/gfx/image/image.h" 14 #include "ui/gfx/image/image.h"
14 15
15 @interface MenuController (Private) 16 @interface MenuController (Private)
16 - (void)addSeparatorToMenu:(NSMenu*)menu 17 - (void)addSeparatorToMenu:(NSMenu*)menu
17 atIndex:(int)index; 18 atIndex:(int)index;
18 @end 19 @end
19 20
20 @implementation MenuController 21 @implementation MenuController
21 22
22 @synthesize model = model_; 23 @synthesize model = model_;
23 @synthesize useWithPopUpButtonCell = useWithPopUpButtonCell_; 24 @synthesize useWithPopUpButtonCell = useWithPopUpButtonCell_;
24 25
26 + (string16)elideMenuTitle:(const string16&)title
27 toWidth:(int)width {
28 NSFont* nsfont = [NSFont menuBarFontOfSize:0]; // 0 means "default"
29 gfx::Font font(base::SysNSStringToUTF8([nsfont fontName]),
30 static_cast<int>([nsfont pointSize]));
31 return ui::ElideText(title, font, width, ui::ELIDE_AT_END);
32 }
33
25 - (id)init { 34 - (id)init {
26 self = [super init]; 35 self = [super init];
27 return self; 36 return self;
28 } 37 }
29 38
30 - (id)initWithModel:(ui::MenuModel*)model 39 - (id)initWithModel:(ui::MenuModel*)model
31 useWithPopUpButtonCell:(BOOL)useWithCell { 40 useWithPopUpButtonCell:(BOOL)useWithCell {
32 if ((self = [super init])) { 41 if ((self = [super init])) {
33 model_ = model; 42 model_ = model;
34 useWithPopUpButtonCell_ = useWithCell; 43 useWithPopUpButtonCell_ = useWithCell;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 [self addItemToMenu:menu 84 [self addItemToMenu:menu
76 atIndex:index 85 atIndex:index
77 fromModel:model 86 fromModel:model
78 modelIndex:modelIndex]; 87 modelIndex:modelIndex];
79 } 88 }
80 } 89 }
81 90
82 return menu; 91 return menu;
83 } 92 }
84 93
94 - (int)maxWidthForMenuModel:(ui::MenuModel*)model
95 modelIndex:(int)modelIndex {
96 return -1;
97 }
98
85 // Adds a separator item at the given index. As the separator doesn't need 99 // Adds a separator item at the given index. As the separator doesn't need
86 // anything from the model, this method doesn't need the model index as the 100 // anything from the model, this method doesn't need the model index as the
87 // other method below does. 101 // other method below does.
88 - (void)addSeparatorToMenu:(NSMenu*)menu 102 - (void)addSeparatorToMenu:(NSMenu*)menu
89 atIndex:(int)index { 103 atIndex:(int)index {
90 NSMenuItem* separator = [NSMenuItem separatorItem]; 104 NSMenuItem* separator = [NSMenuItem separatorItem];
91 [menu insertItem:separator atIndex:index]; 105 [menu insertItem:separator atIndex:index];
92 } 106 }
93 107
94 // Adds an item or a hierarchical menu to the item at the |index|, 108 // Adds an item or a hierarchical menu to the item at the |index|,
95 // associated with the entry in the model indentifed by |modelIndex|. 109 // associated with the entry in the model indentifed by |modelIndex|.
96 - (void)addItemToMenu:(NSMenu*)menu 110 - (void)addItemToMenu:(NSMenu*)menu
97 atIndex:(NSInteger)index 111 atIndex:(NSInteger)index
98 fromModel:(ui::MenuModel*)model 112 fromModel:(ui::MenuModel*)model
99 modelIndex:(int)modelIndex { 113 modelIndex:(int)modelIndex {
100 NSString* label = 114 string16 label16 = model->GetLabelAt(modelIndex);
101 l10n_util::FixUpWindowsStyleLabel(model->GetLabelAt(modelIndex)); 115 int maxWidth = [self maxWidthForMenuModel:model modelIndex:modelIndex];
116 if (maxWidth != -1)
117 label16 = [MenuController elideMenuTitle:label16 toWidth:maxWidth];
118
119 NSString* label = l10n_util::FixUpWindowsStyleLabel(label16);
102 scoped_nsobject<NSMenuItem> item( 120 scoped_nsobject<NSMenuItem> item(
103 [[NSMenuItem alloc] initWithTitle:label 121 [[NSMenuItem alloc] initWithTitle:label
104 action:@selector(itemSelected:) 122 action:@selector(itemSelected:)
105 keyEquivalent:@""]); 123 keyEquivalent:@""]);
106 124
107 // If the menu item has an icon, set it. 125 // If the menu item has an icon, set it.
108 gfx::Image icon; 126 gfx::Image icon;
109 if (model->GetIconAt(modelIndex, &icon) && !icon.IsEmpty()) 127 if (model->GetIconAt(modelIndex, &icon) && !icon.IsEmpty())
110 [item setImage:icon.ToNSImage()]; 128 [item setImage:icon.ToNSImage()];
111 129
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 } 225 }
208 226
209 - (void)menuDidClose:(NSMenu*)menu { 227 - (void)menuDidClose:(NSMenu*)menu {
210 if (isMenuOpen_) { 228 if (isMenuOpen_) {
211 model_->MenuClosed(); 229 model_->MenuClosed();
212 isMenuOpen_ = NO; 230 isMenuOpen_ = NO;
213 } 231 }
214 } 232 }
215 233
216 @end 234 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698