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

Commit 597eec8c authored by Jeff Brown's avatar Jeff Brown
Browse files

Fix keyboard hidden flag.

Configuration.hardKeyboardHidden should be set to
HARDKEYBOARDHIDDEN_YES when no keyboard is present or when it is
disabled.  The code in PhoneWindowManager.adjustConfigurationLw
does the right thing.  It also takes care of setting keyboardHidden
correctly when only a soft keyboard is available.

So it turns out that all we need to do to disable the hard keyboard
is to set Configuration.keyboard to KEYBOARD_NOKEYS *before* asking
the policy to adjust the configuration.

Bug: 3406101
Change-Id: I3519d02af30d8068198cb3d6b8fdde601c2fe8b4
parent ccfcd9e8
Loading
Loading
Loading
Loading
+9 −6
Original line number Original line Diff line number Diff line
@@ -5787,11 +5787,7 @@ public class WindowManagerService extends IWindowManager.Stub
        }
        }
        config.screenLayout = mScreenLayout;
        config.screenLayout = mScreenLayout;


        config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
        // Determine whether a hard keyboard is available and enabled.
        config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
        mPolicy.adjustConfigurationLw(config);

        // Adjust the hard keyboard configuration based on whether the hard keyboard is enabled.
        boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS;
        boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS;
        if (hardKeyboardAvailable != mHardKeyboardAvailable) {
        if (hardKeyboardAvailable != mHardKeyboardAvailable) {
            mHardKeyboardAvailable = hardKeyboardAvailable;
            mHardKeyboardAvailable = hardKeyboardAvailable;
@@ -5802,8 +5798,15 @@ public class WindowManagerService extends IWindowManager.Stub
        }
        }
        if (!mHardKeyboardEnabled) {
        if (!mHardKeyboardEnabled) {
            config.keyboard = Configuration.KEYBOARD_NOKEYS;
            config.keyboard = Configuration.KEYBOARD_NOKEYS;
            config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
        }
        }

        // Update value of keyboardHidden, hardKeyboardHidden and navigationHidden
        // based on whether a hard or soft keyboard is present, whether navigation keys
        // are present and the lid switch state.
        config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
        config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
        config.navigationHidden = Configuration.NAVIGATIONHIDDEN_NO;
        mPolicy.adjustConfigurationLw(config);
        return true;
        return true;
    }
    }