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

Commit 14782f70 authored by Joe Onorato's avatar Joe Onorato
Browse files

Expose the window flags for lights out mode.

I hadn't wanted to do this, but it makes porting the FLAG_FULLSCREEN
stuff over to this simpler because you don't have to go find a view
to proxy through.

This change also clears the flag everywhere when the window manager
notifies the views that the change has come back.

Change-Id: I48392c7550925bcca50c5bb9e1f263e99de6c7bc
parent 55bf3809
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -225876,6 +225876,16 @@
 visibility="public"
>
</field>
<field name="systemUiVisibility"
 type="int"
 transient="false"
 volatile="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="token"
 type="android.os.IBinder"
 transient="false"
+1 −0
Original line number Diff line number Diff line
@@ -10807,6 +10807,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility
    /**
     */
    public void dispatchSystemUiVisibilityChanged(int visibility) {
        mSystemUiVisibility = visibility;
        if (mOnSystemUiVisibilityChangeListener != null) {
            mOnSystemUiVisibilityChangeListener.onSystemUiVisibilityChange(visibility);
        }
+10 −4
Original line number Diff line number Diff line
@@ -903,8 +903,9 @@ public final class ViewRoot extends Handler implements ViewParent,
            attachInfo.mSystemUiVisibility = 0;
            attachInfo.mHasSystemUiListeners = false;
            host.dispatchCollectViewAttributes(0);
            if (attachInfo.mKeepScreenOn != oldScreenOn ||
                    attachInfo.mSystemUiVisibility != oldVis) {
            if (attachInfo.mKeepScreenOn != oldScreenOn
                    || attachInfo.mSystemUiVisibility != oldVis
                    || attachInfo.mHasSystemUiListeners) {
                params = lp;
            }
        }
@@ -987,8 +988,10 @@ public final class ViewRoot extends Handler implements ViewParent,
                    if (attachInfo.mKeepScreenOn) {
                        params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
                    }
                    params.systemUiVisibility = attachInfo.mSystemUiVisibility;
                    params.hasSystemUiListeners = attachInfo.mHasSystemUiListeners;
                    params.subtreeSystemUiVisibility = attachInfo.mSystemUiVisibility;
                    params.hasSystemUiListeners = attachInfo.mHasSystemUiListeners
                            || params.subtreeSystemUiVisibility != 0
                            || params.systemUiVisibility != 0;
                }
                if (DEBUG_LAYOUT) {
                    Log.i(TAG, "host=w:" + host.getMeasuredWidth() + ", h:" +
@@ -2854,6 +2857,9 @@ public final class ViewRoot extends Handler implements ViewParent,

    public void handleDispatchSystemUiVisibilityChanged(int visibility) {
        if (mView == null) return;
        if (mAttachInfo != null) {
            mAttachInfo.mSystemUiVisibility = visibility;
        }
        mView.dispatchSystemUiVisibilityChanged(visibility);
    }

+19 −2
Original line number Diff line number Diff line
@@ -953,10 +953,19 @@ public interface WindowManager extends ViewManager {

        /**
         * Control the visibility of the status bar.
         * @hide
         *
         * @see View#STATUS_BAR_VISIBLE
         * @see View#STATUS_BAR_HIDDEN
         */
        public int systemUiVisibility;

        /**
         * @hide
         * The ui visibility as requested by the views in this hierarchy.
         * the combined value should be systemUiVisibility | subtreeSystemUiVisibility.
         */
        public int subtreeSystemUiVisibility;

        /**
         * Get callbacks about the system ui visibility changing.
         * 
@@ -1046,6 +1055,7 @@ public interface WindowManager extends ViewManager {
            TextUtils.writeToParcel(mTitle, out, parcelableFlags);
            out.writeInt(screenOrientation);
            out.writeInt(systemUiVisibility);
            out.writeInt(subtreeSystemUiVisibility);
            out.writeInt(hasSystemUiListeners ? 1 : 0);
        }
        
@@ -1083,6 +1093,7 @@ public interface WindowManager extends ViewManager {
            mTitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
            screenOrientation = in.readInt();
            systemUiVisibility = in.readInt();
            subtreeSystemUiVisibility = in.readInt();
            hasSystemUiListeners = in.readInt() != 0;
        }
    
@@ -1212,8 +1223,10 @@ public interface WindowManager extends ViewManager {
                changes |= SCREEN_ORIENTATION_CHANGED;
            }

            if (systemUiVisibility != o.systemUiVisibility) {
            if (systemUiVisibility != o.systemUiVisibility
                    || subtreeSystemUiVisibility != o.subtreeSystemUiVisibility) {
                systemUiVisibility = o.systemUiVisibility;
                subtreeSystemUiVisibility = o.subtreeSystemUiVisibility;
                changes |= SYSTEM_UI_VISIBILITY_CHANGED;
            }

@@ -1298,6 +1311,10 @@ public interface WindowManager extends ViewManager {
                sb.append(" sysui=0x");
                sb.append(Integer.toHexString(systemUiVisibility));
            }
            if (subtreeSystemUiVisibility != 0) {
                sb.append(" vsysui=0x");
                sb.append(Integer.toHexString(subtreeSystemUiVisibility));
            }
            if (hasSystemUiListeners) {
                sb.append(" sysuil=");
                sb.append(hasSystemUiListeners);
+2 −1
Original line number Diff line number Diff line
@@ -2855,7 +2855,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        // If there is no window focused, there will be nobody to handle the events
        // anyway, so just hang on in whatever state we're in until things settle down.
        if (mFocusedWindow != null) {
            final int visibility = mFocusedWindow.getAttrs().systemUiVisibility;
            final WindowManager.LayoutParams params = mFocusedWindow.getAttrs();
            final int visibility = params.systemUiVisibility | params.subtreeSystemUiVisibility;
            mHandler.post(new Runnable() {
                    public void run() {
                        if (mStatusBarService == null) {