diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 1e1d109..aeae6aa 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -258,7 +258,8 @@
             if (latinIme == null) {
                 return;
             }
-            if (!latinIme.mSettings.getCurrent().isSuggestionStripVisible()) {
+            if (!latinIme.mSettings.getCurrent()
+                    .isCurrentOrientationAllowingSuggestionsPerUserSettings()) {
                 return;
             }
             removeMessages(MSG_RESUME_SUGGESTIONS);
@@ -1346,7 +1347,7 @@
                 currentSettings.mInputAttributes)) {
             return true;
         }
-        if (!currentSettings.isSuggestionStripVisible()) {
+        if (!currentSettings.isCurrentOrientationAllowingSuggestionsPerUserSettings()) {
             return false;
         }
         if (currentSettings.isApplicationSpecifiedCompletionsOn()) {
@@ -1391,8 +1392,14 @@
 
         final SettingsValues currentSettings = mSettings.getCurrent();
         final boolean showSuggestions;
-        if (SuggestedWords.EMPTY == suggestedWords || suggestedWords.isPunctuationSuggestions()
-                || !currentSettings.isSuggestionsRequested()) {
+        // May show the important notice when there are no suggestions to show,
+        if (SuggestedWords.EMPTY == suggestedWords
+                // or the suggestion strip is expected to show punctuation suggestions,
+                || suggestedWords.isPunctuationSuggestions()
+                // or it's not requested to show suggestions by the input field,
+                || !currentSettings.isSuggestionsRequested()
+                // or the "show correction suggestions" settings is off by users preference.
+                || !currentSettings.isCurrentOrientationAllowingSuggestionsPerUserSettings()) {
             showSuggestions = !mSuggestionStripView.maybeShowImportantNoticeTitle(
                     currentSettings.mInputAttributes);
         } else {
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index ce4ac0b..2318dae 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -1050,7 +1050,8 @@
                     }
                 }
             }
-            if (inputTransaction.mSettingsValues.isSuggestionStripVisible()
+            if (inputTransaction.mSettingsValues
+                    .isCurrentOrientationAllowingSuggestionsPerUserSettings()
                     && inputTransaction.mSettingsValues.mSpacingAndPunctuations
                             .mCurrentLanguageHasSpaces
                     && !mConnection.isCursorFollowedByWordCharacter(
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index 58ef75b..6c6e79e 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -190,10 +190,11 @@
 
     public boolean isSuggestionsRequested() {
         return mInputAttributes.mIsSettingsSuggestionStripOn
-                && (mCorrectionEnabled || isSuggestionStripVisible());
+                && (mCorrectionEnabled
+                        || isCurrentOrientationAllowingSuggestionsPerUserSettings());
     }
 
-    public boolean isSuggestionStripVisible() {
+    public boolean isCurrentOrientationAllowingSuggestionsPerUserSettings() {
         return (mSuggestionVisibility == SUGGESTION_VISIBILITY_SHOW_VALUE)
                 || (mSuggestionVisibility == SUGGESTION_VISIBILITY_SHOW_ONLY_PORTRAIT_VALUE
                         && mDisplayOrientation == Configuration.ORIENTATION_PORTRAIT);
diff --git a/native/jni/Application.mk b/native/jni/Application.mk
index caf3b26..ce09535 100644
--- a/native/jni/Application.mk
+++ b/native/jni/Application.mk
@@ -1 +1 @@
-APP_STL := stlport_static
+APP_STL := c++_static
