namespace content {
+bool IsShiftKey(const char * key) {
+ if (!key)
+ return false;
+ return !strcmp(key, "Shift_L") || !strcmp(key, "Shift_R");
+}
+
void RenderWidgetHostViewBase::GetDefaultScreenInfo(
blink::WebScreenInfo* results) {
const gfx::Display display = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
void RenderWidgetHostViewEfl::OnKeyDown(
void* data, Evas* evas, Evas_Object* obj, void* event_info) {
+
+ if (!event_info)
+ return;
+
RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
if (rwhv->evas_event_handler_.get())
if (rwhv->evas_event_handler_->HandleEvent_KeyDown(static_cast<Evas_Event_Key_Down*>(event_info)))
return;
+ // When upper case letter is entered there are two events
+ // Shift + letter key
+ // Do not forward shift key to prevent shift keydown event.
+ if (IsShiftKey(static_cast<Evas_Event_Key_Down*>(event_info)->key))
+ return;
+
rwhv->host_->ForwardKeyboardEvent(MakeWebKeyboardEvent(
true, static_cast<Evas_Event_Key_Down*>(event_info)));
}
void RenderWidgetHostViewEfl::OnKeyUp(
void* data, Evas* evas, Evas_Object* obj, void* event_info) {
+
+ if (!event_info)
+ return;
+
RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
if (rwhv->evas_event_handler_.get())
if (rwhv->evas_event_handler_->HandleEvent_KeyUp(static_cast<Evas_Event_Key_Up*>(event_info)))
return;
+ // When upper case letter is entered there are two events
+ // Shift + letter key
+ // Do not forward shift key to prevent shift keyup event.
+ if (IsShiftKey(static_cast<Evas_Event_Key_Up*>(event_info)->key))
+ return;
+
rwhv->host_->ForwardKeyboardEvent(MakeWebKeyboardEvent(
false, static_cast<Evas_Event_Key_Up*>(event_info)));
}