Loading core/java/android/view/View.java +4 −0 Original line number Diff line number Diff line Loading @@ -4588,6 +4588,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, /** * Called internally by the view system when a new view is getting focus. * This is what clears the old focus. * <p> * <b>NOTE:</b> The parent view's focused child must be updated manually * after calling this method. Otherwise, the view hierarchy may be left in * an inconstent state. */ void unFocus() { if (DBG) { Loading core/java/android/view/ViewRootImpl.java +17 −18 Original line number Diff line number Diff line Loading @@ -3250,27 +3250,26 @@ public final class ViewRootImpl implements ViewParent, } private boolean enterTouchMode() { if (mView != null) { if (mView.hasFocus()) { if (mView != null && mView.hasFocus()) { // note: not relying on mFocusedView here because this could // be when the window is first being added, and mFocused isn't // set yet. final View focused = mView.findFocus(); if (focused != null && !focused.isFocusableInTouchMode()) { final ViewGroup ancestorToTakeFocus = findAncestorToTakeFocusInTouchMode(focused); final ViewGroup ancestorToTakeFocus = findAncestorToTakeFocusInTouchMode(focused); if (ancestorToTakeFocus != null) { // there is an ancestor that wants focus after its descendants that // is focusable in touch mode.. give it focus // there is an ancestor that wants focus after its // descendants that is focusable in touch mode.. give it // focus return ancestorToTakeFocus.requestFocus(); } else { // nothing appropriate to have focus in touch mode, clear it out focused.unFocus(); // nothing appropriate to have focus in touch mode, clear it // out focused.clearFocus(); return true; } } } } return false; } Loading Loading
core/java/android/view/View.java +4 −0 Original line number Diff line number Diff line Loading @@ -4588,6 +4588,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, /** * Called internally by the view system when a new view is getting focus. * This is what clears the old focus. * <p> * <b>NOTE:</b> The parent view's focused child must be updated manually * after calling this method. Otherwise, the view hierarchy may be left in * an inconstent state. */ void unFocus() { if (DBG) { Loading
core/java/android/view/ViewRootImpl.java +17 −18 Original line number Diff line number Diff line Loading @@ -3250,27 +3250,26 @@ public final class ViewRootImpl implements ViewParent, } private boolean enterTouchMode() { if (mView != null) { if (mView.hasFocus()) { if (mView != null && mView.hasFocus()) { // note: not relying on mFocusedView here because this could // be when the window is first being added, and mFocused isn't // set yet. final View focused = mView.findFocus(); if (focused != null && !focused.isFocusableInTouchMode()) { final ViewGroup ancestorToTakeFocus = findAncestorToTakeFocusInTouchMode(focused); final ViewGroup ancestorToTakeFocus = findAncestorToTakeFocusInTouchMode(focused); if (ancestorToTakeFocus != null) { // there is an ancestor that wants focus after its descendants that // is focusable in touch mode.. give it focus // there is an ancestor that wants focus after its // descendants that is focusable in touch mode.. give it // focus return ancestorToTakeFocus.requestFocus(); } else { // nothing appropriate to have focus in touch mode, clear it out focused.unFocus(); // nothing appropriate to have focus in touch mode, clear it // out focused.clearFocus(); return true; } } } } return false; } Loading