am c623fff0: Merge "Fix keyboard hidden flag." into honeycomb

* commit 'c623fff00c53f6002a8ec6c98cf4fdd6b1b2ad12':
  Fix keyboard hidden flag.
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 7c79b8a..7a3ef14 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -5787,11 +5787,7 @@
         }
         config.screenLayout = mScreenLayout;
 
-        config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
-        config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
-        mPolicy.adjustConfigurationLw(config);
-
-        // Adjust the hard keyboard configuration based on whether the hard keyboard is enabled.
+        // Determine whether a hard keyboard is available and enabled.
         boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS;
         if (hardKeyboardAvailable != mHardKeyboardAvailable) {
             mHardKeyboardAvailable = hardKeyboardAvailable;
@@ -5802,8 +5798,15 @@
         }
         if (!mHardKeyboardEnabled) {
             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;
     }