cocoa: Enable modifying initialized menu

This commit is contained in:
Cheng Zhao 2014-11-16 20:24:29 +08:00
parent 66bbf00b7a
commit 49ac363eef
2 changed files with 19 additions and 0 deletions

View file

@ -39,6 +39,9 @@ class MenuModel;
// to the contents of the model after calling this will not be noticed. // to the contents of the model after calling this will not be noticed.
- (id)initWithModel:(ui::MenuModel*)model; - (id)initWithModel:(ui::MenuModel*)model;
// Populate current NSMenu with |model|.
- (void)populateWithModel:(ui::MenuModel*)model;
// Programmatically close the constructed menu. // Programmatically close the constructed menu.
- (void)cancel; - (void)cancel;

View file

@ -93,6 +93,22 @@ int EventFlagsFromNSEvent(NSEvent* event) {
[super dealloc]; [super dealloc];
} }
- (void)populateWithModel:(ui::MenuModel*)model {
if (!menu_)
return;
model_ = model;
[menu_ removeAllItems];
const int count = model->GetItemCount();
for (int index = 0; index < count; index++) {
if (model->GetTypeAt(index) == ui::MenuModel::TYPE_SEPARATOR)
[self addSeparatorToMenu:menu_ atIndex:index];
else
[self addItemToMenu:menu_ atIndex:index fromModel:model];
}
}
- (void)cancel { - (void)cancel {
if (isMenuOpen_) { if (isMenuOpen_) {
[menu_ cancelTracking]; [menu_ cancelTracking];