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

@@ -37,6 +37,23 @@ void CEF_CALLBACK button_delegate_on_button_pressed(
CefButtonCToCpp::Wrap(button));
}
void CEF_CALLBACK button_delegate_on_button_state_changed(
struct _cef_button_delegate_t* self, cef_button_t* button) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
if (!self)
return;
// Verify param: button; type: refptr_diff
DCHECK(button);
if (!button)
return;
// Execute
CefButtonDelegateCppToC::Get(self)->OnButtonStateChanged(
CefButtonCToCpp::Wrap(button));
}
cef_size_t CEF_CALLBACK button_delegate_get_preferred_size(
struct _cef_view_delegate_t* self, cef_view_t* view) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
@@ -215,6 +232,8 @@ void CEF_CALLBACK button_delegate_on_blur(struct _cef_view_delegate_t* self,
CefButtonDelegateCppToC::CefButtonDelegateCppToC() {
GetStruct()->on_button_pressed = button_delegate_on_button_pressed;
GetStruct()->on_button_state_changed =
button_delegate_on_button_state_changed;
GetStruct()->base.get_preferred_size = button_delegate_get_preferred_size;
GetStruct()->base.get_minimum_size = button_delegate_get_minimum_size;
GetStruct()->base.get_maximum_size = button_delegate_get_maximum_size;

View File

@@ -81,6 +81,17 @@ void CEF_CALLBACK menu_button_show_menu(struct _cef_menu_button_t* self,
anchor_position);
}
void CEF_CALLBACK menu_button_trigger_menu(struct _cef_menu_button_t* self) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
if (!self)
return;
// Execute
CefMenuButtonCppToC::Get(self)->TriggerMenu();
}
cef_menu_button_t* CEF_CALLBACK menu_button_as_menu_button(
struct _cef_label_button_t* self) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
@@ -1186,6 +1197,7 @@ int CEF_CALLBACK menu_button_convert_point_from_view(struct _cef_view_t* self,
CefMenuButtonCppToC::CefMenuButtonCppToC() {
GetStruct()->show_menu = menu_button_show_menu;
GetStruct()->trigger_menu = menu_button_trigger_menu;
GetStruct()->base.as_menu_button = menu_button_as_menu_button;
GetStruct()->base.set_text = menu_button_set_text;
GetStruct()->base.get_text = menu_button_get_text;

View File

@@ -64,6 +64,25 @@ void CEF_CALLBACK menu_button_delegate_on_button_pressed(
CefButtonCToCpp::Wrap(button));
}
void CEF_CALLBACK menu_button_delegate_on_button_state_changed(
struct _cef_button_delegate_t* self, cef_button_t* button) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
if (!self)
return;
// Verify param: button; type: refptr_diff
DCHECK(button);
if (!button)
return;
// Execute
CefMenuButtonDelegateCppToC::Get(
reinterpret_cast<cef_menu_button_delegate_t*>(
self))->OnButtonStateChanged(
CefButtonCToCpp::Wrap(button));
}
cef_size_t CEF_CALLBACK menu_button_delegate_get_preferred_size(
struct _cef_view_delegate_t* self, cef_view_t* view) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
@@ -244,6 +263,8 @@ CefMenuButtonDelegateCppToC::CefMenuButtonDelegateCppToC() {
GetStruct()->on_menu_button_pressed =
menu_button_delegate_on_menu_button_pressed;
GetStruct()->base.on_button_pressed = menu_button_delegate_on_button_pressed;
GetStruct()->base.on_button_state_changed =
menu_button_delegate_on_button_state_changed;
GetStruct()->base.base.get_preferred_size =
menu_button_delegate_get_preferred_size;
GetStruct()->base.base.get_minimum_size =