Fix the issue that does not change from symbol layout to language layout 35/262135/1
authorInhong <tukkong123@naver.com>
Fri, 28 May 2021 06:41:04 +0000 (15:41 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 3 Aug 2021 05:17:56 +0000 (14:17 +0900)
Change-Id: I7b74ca356dfbc8e6663275084a0881a8e1c87f37

ISEDefaultNUI/ISEDefaultNUI.cs
ISEDefaultNUI/Interop/Interop.SclNui.cs
ISEDefaultNUI/SCLNUI.cs
ISEDefaultNUI/Setting/InputLanguagesPage.cs
ISEDefaultNUI/Setting/KeyboardSettingPage.cs

index 2db3178..b612639 100644 (file)
@@ -39,8 +39,9 @@ namespace ISEDefaultNUI
             IseConfig.Instance.ReadIseConfig();
             LanguageManager.Instance.SetEnabledLanguages(IseConfig.Instance.EnabledLanguages);
 
-            LanguageInfo currentLanguage = LanguageManager.Instance.GetLanguageInfo(LanguageManager.Instance.GetCurrentLanguage());
+            LanguageInfo currentLanguage = LanguageManager.Instance.GetLanguageInfo(IseConfig.Instance.SelectedLanguage);
             SCLNUI SclNui = new SCLNUI(navigator, DirectoryInfo.Resource + "main_entry.xml");
+            SclNui.SetUpdatePending(true);
             SclNui.SetInputMode(currentLanguage.SelectedInputMode);
             SclNui.SetCurrentSublayout("DEFAULT");
             SclNui.SetStringSubstitution("_LANGUAGE_", currentLanguage.DisplayName);
index 0fdb540..a78389f 100644 (file)
@@ -185,6 +185,9 @@ internal static partial class Interop
         [DllImport(Libraries.SclNui, EntryPoint = "scl_nui_fini")]
         internal static extern int SclNuiFini();
 
+        [DllImport(Libraries.SclNui, EntryPoint = "scl_nui_get_input_mode")]
+        internal static extern int SclNuiGetInputMode(out IntPtr mode);
+
         [DllImport(Libraries.SclNui, EntryPoint = "scl_nui_set_input_mode")]
         internal static extern int SclNuiSetInputMode(string mode);
 
index 33a6894..99cf6b4 100644 (file)
@@ -132,12 +132,18 @@ namespace ISEDefaultNUI
                     navigator.Push(keyboardSettingPage);
                 }
 
-                if (eventInfo.keyValue.Equals("Space") && afterPositionX != 0 && Math.Abs(beforePositionX - afterPositionX) > 100)
+                IntPtr inputMode;
+                SclNuiGetInputMode(out inputMode);
+                string mode = Marshal.PtrToStringAnsi(inputMode);
+                if (eventInfo.keyValue.Equals("Space") && afterPositionX != 0 && Math.Abs(beforePositionX - afterPositionX) > 100 && !mode.Equals("SYM_QTY_1"))
                 {
                     navigator.Pop();
                     SCLNUI SclNui = new SCLNUI(navigator, Application.Current.DirectoryInfo.Resource + "main_entry.xml");
+                    SclNui.SetUpdatePending(true);
                     LanguageInfo nextLanguage = beforePositionX < afterPositionX ? LanguageManager.Instance.GetNextLanguage() : LanguageManager.Instance.GetPreviousLanguage();
                     LanguageManager.Instance.SelectLanguage(nextLanguage);
+                    IseConfig.Instance.SelectedLanguage = nextLanguage.Name;
+                    IseConfig.Instance.WriteIseConfig();
                     SclNui.SetInputMode(nextLanguage.SelectedInputMode);
                     SclNui.SetCurrentSublayout("DEFAULT");
                     SclNui.SetStringSubstitution("_LANGUAGE_", nextLanguage.DisplayName);
@@ -145,7 +151,17 @@ namespace ISEDefaultNUI
                     navigator.Push(SclNui);
                 }
 
-                beforePositionX = 0;
+                if (eventInfo.keyValue.Equals("CUR_LANG"))
+                {
+                    this.SetUpdatePending(true);
+                    LanguageInfo currentLanguage = LanguageManager.Instance.GetLanguageInfo(LanguageManager.Instance.GetCurrentLanguage());
+                    this.SetInputMode(currentLanguage.SelectedInputMode);
+                    this.SetCurrentSublayout("DEFAULT");
+                    this.SetStringSubstitution("_LANGUAGE_", currentLanguage.DisplayName);
+                    this.SetUpdatePending(false);
+                }
+
+                    beforePositionX = 0;
                 afterPositionX = 0;
 
                 Marshal.FreeHGlobal(pnt);
index 4950e5e..4084198 100644 (file)
@@ -166,6 +166,7 @@ namespace ISEDefaultNUI
                     enableLanguages.Remove(e.Name);
                     LanguageManager.Instance.SetEnabledLanguages(enableLanguages);
                     IseConfig.Instance.EnabledLanguages = enableLanguages;
+                    IseConfig.Instance.SelectedLanguage = nextLanguage.Name;
                     IseConfig.Instance.WriteIseConfig();
                 }
                 else
index c21b684..7868ec0 100644 (file)
@@ -255,6 +255,7 @@ namespace ISEDefaultNUI
             navigator.Pop();
             LanguageInfo currentLanguage = LanguageManager.Instance.GetLanguageInfo(LanguageManager.Instance.GetCurrentLanguage());
             SCLNUI SclNui = new SCLNUI(navigator, Application.Current.DirectoryInfo.Resource + "main_entry.xml");
+            SclNui.SetUpdatePending(true);
             SclNui.SetInputMode(currentLanguage.SelectedInputMode);
             SclNui.SetCurrentSublayout("DEFAULT");
             SclNui.SetStringSubstitution("_LANGUAGE_", currentLanguage.DisplayName);