Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 996ff0ce authored by Yifei Zhang's avatar Yifei Zhang
Browse files

swipe-dismiss: use original context for theme check

- For legacy windowSwipeToDismiss resolution, use the original context
  instead of base context. (Wear-specific compat behavior)
- Dialog uses a ContextWrapper that introduces additional theming.
  The base context would not correctly reflect the value for the window.

Test: atest ClockworkSystemUI
Bug: 294170826
Change-Id: I8a3098266d03b1de18925367ae281f72db3a61a1
parent e86f6d51
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -491,6 +491,7 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
            boolean requestsPredictiveBack = false;

            // Check if the context is from an activity.
            Context originalContext = context;
            while ((context instanceof ContextWrapper) && !(context instanceof Activity)) {
                context = ((ContextWrapper) context).getBaseContext();
            }
@@ -539,8 +540,10 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
                    // 3. windowSwipeToDismiss=false should be respected for apps not opted in,
                    //    which disables PB & onBackPressed caused by BackAnimController's
                    //    setTrigger(true)
                    // Use the original context to resolve the styled attribute so that they stay
                    // true to the window.
                    TypedArray windowAttr =
                            context.obtainStyledAttributes(
                            originalContext.obtainStyledAttributes(
                                    new int[] {android.R.attr.windowSwipeToDismiss});
                    boolean windowSwipeToDismiss = true;
                    if (windowAttr.getIndexCount() > 0) {