mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
views: Support top menu switching with mouse and arrow keys (issue #2102)
- cefclient: Add example ViewsMenuBar implementation and show top menu by default (specify `--hide-top-menu` to hide it).
This commit is contained in:
@@ -390,13 +390,6 @@ void CefWindowImpl::OnWindowViewDeleted() {
|
||||
Detach();
|
||||
}
|
||||
|
||||
void CefWindowImpl::MenuClosed(CefRefPtr<CefMenuModelImpl> source) {
|
||||
DCHECK_EQ(menu_model_, source);
|
||||
menu_model_->RemoveObserver(this);
|
||||
menu_model_ = nullptr;
|
||||
menu_runner_.reset(nullptr);
|
||||
}
|
||||
|
||||
// Will only be called if CanHandleAccelerators() returns true.
|
||||
bool CefWindowImpl::AcceleratorPressed(const ui::Accelerator& accelerator) {
|
||||
for (const auto& entry : accelerator_map_) {
|
||||
@@ -433,12 +426,16 @@ void CefWindowImpl::ShowMenu(views::MenuButton* menu_button,
|
||||
return;
|
||||
|
||||
menu_model_ = menu_model_impl;
|
||||
menu_model_->AddObserver(this);
|
||||
|
||||
// We'll send the MenuClosed notification manually for better accuracy.
|
||||
menu_model_->set_auto_notify_menu_closed(false);
|
||||
|
||||
menu_runner_.reset(
|
||||
new views::MenuRunner(menu_model_impl->model(),
|
||||
menu_button ? views::MenuRunner::HAS_MNEMONICS :
|
||||
views::MenuRunner::CONTEXT_MENU));
|
||||
views::MenuRunner::ASYNC |
|
||||
(menu_button ? views::MenuRunner::HAS_MNEMONICS :
|
||||
views::MenuRunner::CONTEXT_MENU),
|
||||
base::Bind(&CefWindowImpl::MenuClosed, this)));
|
||||
|
||||
views::MenuRunner::RunResult result = menu_runner_->RunMenuAt(
|
||||
widget_,
|
||||
@@ -449,6 +446,12 @@ void CefWindowImpl::ShowMenu(views::MenuButton* menu_button,
|
||||
ALLOW_UNUSED_LOCAL(result);
|
||||
}
|
||||
|
||||
void CefWindowImpl::MenuClosed() {
|
||||
menu_model_->NotifyMenuClosed();
|
||||
menu_model_ = nullptr;
|
||||
menu_runner_.reset(nullptr);
|
||||
}
|
||||
|
||||
void CefWindowImpl::CancelMenu() {
|
||||
CEF_REQUIRE_VALID_RETURN_VOID();
|
||||
if (menu_runner_)
|
||||
|
Reference in New Issue
Block a user