Loading core/java/android/view/ViewRootImpl.java +13 −25 Original line number Diff line number Diff line Loading @@ -471,16 +471,6 @@ public final class ViewRootImpl implements ViewParent, private boolean mAppVisibilityChanged; int mOrigWindowType = -1; /** Whether the window had focus during the most recent traversal. */ boolean mHadWindowFocus; /** * Whether the window lost focus during a previous traversal and has not * yet gained it back. Used to determine whether a WINDOW_STATE_CHANGE * accessibility events should be sent during traversal. */ boolean mLostWindowFocus; // Set to true if the owner of this window is in the stopped state, // so the window should no longer be active. @UnsupportedAppUsage Loading Loading @@ -3630,20 +3620,8 @@ public final class ViewRootImpl implements ViewParent, } final boolean changedVisibility = (viewVisibilityChanged || mFirst) && isViewVisible; final boolean hasWindowFocus = mAttachInfo.mHasWindowFocus && isViewVisible; final boolean regainedFocus = hasWindowFocus && mLostWindowFocus; if (regainedFocus) { mLostWindowFocus = false; } else if (!hasWindowFocus && mHadWindowFocus) { mLostWindowFocus = true; } if (changedVisibility || regainedFocus) { // Toasts are presented as notifications - don't present them as windows as well boolean isToast = mWindowAttributes.type == TYPE_TOAST; if (!isToast) { host.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } if (changedVisibility) { maybeFireAccessibilityWindowStateChangedEvent(); } mFirst = false; Loading @@ -3651,8 +3629,8 @@ public final class ViewRootImpl implements ViewParent, mNewSurfaceNeeded = false; mActivityRelaunched = false; mViewVisibility = viewVisibility; mHadWindowFocus = hasWindowFocus; final boolean hasWindowFocus = mAttachInfo.mHasWindowFocus && isViewVisible; mImeFocusController.onTraversal(hasWindowFocus, mWindowAttributes); if ((relayoutResult & WindowManagerGlobal.RELAYOUT_RES_FIRST_TIME) != 0) { Loading Loading @@ -3895,6 +3873,8 @@ public final class ViewRootImpl implements ViewParent, ~WindowManager.LayoutParams .SOFT_INPUT_IS_FORWARD_NAVIGATION; maybeFireAccessibilityWindowStateChangedEvent(); // Refocusing a window that has a focused view should fire a // focus event for the view since the global focused view changed. fireAccessibilityFocusEventIfHasFocusedNode(); Loading Loading @@ -3922,6 +3902,14 @@ public final class ViewRootImpl implements ViewParent, ensureTouchModeLocally(inTouchMode); } private void maybeFireAccessibilityWindowStateChangedEvent() { // Toasts are presented as notifications - don't present them as windows as well. boolean isToast = mWindowAttributes != null && (mWindowAttributes.type == TYPE_TOAST); if (!isToast && mView != null) { mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } } private void fireAccessibilityFocusEventIfHasFocusedNode() { if (!AccessibilityManager.getInstance(mContext).isEnabled()) { return; Loading Loading
core/java/android/view/ViewRootImpl.java +13 −25 Original line number Diff line number Diff line Loading @@ -471,16 +471,6 @@ public final class ViewRootImpl implements ViewParent, private boolean mAppVisibilityChanged; int mOrigWindowType = -1; /** Whether the window had focus during the most recent traversal. */ boolean mHadWindowFocus; /** * Whether the window lost focus during a previous traversal and has not * yet gained it back. Used to determine whether a WINDOW_STATE_CHANGE * accessibility events should be sent during traversal. */ boolean mLostWindowFocus; // Set to true if the owner of this window is in the stopped state, // so the window should no longer be active. @UnsupportedAppUsage Loading Loading @@ -3630,20 +3620,8 @@ public final class ViewRootImpl implements ViewParent, } final boolean changedVisibility = (viewVisibilityChanged || mFirst) && isViewVisible; final boolean hasWindowFocus = mAttachInfo.mHasWindowFocus && isViewVisible; final boolean regainedFocus = hasWindowFocus && mLostWindowFocus; if (regainedFocus) { mLostWindowFocus = false; } else if (!hasWindowFocus && mHadWindowFocus) { mLostWindowFocus = true; } if (changedVisibility || regainedFocus) { // Toasts are presented as notifications - don't present them as windows as well boolean isToast = mWindowAttributes.type == TYPE_TOAST; if (!isToast) { host.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } if (changedVisibility) { maybeFireAccessibilityWindowStateChangedEvent(); } mFirst = false; Loading @@ -3651,8 +3629,8 @@ public final class ViewRootImpl implements ViewParent, mNewSurfaceNeeded = false; mActivityRelaunched = false; mViewVisibility = viewVisibility; mHadWindowFocus = hasWindowFocus; final boolean hasWindowFocus = mAttachInfo.mHasWindowFocus && isViewVisible; mImeFocusController.onTraversal(hasWindowFocus, mWindowAttributes); if ((relayoutResult & WindowManagerGlobal.RELAYOUT_RES_FIRST_TIME) != 0) { Loading Loading @@ -3895,6 +3873,8 @@ public final class ViewRootImpl implements ViewParent, ~WindowManager.LayoutParams .SOFT_INPUT_IS_FORWARD_NAVIGATION; maybeFireAccessibilityWindowStateChangedEvent(); // Refocusing a window that has a focused view should fire a // focus event for the view since the global focused view changed. fireAccessibilityFocusEventIfHasFocusedNode(); Loading Loading @@ -3922,6 +3902,14 @@ public final class ViewRootImpl implements ViewParent, ensureTouchModeLocally(inTouchMode); } private void maybeFireAccessibilityWindowStateChangedEvent() { // Toasts are presented as notifications - don't present them as windows as well. boolean isToast = mWindowAttributes != null && (mWindowAttributes.type == TYPE_TOAST); if (!isToast && mView != null) { mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } } private void fireAccessibilityFocusEventIfHasFocusedNode() { if (!AccessibilityManager.getInstance(mContext).isEnabled()) { return; Loading