Merge "Cannot pan in browser if magnification is enabled." into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9823723d0f
@@ -176,6 +176,8 @@ public final class ScreenMagnifier implements EventStreamTransformation {
|
|||||||
private PointerCoords[] mTempPointerCoords;
|
private PointerCoords[] mTempPointerCoords;
|
||||||
private PointerProperties[] mTempPointerProperties;
|
private PointerProperties[] mTempPointerProperties;
|
||||||
|
|
||||||
|
private long mDelegatingStateDownTime;
|
||||||
|
|
||||||
public ScreenMagnifier(Context context) {
|
public ScreenMagnifier(Context context) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
|
mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
|
||||||
@@ -265,10 +267,15 @@ public final class ScreenMagnifier implements EventStreamTransformation {
|
|||||||
|
|
||||||
private void handleMotionEventStateDelegating(MotionEvent event,
|
private void handleMotionEventStateDelegating(MotionEvent event,
|
||||||
MotionEvent rawEvent, int policyFlags) {
|
MotionEvent rawEvent, int policyFlags) {
|
||||||
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
|
switch (event.getActionMasked()) {
|
||||||
if (mDetectingStateHandler.mDelayedEventQueue == null) {
|
case MotionEvent.ACTION_DOWN: {
|
||||||
transitionToState(STATE_DETECTING);
|
mDelegatingStateDownTime = event.getDownTime();
|
||||||
}
|
} break;
|
||||||
|
case MotionEvent.ACTION_UP: {
|
||||||
|
if (mDetectingStateHandler.mDelayedEventQueue == null) {
|
||||||
|
transitionToState(STATE_DETECTING);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
if (mNext != null) {
|
if (mNext != null) {
|
||||||
// If the event is within the magnified portion of the screen we have
|
// If the event is within the magnified portion of the screen we have
|
||||||
@@ -295,6 +302,13 @@ public final class ScreenMagnifier implements EventStreamTransformation {
|
|||||||
coords, 0, 0, 1.0f, 1.0f, event.getDeviceId(), 0, event.getSource(),
|
coords, 0, 0, 1.0f, 1.0f, event.getDeviceId(), 0, event.getSource(),
|
||||||
event.getFlags());
|
event.getFlags());
|
||||||
}
|
}
|
||||||
|
// We cache some events to see if the user wants to trigger magnification.
|
||||||
|
// If no magnification is triggered we inject these events with adjusted
|
||||||
|
// time and down time to prevent subsequent transformations being confused
|
||||||
|
// by stale events. After the cached events, which always have a down, are
|
||||||
|
// injected we need to also update the down time of all subsequent non cached
|
||||||
|
// events. All delegated events cached and non-cached are delivered here.
|
||||||
|
event.setDownTime(mDelegatingStateDownTime);
|
||||||
mNext.onMotionEvent(event, rawEvent, policyFlags);
|
mNext.onMotionEvent(event, rawEvent, policyFlags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user