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:
Marshall Greenblatt
2017-02-22 13:05:27 -05:00
parent fbc8b983d5
commit 6eaf11f07a
42 changed files with 1055 additions and 152 deletions

View File

@@ -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))

View File

@@ -31,6 +31,7 @@ class CefMenuModelCToCpp
CefMenuModelCToCpp();
// CefMenuModel methods.
bool IsSubMenu() OVERRIDE;
bool Clear() OVERRIDE;
int GetCount() OVERRIDE;
bool AddSeparator() OVERRIDE;

View File

@@ -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();

View File

@@ -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,

View File

@@ -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());

View File

@@ -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;

View File

@@ -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(
));

View File

@@ -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;

View File

@@ -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());

View File

@@ -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;