| 73 | }; |
| 74 | |
| 75 | struct DevToolsKeyboardHandler : CefRefCount<cef_keyboard_handler_t> |
| 76 | { |
| 77 | DevToolsKeyboardHandler() : CefRefCount(this) |
| 78 | { |
| 79 | cef_bind_method(DevToolsKeyboardHandler, on_pre_key_event); |
| 80 | } |
| 81 | |
| 82 | int _on_pre_key_event( |
| 83 | struct _cef_browser_t* browser, |
| 84 | const struct _cef_key_event_t* event, |
| 85 | cef_event_handle_t os_event, |
| 86 | int* is_keyboard_shortcut) |
| 87 | { |
| 88 | #if OS_MAC |
| 89 | if (event->modifiers & EVENTFLAG_COMMAND_DOWN) |
| 90 | #else |
| 91 | if (event->modifiers & EVENTFLAG_CONTROL_DOWN) |
| 92 | #endif |
| 93 | { |
| 94 | cef_browser_host_t *host = nullptr; |
| 95 | |
| 96 | if (event->windows_key_code == VK_OEM_PLUS) |
| 97 | { |
| 98 | host = browser->get_host(browser); |
| 99 | host->set_zoom_level(host, |
| 100 | host->get_zoom_level(host) + 0.1); |
| 101 | } |
| 102 | else if (event->windows_key_code == VK_OEM_MINUS) |
| 103 | { |
| 104 | host = browser->get_host(browser); |
| 105 | host->set_zoom_level(host, |
| 106 | host->get_zoom_level(host) - 0.1); |
| 107 | } |
| 108 | else if (event->windows_key_code == '0') |
| 109 | { |
| 110 | host = browser->get_host(browser); |
| 111 | host->set_zoom_level(host, |
| 112 | window::get_scaling(host->get_window_handle(host)) - 1.0); |
| 113 | } |
| 114 | #if OS_MAC // Fix cut-copy-paste key bindings on macOS |
| 115 | else if (event->windows_key_code == 'C' && event->focus_on_editable_field) |
| 116 | { |
| 117 | auto frame = browser->get_main_frame(browser); |
| 118 | frame->copy(frame); |
| 119 | frame->base.release(&frame->base); |
| 120 | return true; |
| 121 | } |
| 122 | else if (event->windows_key_code == 'V' && event->focus_on_editable_field) |
| 123 | { |
| 124 | auto frame = browser->get_main_frame(browser); |
| 125 | frame->paste(frame); |
| 126 | frame->base.release(&frame->base); |
| 127 | return true; |
| 128 | } |
| 129 | else if (event->windows_key_code == 'X' && event->focus_on_editable_field) |
| 130 | { |
| 131 | auto frame = browser->get_main_frame(browser); |
| 132 | frame->cut(frame); |
nothing calls this directly
no outgoing calls
no test coverage detected