mac: Correctly close popup menu

This commit is contained in:
Cheng Zhao 2018-01-01 15:39:43 +09:00
parent 5f4b62b6c8
commit d7bc127c60
3 changed files with 16 additions and 13 deletions

View file

@ -108,14 +108,24 @@ void MenuMac::PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
}
void MenuMac::ClosePopupAt(int32_t window_id) {
auto it = popup_controllers_.find(window_id);
if (it != popup_controllers_.end()) {
popup_controllers_.erase(it);
auto controller = popup_controllers_.find(window_id);
if (controller != popup_controllers_.end()) {
// Close the controller for the window.
[controller->second cancel];
} else if (window_id == -1) {
popup_controllers_.clear();
// Or just close all opened controllers.
for (auto it = popup_controllers_.begin();
it != popup_controllers_.end();) {
// The iterator is invalidated after the call.
[(it++)->second cancel];
}
}
}
void MenuMac::OnClosed(int32_t window_id) {
popup_controllers_.erase(window_id);
}
// static
void Menu::SetApplicationMenu(Menu* base_menu) {
MenuMac* menu = static_cast<MenuMac*>(base_menu);