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:
@@ -36,6 +36,20 @@ CefRefPtr<CefMenuModel> CefMenuModel::CreateMenuModel(
|
||||
|
||||
// VIRTUAL METHODS - Body may be edited by hand.
|
||||
|
||||
bool CefMenuModelCToCpp::IsSubMenu() {
|
||||
cef_menu_model_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, is_sub_menu))
|
||||
return false;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Execute
|
||||
int _retval = _struct->is_sub_menu(_struct);
|
||||
|
||||
// Return type: bool
|
||||
return _retval?true:false;
|
||||
}
|
||||
|
||||
bool CefMenuModelCToCpp::Clear() {
|
||||
cef_menu_model_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, clear))
|
||||
|
@@ -31,6 +31,7 @@ class CefMenuModelCToCpp
|
||||
CefMenuModelCToCpp();
|
||||
|
||||
// CefMenuModel methods.
|
||||
bool IsSubMenu() OVERRIDE;
|
||||
bool Clear() OVERRIDE;
|
||||
int GetCount() OVERRIDE;
|
||||
bool AddSeparator() OVERRIDE;
|
||||
|
@@ -37,6 +37,63 @@ void CefMenuModelDelegateCToCpp::ExecuteCommand(
|
||||
event_flags);
|
||||
}
|
||||
|
||||
void CefMenuModelDelegateCToCpp::MouseOutsideMenu(
|
||||
CefRefPtr<CefMenuModel> menu_model, const CefPoint& screen_point) {
|
||||
cef_menu_model_delegate_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, mouse_outside_menu))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: menu_model; type: refptr_diff
|
||||
DCHECK(menu_model.get());
|
||||
if (!menu_model.get())
|
||||
return;
|
||||
|
||||
// Execute
|
||||
_struct->mouse_outside_menu(_struct,
|
||||
CefMenuModelCppToC::Wrap(menu_model),
|
||||
&screen_point);
|
||||
}
|
||||
|
||||
void CefMenuModelDelegateCToCpp::UnhandledOpenSubmenu(
|
||||
CefRefPtr<CefMenuModel> menu_model, bool is_rtl) {
|
||||
cef_menu_model_delegate_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, unhandled_open_submenu))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: menu_model; type: refptr_diff
|
||||
DCHECK(menu_model.get());
|
||||
if (!menu_model.get())
|
||||
return;
|
||||
|
||||
// Execute
|
||||
_struct->unhandled_open_submenu(_struct,
|
||||
CefMenuModelCppToC::Wrap(menu_model),
|
||||
is_rtl);
|
||||
}
|
||||
|
||||
void CefMenuModelDelegateCToCpp::UnhandledCloseSubmenu(
|
||||
CefRefPtr<CefMenuModel> menu_model, bool is_rtl) {
|
||||
cef_menu_model_delegate_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, unhandled_close_submenu))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: menu_model; type: refptr_diff
|
||||
DCHECK(menu_model.get());
|
||||
if (!menu_model.get())
|
||||
return;
|
||||
|
||||
// Execute
|
||||
_struct->unhandled_close_submenu(_struct,
|
||||
CefMenuModelCppToC::Wrap(menu_model),
|
||||
is_rtl);
|
||||
}
|
||||
|
||||
void CefMenuModelDelegateCToCpp::MenuWillShow(
|
||||
CefRefPtr<CefMenuModel> menu_model) {
|
||||
cef_menu_model_delegate_t* _struct = GetStruct();
|
||||
|
@@ -35,6 +35,12 @@ class CefMenuModelDelegateCToCpp
|
||||
// CefMenuModelDelegate methods.
|
||||
void ExecuteCommand(CefRefPtr<CefMenuModel> menu_model, int command_id,
|
||||
cef_event_flags_t event_flags) override;
|
||||
void MouseOutsideMenu(CefRefPtr<CefMenuModel> menu_model,
|
||||
const CefPoint& screen_point) override;
|
||||
void UnhandledOpenSubmenu(CefRefPtr<CefMenuModel> menu_model,
|
||||
bool is_rtl) override;
|
||||
void UnhandledCloseSubmenu(CefRefPtr<CefMenuModel> menu_model,
|
||||
bool is_rtl) override;
|
||||
void MenuWillShow(CefRefPtr<CefMenuModel> menu_model) override;
|
||||
void MenuClosed(CefRefPtr<CefMenuModel> menu_model) override;
|
||||
bool FormatLabel(CefRefPtr<CefMenuModel> menu_model,
|
||||
|
@@ -35,6 +35,24 @@ void CefButtonDelegateCToCpp::OnButtonPressed(CefRefPtr<CefButton> button) {
|
||||
CefButtonCppToC::Wrap(button));
|
||||
}
|
||||
|
||||
void CefButtonDelegateCToCpp::OnButtonStateChanged(
|
||||
CefRefPtr<CefButton> button) {
|
||||
cef_button_delegate_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, on_button_state_changed))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: button; type: refptr_diff
|
||||
DCHECK(button.get());
|
||||
if (!button.get())
|
||||
return;
|
||||
|
||||
// Execute
|
||||
_struct->on_button_state_changed(_struct,
|
||||
CefButtonCppToC::Wrap(button));
|
||||
}
|
||||
|
||||
CefSize CefButtonDelegateCToCpp::GetPreferredSize(CefRefPtr<CefView> view) {
|
||||
cef_view_delegate_t* _struct = reinterpret_cast<cef_view_delegate_t*>(
|
||||
GetStruct());
|
||||
|
@@ -34,6 +34,7 @@ class CefButtonDelegateCToCpp
|
||||
|
||||
// CefButtonDelegate methods.
|
||||
void OnButtonPressed(CefRefPtr<CefButton> button) override;
|
||||
void OnButtonStateChanged(CefRefPtr<CefButton> button) override;
|
||||
|
||||
// CefViewDelegate methods.
|
||||
CefSize GetPreferredSize(CefRefPtr<CefView> view) override;
|
||||
|
@@ -73,6 +73,17 @@ void CefMenuButtonCToCpp::ShowMenu(CefRefPtr<CefMenuModel> menu_model,
|
||||
anchor_position);
|
||||
}
|
||||
|
||||
void CefMenuButtonCToCpp::TriggerMenu() {
|
||||
cef_menu_button_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, trigger_menu))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Execute
|
||||
_struct->trigger_menu(_struct);
|
||||
}
|
||||
|
||||
CefRefPtr<CefMenuButton> CefMenuButtonCToCpp::AsMenuButton() {
|
||||
cef_label_button_t* _struct = reinterpret_cast<cef_label_button_t*>(GetStruct(
|
||||
));
|
||||
|
@@ -34,6 +34,7 @@ class CefMenuButtonCToCpp
|
||||
void ShowMenu(CefRefPtr<CefMenuModel> menu_model,
|
||||
const CefPoint& screen_point,
|
||||
cef_menu_anchor_position_t anchor_position) OVERRIDE;
|
||||
void TriggerMenu() OVERRIDE;
|
||||
|
||||
// CefLabelButton methods.
|
||||
CefRefPtr<CefMenuButton> AsMenuButton() OVERRIDE;
|
||||
|
@@ -55,6 +55,25 @@ void CefMenuButtonDelegateCToCpp::OnButtonPressed(CefRefPtr<CefButton> button) {
|
||||
CefButtonCppToC::Wrap(button));
|
||||
}
|
||||
|
||||
void CefMenuButtonDelegateCToCpp::OnButtonStateChanged(
|
||||
CefRefPtr<CefButton> button) {
|
||||
cef_button_delegate_t* _struct = reinterpret_cast<cef_button_delegate_t*>(
|
||||
GetStruct());
|
||||
if (CEF_MEMBER_MISSING(_struct, on_button_state_changed))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: button; type: refptr_diff
|
||||
DCHECK(button.get());
|
||||
if (!button.get())
|
||||
return;
|
||||
|
||||
// Execute
|
||||
_struct->on_button_state_changed(_struct,
|
||||
CefButtonCppToC::Wrap(button));
|
||||
}
|
||||
|
||||
CefSize CefMenuButtonDelegateCToCpp::GetPreferredSize(CefRefPtr<CefView> view) {
|
||||
cef_view_delegate_t* _struct = reinterpret_cast<cef_view_delegate_t*>(
|
||||
GetStruct());
|
||||
|
@@ -38,6 +38,7 @@ class CefMenuButtonDelegateCToCpp
|
||||
|
||||
// CefButtonDelegate methods.
|
||||
void OnButtonPressed(CefRefPtr<CefButton> button) override;
|
||||
void OnButtonStateChanged(CefRefPtr<CefButton> button) override;
|
||||
|
||||
// CefViewDelegate methods.
|
||||
CefSize GetPreferredSize(CefRefPtr<CefView> view) override;
|
||||
|
Reference in New Issue
Block a user