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

Commit 85562dde authored by Jeff Brown's avatar Jeff Brown Committed by Android (Google) Code Review
Browse files

Merge "Fix keyboard hidden states." into honeycomb

parents 149da0d4 d04a88cb
Loading
Loading
Loading
Loading
+30 −27
Original line number Diff line number Diff line
@@ -191,9 +191,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    static final int APPLICATION_PANEL_SUBLAYER = 1;
    static final int APPLICATION_SUB_PANEL_SUBLAYER = 2;
    
    // Debugging: set this to have the system act like there is no hard keyboard.
    static final boolean KEYBOARD_ALWAYS_HIDDEN = false;
    
    static public final String SYSTEM_DIALOG_REASON_KEY = "reason";
    static public final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
    static public final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
@@ -914,36 +911,42 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    }
    
    private int determineHiddenState(int mode, int hiddenValue, int visibleValue) {
        if (KEYBOARD_ALWAYS_HIDDEN) {
            return hiddenValue;
        }
        if (mLidOpen == LID_ABSENT) {
            return visibleValue;
        }

        if (mLidOpen != LID_ABSENT) {
            switch (mode) {
                case 1:
                    return mLidOpen == LID_OPEN ? visibleValue : hiddenValue;
                case 2:
                    return mLidOpen == LID_OPEN ? hiddenValue : visibleValue;
            }
        }
        return visibleValue;
    }

    /** {@inheritDoc} */
    public void adjustConfigurationLw(Configuration config) {
        readLidState();

        mPowerManager.setKeyboardVisibility(mLidOpen == LID_OPEN);
        config.hardKeyboardHidden = determineHiddenState(
                mLidKeyboardAccessibility, Configuration.HARDKEYBOARDHIDDEN_YES,
                Configuration.HARDKEYBOARDHIDDEN_NO);
        config.navigationHidden = determineHiddenState(
                mLidNavigationAccessibility, Configuration.NAVIGATIONHIDDEN_YES,
                Configuration.NAVIGATIONHIDDEN_NO);
        config.keyboardHidden = (config.hardKeyboardHidden
                        == Configuration.HARDKEYBOARDHIDDEN_NO || mHasSoftInput)
                ? Configuration.KEYBOARDHIDDEN_NO
                : Configuration.KEYBOARDHIDDEN_YES;

        if (config.keyboard == Configuration.KEYBOARD_NOKEYS) {
            config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
        } else {
            config.hardKeyboardHidden = determineHiddenState(mLidKeyboardAccessibility,
                    Configuration.HARDKEYBOARDHIDDEN_YES, Configuration.HARDKEYBOARDHIDDEN_NO);
        }

        if (config.navigation == Configuration.NAVIGATION_NONAV) {
            config.navigationHidden = Configuration.NAVIGATIONHIDDEN_YES;
        } else {
            config.navigationHidden = determineHiddenState(mLidNavigationAccessibility,
                    Configuration.NAVIGATIONHIDDEN_YES, Configuration.NAVIGATIONHIDDEN_NO);
        }

        if (mHasSoftInput || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
            config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
        } else {
            config.keyboardHidden = Configuration.KEYBOARDHIDDEN_YES;
        }
    }

    /** {@inheritDoc} */