Bug 951021 Android widget should set modifier state at dispatching events derived from WidgetInputEvent r=nchen
This commit is contained in:
@@ -667,12 +667,8 @@ AndroidGeckoEvent::MakeTouchEvent(nsIWidget* widget)
|
||||
return event;
|
||||
}
|
||||
|
||||
event.modifiers = 0;
|
||||
event.modifiers = DOMModifiers();
|
||||
event.time = Time();
|
||||
event.InitBasicModifiers(IsCtrlPressed(),
|
||||
IsAltPressed(),
|
||||
IsShiftPressed(),
|
||||
IsMetaPressed());
|
||||
|
||||
const nsIntPoint& offset = widget->WidgetToScreenOffset();
|
||||
event.touches.SetCapacity(endIndex - startIndex);
|
||||
@@ -733,18 +729,7 @@ AndroidGeckoEvent::MakeMultiTouchInput(nsIWidget* widget)
|
||||
}
|
||||
|
||||
MultiTouchInput event(type, Time(), 0);
|
||||
if (IsCtrlPressed()) {
|
||||
event.modifiers |= MODIFIER_CONTROL;
|
||||
}
|
||||
if (IsAltPressed()) {
|
||||
event.modifiers |= MODIFIER_ALT;
|
||||
}
|
||||
if (IsShiftPressed()) {
|
||||
event.modifiers |= MODIFIER_SHIFT;
|
||||
}
|
||||
if (IsMetaPressed()) {
|
||||
event.modifiers |= MODIFIER_META;
|
||||
}
|
||||
event.modifiers = DOMModifiers();
|
||||
|
||||
if (type < 0) {
|
||||
// An event we don't know about
|
||||
@@ -802,7 +787,7 @@ AndroidGeckoEvent::MakeMouseEvent(nsIWidget* widget)
|
||||
if (msg != NS_MOUSE_MOVE) {
|
||||
event.clickCount = 1;
|
||||
}
|
||||
event.modifiers = 0;
|
||||
event.modifiers = DOMModifiers();
|
||||
event.time = Time();
|
||||
|
||||
// We are dispatching this event directly into Gecko (as opposed to going
|
||||
@@ -816,6 +801,37 @@ AndroidGeckoEvent::MakeMouseEvent(nsIWidget* widget)
|
||||
return event;
|
||||
}
|
||||
|
||||
Modifiers
|
||||
AndroidGeckoEvent::DOMModifiers() const
|
||||
{
|
||||
Modifiers result = 0;
|
||||
if (mMetaState & AMETA_ALT_MASK) {
|
||||
result |= MODIFIER_ALT;
|
||||
}
|
||||
if (mMetaState & AMETA_SHIFT_MASK) {
|
||||
result |= MODIFIER_SHIFT;
|
||||
}
|
||||
if (mMetaState & AMETA_CTRL_MASK) {
|
||||
result |= MODIFIER_CONTROL;
|
||||
}
|
||||
if (mMetaState & AMETA_META_MASK) {
|
||||
result |= MODIFIER_META;
|
||||
}
|
||||
if (mMetaState & AMETA_FUNCTION_ON) {
|
||||
result |= MODIFIER_FN;
|
||||
}
|
||||
if (mMetaState & AMETA_CAPS_LOCK_ON) {
|
||||
result |= MODIFIER_CAPSLOCK;
|
||||
}
|
||||
if (mMetaState & AMETA_NUM_LOCK_ON) {
|
||||
result |= MODIFIER_NUMLOCK;
|
||||
}
|
||||
if (mMetaState & AMETA_SCROLL_LOCK_ON) {
|
||||
result |= MODIFIER_SCROLLLOCK;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
AndroidPoint::Init(JNIEnv *jenv, jobject jobj)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user