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

Commit dd73ee4d authored by Daniel Sandler's avatar Daniel Sandler
Browse files

Add a config resource to enable translucent bars globally.

Setting config_enableTranslucentDecor to false will not
prevent clients from adding FLAG_TRANSLUCENT_NAVIGATION or
STATUS to the window or using the TransluentDecor themes,
but it will prevent View.STATUS_BAR_TRANSLUCENT and
View.NAVIGATION_BAR_TRANSLUCENT from being propagated to the
SystemUI so these requests will not be honored.

Bug: 11182618
Change-Id: I8be6a3a565acf0987ff12f18f1c7e67c96d563c3
parent 306ed4fd
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -588,6 +588,9 @@
    <!-- Disable lockscreen translucent decor by default -->
    <!-- Disable lockscreen translucent decor by default -->
    <bool name="config_enableLockScreenTranslucentDecor">false</bool>
    <bool name="config_enableLockScreenTranslucentDecor">false</bool>


    <!-- Enable translucent decor by default -->
    <bool name="config_enableTranslucentDecor">true</bool>

    <!-- Enable puk unlockscreen by default.
    <!-- Enable puk unlockscreen by default.
         If unlock screen is disabled, the puk should be unlocked through Emergency Dialer -->
         If unlock screen is disabled, the puk should be unlocked through Emergency Dialer -->
    <bool name="config_enable_puk_unlock_screen">true</bool>
    <bool name="config_enable_puk_unlock_screen">true</bool>
+1 −0
Original line number Original line Diff line number Diff line
@@ -1295,6 +1295,7 @@
  <java-symbol type="bool" name="config_enableLockBeforeUnlockScreen" />
  <java-symbol type="bool" name="config_enableLockBeforeUnlockScreen" />
  <java-symbol type="bool" name="config_enableLockScreenRotation" />
  <java-symbol type="bool" name="config_enableLockScreenRotation" />
  <java-symbol type="bool" name="config_enableLockScreenTranslucentDecor" />
  <java-symbol type="bool" name="config_enableLockScreenTranslucentDecor" />
  <java-symbol type="bool" name="config_enableTranslucentDecor" />
  <java-symbol type="bool" name="config_lidControlsSleep" />
  <java-symbol type="bool" name="config_lidControlsSleep" />
  <java-symbol type="bool" name="config_reverseDefaultRotation" />
  <java-symbol type="bool" name="config_reverseDefaultRotation" />
  <java-symbol type="bool" name="config_showNavigationBar" />
  <java-symbol type="bool" name="config_showNavigationBar" />
+13 −7
Original line number Original line Diff line number Diff line
@@ -297,6 +297,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    int mCurrentAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
    int mCurrentAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
    boolean mHasSoftInput = false;
    boolean mHasSoftInput = false;
    boolean mTouchExplorationEnabled = false;
    boolean mTouchExplorationEnabled = false;
    boolean mTranslucentDecorEnabled = true;


    int mPointerLocationMode = 0; // guarded by mLock
    int mPointerLocationMode = 0; // guarded by mLock


@@ -901,6 +902,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                com.android.internal.R.integer.config_lidNavigationAccessibility);
                com.android.internal.R.integer.config_lidNavigationAccessibility);
        mLidControlsSleep = mContext.getResources().getBoolean(
        mLidControlsSleep = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_lidControlsSleep);
                com.android.internal.R.bool.config_lidControlsSleep);
        mTranslucentDecorEnabled = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_enableTranslucentDecor);
        readConfigurationDependentBehaviors();
        readConfigurationDependentBehaviors();


        // register for dock events
        // register for dock events
@@ -2703,7 +2706,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            boolean immersiveSticky = (sysui & View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) != 0;
            boolean immersiveSticky = (sysui & View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) != 0;
            boolean navAllowedHidden = immersive || immersiveSticky;
            boolean navAllowedHidden = immersive || immersiveSticky;
            navTranslucent &= !immersiveSticky;  // transient trumps translucent
            navTranslucent &= !immersiveSticky;  // transient trumps translucent
            navTranslucent &= isTranslucentNavigationAllowed();
            navTranslucent &= areTranslucentBarsAllowed();


            // When the navigation bar isn't visible, we put up a fake
            // When the navigation bar isn't visible, we put up a fake
            // input window to catch all touch events.  This way we can
            // input window to catch all touch events.  This way we can
@@ -2824,6 +2827,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {


                boolean statusBarTransient = (sysui & View.STATUS_BAR_TRANSIENT) != 0;
                boolean statusBarTransient = (sysui & View.STATUS_BAR_TRANSIENT) != 0;
                boolean statusBarTranslucent = (sysui & View.STATUS_BAR_TRANSLUCENT) != 0;
                boolean statusBarTranslucent = (sysui & View.STATUS_BAR_TRANSLUCENT) != 0;
                statusBarTranslucent &= areTranslucentBarsAllowed();


                // If the status bar is hidden, we don't want to cause
                // If the status bar is hidden, we don't want to cause
                // windows behind it to scroll.
                // windows behind it to scroll.
@@ -5116,8 +5120,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            vis = (vis & ~flags) | (oldVis & flags);
            vis = (vis & ~flags) | (oldVis & flags);
        }
        }


        if (!isTranslucentNavigationAllowed()) {
        if (!areTranslucentBarsAllowed()) {
            vis &= ~View.NAVIGATION_BAR_TRANSLUCENT;
            vis &= ~(View.NAVIGATION_BAR_TRANSLUCENT | View.STATUS_BAR_TRANSLUCENT);
        }
        }


        // update status bar
        // update status bar
@@ -5182,11 +5186,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    }
    }


    /**
    /**
     * @return whether the navigation bar can be made translucent, e.g. touch
     * @return whether the navigation or status bar can be made translucent
     *         exploration is not enabled
     *
     * This should return true unless touch exploration is not enabled or
     * R.boolean.config_enableTranslucentDecor is false.
     */
     */
    private boolean isTranslucentNavigationAllowed() {
    private boolean areTranslucentBarsAllowed() {
        return !mTouchExplorationEnabled;
        return mTranslucentDecorEnabled && !mTouchExplorationEnabled;
    }
    }


    // Use this instead of checking config_showNavigationBar so that it can be consistently
    // Use this instead of checking config_showNavigationBar so that it can be consistently