Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +12 −0 Original line number Diff line number Diff line Loading @@ -613,6 +613,18 @@ public class BubbleController { } } /** For the overflow to be focusable & receive key events the flags must be update. **/ void updateWindowFlagsForOverflow(boolean showingOverflow) { if (mStackView != null && mAddedToWindowManager) { mWmLayoutParams.flags = showingOverflow ? 0 : WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; mWmLayoutParams.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; mWindowManager.updateViewLayout(mStackView, mWmLayoutParams); } } /** Removes the BubbleStackView from the WindowManager if it's there. */ private void removeFromWindowManagerMaybe() { if (!mAddedToWindowManager) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleOverflowContainerView.java +31 −5 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.graphics.Color; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; Loading Loading @@ -62,6 +63,15 @@ public class BubbleOverflowContainerView extends LinearLayout { private RecyclerView mRecyclerView; private List<Bubble> mOverflowBubbles = new ArrayList<>(); private View.OnKeyListener mKeyListener = (view, i, keyEvent) -> { if (keyEvent.getAction() == KeyEvent.ACTION_UP && keyEvent.getKeyCode() == KeyEvent.KEYCODE_BACK) { mController.collapseStack(); return true; } return false; }; private class OverflowGridLayoutManager extends GridLayoutManager { OverflowGridLayoutManager(Context context, int columns) { super(context, columns); Loading Loading @@ -104,6 +114,7 @@ public class BubbleOverflowContainerView extends LinearLayout { public BubbleOverflowContainerView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); setFocusableInTouchMode(true); } public void setBubbleController(BubbleController controller) { Loading @@ -111,14 +122,10 @@ public class BubbleOverflowContainerView extends LinearLayout { } public void show() { setVisibility(View.VISIBLE); requestFocus(); updateOverflow(); } public void hide() { setVisibility(View.INVISIBLE); } @Override protected void onFinishInflate() { super.onFinishInflate(); Loading @@ -130,6 +137,25 @@ public class BubbleOverflowContainerView extends LinearLayout { mEmptyStateImage = findViewById(R.id.bubble_overflow_empty_state_image); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (mController != null) { // For the overflow to get key events (e.g. back press) we need to adjust the flags mController.updateWindowFlagsForOverflow(true); } setOnKeyListener(mKeyListener); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); if (mController != null) { mController.updateWindowFlagsForOverflow(false); } setOnKeyListener(null); } void updateOverflow() { Resources res = getResources(); final int columns = res.getInteger(R.integer.bubbles_overflow_columns); Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +0 −7 Original line number Diff line number Diff line Loading @@ -2167,13 +2167,6 @@ public class BubbleStackView extends FrameLayout } } /** */ @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() != MotionEvent.ACTION_DOWN && ev.getActionIndex() != mPointerIndexDown) { Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +12 −0 Original line number Diff line number Diff line Loading @@ -613,6 +613,18 @@ public class BubbleController { } } /** For the overflow to be focusable & receive key events the flags must be update. **/ void updateWindowFlagsForOverflow(boolean showingOverflow) { if (mStackView != null && mAddedToWindowManager) { mWmLayoutParams.flags = showingOverflow ? 0 : WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; mWmLayoutParams.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; mWindowManager.updateViewLayout(mStackView, mWmLayoutParams); } } /** Removes the BubbleStackView from the WindowManager if it's there. */ private void removeFromWindowManagerMaybe() { if (!mAddedToWindowManager) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleOverflowContainerView.java +31 −5 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.graphics.Color; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; Loading Loading @@ -62,6 +63,15 @@ public class BubbleOverflowContainerView extends LinearLayout { private RecyclerView mRecyclerView; private List<Bubble> mOverflowBubbles = new ArrayList<>(); private View.OnKeyListener mKeyListener = (view, i, keyEvent) -> { if (keyEvent.getAction() == KeyEvent.ACTION_UP && keyEvent.getKeyCode() == KeyEvent.KEYCODE_BACK) { mController.collapseStack(); return true; } return false; }; private class OverflowGridLayoutManager extends GridLayoutManager { OverflowGridLayoutManager(Context context, int columns) { super(context, columns); Loading Loading @@ -104,6 +114,7 @@ public class BubbleOverflowContainerView extends LinearLayout { public BubbleOverflowContainerView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); setFocusableInTouchMode(true); } public void setBubbleController(BubbleController controller) { Loading @@ -111,14 +122,10 @@ public class BubbleOverflowContainerView extends LinearLayout { } public void show() { setVisibility(View.VISIBLE); requestFocus(); updateOverflow(); } public void hide() { setVisibility(View.INVISIBLE); } @Override protected void onFinishInflate() { super.onFinishInflate(); Loading @@ -130,6 +137,25 @@ public class BubbleOverflowContainerView extends LinearLayout { mEmptyStateImage = findViewById(R.id.bubble_overflow_empty_state_image); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (mController != null) { // For the overflow to get key events (e.g. back press) we need to adjust the flags mController.updateWindowFlagsForOverflow(true); } setOnKeyListener(mKeyListener); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); if (mController != null) { mController.updateWindowFlagsForOverflow(false); } setOnKeyListener(null); } void updateOverflow() { Resources res = getResources(); final int columns = res.getInteger(R.integer.bubbles_overflow_columns); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +0 −7 Original line number Diff line number Diff line Loading @@ -2167,13 +2167,6 @@ public class BubbleStackView extends FrameLayout } } /** */ @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() != MotionEvent.ACTION_DOWN && ev.getActionIndex() != mPointerIndexDown) { Loading