diff options
Diffstat (limited to 'chrome/browser/ui/cocoa/menu_controller.mm')
-rw-r--r-- | chrome/browser/ui/cocoa/menu_controller.mm | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/chrome/browser/ui/cocoa/menu_controller.mm b/chrome/browser/ui/cocoa/menu_controller.mm index 9563ee2..99c4c14 100644 --- a/chrome/browser/ui/cocoa/menu_controller.mm +++ b/chrome/browser/ui/cocoa/menu_controller.mm @@ -11,6 +11,7 @@ #include "ui/base/accelerators/platform_accelerator_cocoa.h" #include "ui/base/l10n/l10n_util_mac.h" #include "ui/base/models/simple_menu_model.h" +#include "ui/base/text/text_elider.h" #include "ui/gfx/image/image.h" @interface MenuController (Private) @@ -23,6 +24,14 @@ @synthesize model = model_; @synthesize useWithPopUpButtonCell = useWithPopUpButtonCell_; ++ (string16)elideMenuTitle:(const string16&)title + toWidth:(int)width { + NSFont* nsfont = [NSFont menuBarFontOfSize:0]; // 0 means "default" + gfx::Font font(base::SysNSStringToUTF8([nsfont fontName]), + static_cast<int>([nsfont pointSize])); + return ui::ElideText(title, font, width, ui::ELIDE_AT_END); +} + - (id)init { self = [super init]; return self; @@ -83,6 +92,11 @@ return menu; } +- (int)maxWidthForMenuModel:(ui::MenuModel*)model + modelIndex:(int)modelIndex { + return -1; +} + // Adds a separator item at the given index. As the separator doesn't need // anything from the model, this method doesn't need the model index as the // other method below does. @@ -98,8 +112,12 @@ atIndex:(NSInteger)index fromModel:(ui::MenuModel*)model modelIndex:(int)modelIndex { - NSString* label = - l10n_util::FixUpWindowsStyleLabel(model->GetLabelAt(modelIndex)); + string16 label16 = model->GetLabelAt(modelIndex); + int maxWidth = [self maxWidthForMenuModel:model modelIndex:modelIndex]; + if (maxWidth != -1) + label16 = [MenuController elideMenuTitle:label16 toWidth:maxWidth]; + + NSString* label = l10n_util::FixUpWindowsStyleLabel(label16); scoped_nsobject<NSMenuItem> item( [[NSMenuItem alloc] initWithTitle:label action:@selector(itemSelected:) |