Key event sending update.
This commit is contained in:
parent
3dd3fd9200
commit
dbcd0a4235
7 changed files with 77 additions and 12 deletions
|
@ -526,12 +526,14 @@ void Window::SendKeyboardEvent(v8::Isolate* isolate, const mate::Dictionary& dat
|
|||
auto type = blink::WebInputEvent::Type::Char;
|
||||
int modifiers = 0;
|
||||
int keycode = 0;
|
||||
int native = 0;
|
||||
std::string type_str = "";
|
||||
std::vector<std::string> modifier_array;
|
||||
|
||||
data.Get(switches::kMouseEventType, &type_str);
|
||||
data.Get(switches::kEventType, &type_str);
|
||||
data.Get(switches::kModifiers, &modifier_array);
|
||||
data.Get(switches::kKeyCode, &keycode);
|
||||
data.Get(switches::kNativeKeyCode, &native);
|
||||
|
||||
if(type_str.compare(event_types::kKeyDown) == 0){
|
||||
type = blink::WebInputEvent::Type::KeyDown;
|
||||
|
@ -565,7 +567,7 @@ void Window::SendKeyboardEvent(v8::Isolate* isolate, const mate::Dictionary& dat
|
|||
}
|
||||
}
|
||||
|
||||
window_->SendKeyboardEvent(type, modifiers, keycode);
|
||||
window_->SendKeyboardEvent(type, modifiers, keycode, native);
|
||||
}
|
||||
|
||||
void Window::SendMouseEvent(v8::Isolate* isolate, const mate::Dictionary& data){
|
||||
|
@ -578,7 +580,7 @@ void Window::SendMouseEvent(v8::Isolate* isolate, const mate::Dictionary& data){
|
|||
blink::WebMouseEvent::Button button = blink::WebMouseEvent::Button::ButtonNone;
|
||||
int modifiers = 0;
|
||||
|
||||
data.Get(switches::kMouseEventType, &type_str);
|
||||
data.Get(switches::kEventType, &type_str);
|
||||
data.Get(switches::kMouseEventButton, &button_str);
|
||||
data.Get(switches::kModifiers, &modifier_array);
|
||||
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
#include "ui/gfx/geometry/size.h"
|
||||
#include "ui/gfx/screen.h"
|
||||
#include "ui/gl/gpu_switching_manager.h"
|
||||
#include "ui/events/event.h"
|
||||
|
||||
#if defined(OS_WIN)
|
||||
#include "ui/gfx/switches.h"
|
||||
|
@ -572,10 +573,10 @@ void NativeWindow::DevToolsClosed() {
|
|||
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnDevToolsClosed());
|
||||
}
|
||||
|
||||
void NativeWindow::SendKeyboardEvent(blink::WebInputEvent::Type type, int modifiers, int keycode){
|
||||
void NativeWindow::SendKeyboardEvent(blink::WebInputEvent::Type type, int modifiers, int keycode, int nativeKeycode){
|
||||
auto keyb_event = new content::NativeWebKeyboardEvent;
|
||||
|
||||
keyb_event->nativeKeyCode = keycode;
|
||||
keyb_event->nativeKeyCode = nativeKeycode;
|
||||
keyb_event->windowsKeyCode = keycode;
|
||||
keyb_event->setKeyIdentifierFromWindowsKeyCode();
|
||||
keyb_event->type = type;
|
||||
|
@ -584,7 +585,7 @@ void NativeWindow::SendKeyboardEvent(blink::WebInputEvent::Type type, int modifi
|
|||
keyb_event->timeStampSeconds = base::Time::Now().ToDoubleT();
|
||||
keyb_event->skip_in_browser = false;
|
||||
|
||||
if (type == blink::WebInputEvent::Char || type == blink::WebInputEvent::KeyDown) {
|
||||
if (type == blink::WebInputEvent::Char || type == blink::WebInputEvent::RawKeyDown) {
|
||||
keyb_event->text[0] = keycode;
|
||||
keyb_event->unmodifiedText[0] = keycode;
|
||||
}
|
||||
|
@ -592,6 +593,11 @@ void NativeWindow::SendKeyboardEvent(blink::WebInputEvent::Type type, int modifi
|
|||
const auto view = web_contents()->GetRenderWidgetHostView();
|
||||
const auto host = view ? view->GetRenderWidgetHost() : nullptr;
|
||||
host->ForwardKeyboardEvent(*keyb_event);
|
||||
|
||||
if(keyb_event->type == blink::WebInputEvent::Type::KeyDown){
|
||||
keyb_event->type = blink::WebInputEvent::RawKeyDown;
|
||||
host->ForwardKeyboardEvent(*keyb_event);
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindow::SendMouseEvent(blink::WebInputEvent::Type type, int modifiers, blink::WebMouseEvent::Button button, int x, int y, int movementX, int movementY, int clickCount){
|
||||
|
|
|
@ -238,7 +238,7 @@ class NativeWindow : public content::WebContentsObserver,
|
|||
|
||||
void OnFrameReceived(bool result, scoped_refptr<media::VideoFrame> frame);
|
||||
|
||||
void SendKeyboardEvent(blink::WebInputEvent::Type type, int modifiers, int keycode);
|
||||
void SendKeyboardEvent(blink::WebInputEvent::Type type, int modifiers, int keycode, int nativeKeycode);
|
||||
void SendMouseEvent(blink::WebInputEvent::Type type, int modifiers, blink::WebMouseEvent::Button button, int x, int y, int movementX, int movementY, int clickCount);
|
||||
void SendMouseWheelEvent(int modifiers, int x, int y, bool clickCount);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue