Merge "Fix: Handwriting only initiate for the first time" into tm-dev
This commit is contained in:
@@ -249,19 +249,19 @@ public class HandwritingInitiator {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect handwritingArea = getViewHandwritingArea(connectedView);
|
final Rect handwritingArea = getViewHandwritingArea(connectedView);
|
||||||
if (handwritingArea != null) {
|
if (contains(handwritingArea, mState.mStylusDownX, mState.mStylusDownY)) {
|
||||||
if (contains(handwritingArea, mState.mStylusDownX, mState.mStylusDownY)) {
|
startHandwriting(connectedView);
|
||||||
startHandwriting(connectedView);
|
} else {
|
||||||
}
|
reset();
|
||||||
}
|
}
|
||||||
reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** For test only. */
|
/** For test only. */
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public void startHandwriting(@NonNull View view) {
|
public void startHandwriting(@NonNull View view) {
|
||||||
mImm.startStylusHandwriting(view);
|
mImm.startStylusHandwriting(view);
|
||||||
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -287,7 +287,7 @@ public class HandwritingInitiator {
|
|||||||
final View connectedView = getConnectedView();
|
final View connectedView = getConnectedView();
|
||||||
if (connectedView != null && connectedView.isAutoHandwritingEnabled()) {
|
if (connectedView != null && connectedView.isAutoHandwritingEnabled()) {
|
||||||
final Rect handwritingArea = getViewHandwritingArea(connectedView);
|
final Rect handwritingArea = getViewHandwritingArea(connectedView);
|
||||||
if (handwritingArea != null && contains(handwritingArea, x, y)) {
|
if (contains(handwritingArea, x, y)) {
|
||||||
return connectedView;
|
return connectedView;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -298,8 +298,7 @@ public class HandwritingInitiator {
|
|||||||
for (HandwritableViewInfo viewInfo : handwritableViewInfos) {
|
for (HandwritableViewInfo viewInfo : handwritableViewInfos) {
|
||||||
final View view = viewInfo.getView();
|
final View view = viewInfo.getView();
|
||||||
if (!view.isAutoHandwritingEnabled()) continue;
|
if (!view.isAutoHandwritingEnabled()) continue;
|
||||||
final Rect rect = viewInfo.getHandwritingArea();
|
if (contains(viewInfo.getHandwritingArea(), x, y)) {
|
||||||
if (rect != null && contains(rect, x, y)) {
|
|
||||||
return viewInfo.getView();
|
return viewInfo.getView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -315,12 +314,15 @@ public class HandwritingInitiator {
|
|||||||
private static Rect getViewHandwritingArea(@NonNull View view) {
|
private static Rect getViewHandwritingArea(@NonNull View view) {
|
||||||
final ViewParent viewParent = view.getParent();
|
final ViewParent viewParent = view.getParent();
|
||||||
if (viewParent != null && view.isAttachedToWindow() && view.isAggregatedVisible()) {
|
if (viewParent != null && view.isAttachedToWindow() && view.isAggregatedVisible()) {
|
||||||
Rect handwritingArea = view.getHandwritingArea();
|
final Rect localHandwritingArea = view.getHandwritingArea();
|
||||||
if (handwritingArea == null) {
|
final Rect globalHandwritingArea = new Rect();
|
||||||
handwritingArea = new Rect(0, 0, view.getWidth(), view.getHeight());
|
if (localHandwritingArea != null) {
|
||||||
|
globalHandwritingArea.set(localHandwritingArea);
|
||||||
|
} else {
|
||||||
|
globalHandwritingArea.set(0, 0, view.getWidth(), view.getHeight());
|
||||||
}
|
}
|
||||||
if (viewParent.getChildVisibleRect(view, handwritingArea, null)) {
|
if (viewParent.getChildVisibleRect(view, globalHandwritingArea, null)) {
|
||||||
return handwritingArea;
|
return globalHandwritingArea;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -329,7 +331,8 @@ public class HandwritingInitiator {
|
|||||||
/**
|
/**
|
||||||
* Return true if the (x, y) is inside by the given {@link Rect}.
|
* Return true if the (x, y) is inside by the given {@link Rect}.
|
||||||
*/
|
*/
|
||||||
private boolean contains(@NonNull Rect rect, float x, float y) {
|
private boolean contains(@Nullable Rect rect, float x, float y) {
|
||||||
|
if (rect == null) return false;
|
||||||
return x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom;
|
return x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -481,17 +484,18 @@ public class HandwritingInitiator {
|
|||||||
if (!mIsDirty) {
|
if (!mIsDirty) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
final Rect localRect = view.getHandwritingArea();
|
final Rect handwritingArea = view.getHandwritingArea();
|
||||||
if (localRect == null) {
|
if (handwritingArea == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ViewParent parent = view.getParent();
|
ViewParent parent = view.getParent();
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
final Rect newRect = new Rect(localRect);
|
if (mHandwritingArea == null) {
|
||||||
if (parent.getChildVisibleRect(view, newRect, null /* offset */)) {
|
mHandwritingArea = new Rect();
|
||||||
mHandwritingArea = newRect;
|
}
|
||||||
} else {
|
mHandwritingArea.set(handwritingArea);
|
||||||
|
if (!parent.getChildVisibleRect(view, mHandwritingArea, null /* offset */)) {
|
||||||
mHandwritingArea = null;
|
mHandwritingArea = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12016,7 +12016,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the handwriting areas set on this view, in its local coordinates.
|
* Return the handwriting areas set on this view, in its local coordinates.
|
||||||
* Notice: the caller of this method should not modify the Rect returned.
|
|
||||||
* @see #setHandwritingArea(Rect)
|
* @see #setHandwritingArea(Rect)
|
||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
@@ -12025,7 +12024,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
public Rect getHandwritingArea() {
|
public Rect getHandwritingArea() {
|
||||||
final ListenerInfo info = mListenerInfo;
|
final ListenerInfo info = mListenerInfo;
|
||||||
if (info != null) {
|
if (info != null) {
|
||||||
return info.mHandwritingArea;
|
return new Rect(info.mHandwritingArea);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user