Bladeren bron

Fix Windows Terminal hide/show functions (#342)

https://stackoverflow.com/a/78577080
bangfire 1 jaar geleden
bovenliggende
commit
8ae72c1a00
1 gewijzigde bestanden met toevoegingen van 22 en 9 verwijderingen
  1. 22 9
      src/Ryujinx.UI.Common/Helper/ConsoleHelper.cs

+ 22 - 9
src/Ryujinx.UI.Common/Helper/ConsoleHelper.cs

@@ -7,6 +7,24 @@ namespace Ryujinx.UI.Common.Helper
 {
     public static partial class ConsoleHelper
     {
+        [SupportedOSPlatform("windows")]
+        [LibraryImport("kernel32")]
+        private static partial nint GetConsoleWindow();
+
+        [SupportedOSPlatform("windows")]
+        [LibraryImport("user32")]
+        [return: MarshalAs(UnmanagedType.Bool)]
+        private static partial bool ShowWindow(nint hWnd, int nCmdShow);
+
+        [SupportedOSPlatform("windows")]
+        [LibraryImport("user32")]
+        private static partial nint GetForegroundWindow();
+        
+        [SupportedOSPlatform("windows")]
+        [LibraryImport("user32")]
+        [return: MarshalAs(UnmanagedType.Bool)]
+        private static partial bool SetForegroundWindow(nint hWnd);
+
         public static bool SetConsoleWindowStateSupported => OperatingSystem.IsWindows();
 
         public static void SetConsoleWindowState(bool show)
@@ -35,16 +53,11 @@ namespace Ryujinx.UI.Common.Helper
                 return;
             }
 
-            ShowWindow(hWnd, show ? SW_SHOW : SW_HIDE);
-        }
+            SetForegroundWindow(hWnd);
 
-        [SupportedOSPlatform("windows")]
-        [LibraryImport("kernel32")]
-        private static partial nint GetConsoleWindow();
+            hWnd = GetForegroundWindow();
 
-        [SupportedOSPlatform("windows")]
-        [LibraryImport("user32")]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        private static partial bool ShowWindow(nint hWnd, int nCmdShow);
+            ShowWindow(hWnd, show ? SW_SHOW : SW_HIDE);
+        }
     }
 }