diff --git a/ArduinoAgent/ArduinoAgent.csproj b/ArduinoAgent/ArduinoAgent.csproj index 4bcfaf9..328ebed 100644 --- a/ArduinoAgent/ArduinoAgent.csproj +++ b/ArduinoAgent/ArduinoAgent.csproj @@ -10,9 +10,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.ArduinoAgent x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 Embedded Debug;Release;DebugTouchPanel;ReleaseTouchPanel diff --git a/Orchestration/Orchestration.csproj b/Orchestration/Orchestration.csproj index fa8c4a2..0b93e53 100644 --- a/Orchestration/Orchestration.csproj +++ b/Orchestration/Orchestration.csproj @@ -10,9 +10,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.Orchestration x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 Embedded Debug;Release;DebugTouchPanel;ReleaseTouchPanel diff --git a/Orchestration/PanelPopOutOrchestrator.cs b/Orchestration/PanelPopOutOrchestrator.cs index 45b43bb..9e49057 100644 --- a/Orchestration/PanelPopOutOrchestrator.cs +++ b/Orchestration/PanelPopOutOrchestrator.cs @@ -14,7 +14,7 @@ namespace MSFSPopoutPanelManager.Orchestration public class PanelPopOutOrchestrator : ObservableObject { // This will be replaced by a signal from Ready to Fly Skipper into webserver in version 4.0 - private const int READY_TO_FLY_BUTTON_APPEARANCE_DELAY = 2000; + private const int READY_TO_FLY_BUTTON_APPEARANCE_DELAY = 4000; private int _builtInPanelConfigDelay; internal ProfileData ProfileData { get; set; } @@ -177,7 +177,7 @@ namespace MSFSPopoutPanelManager.Orchestration if (AppSetting.UseAutoPanning) InputEmulationManager.LoadCustomView(AppSetting.AutoPanningKeyBinding); - var panelResults = ExecutePopoutAndSeparation(); + var panelResults = ExecutePopout(); if (panelResults == null) return; @@ -203,24 +203,12 @@ namespace MSFSPopoutPanelManager.Orchestration if (panelResults != null) panelConfigs.AddRange(panelResults); } - if (panelConfigs.Count == 0) { StatusMessageWriter.WriteMessage("No panels have been found. Please select at least one in-game panel.", StatusMessageType.Error, true); return; } - // Line up all the panels - for (var i = panelConfigs.Count - 1; i >= 0; i--) - { - if (panelConfigs[i].PanelType == PanelType.CustomPopout) - { - WindowActionManager.MoveWindow(panelConfigs[i].PanelHandle, panelConfigs[i].Top, panelConfigs[i].Left, panelConfigs[i].Width, panelConfigs[i].Height); - PInvoke.SetForegroundWindow(panelConfigs[i].PanelHandle); - Thread.Sleep(200); - } - } - if (panelConfigs.Count > 0) { if (ActiveProfile.PanelConfigs.Count > 0) @@ -245,7 +233,7 @@ namespace MSFSPopoutPanelManager.Orchestration } } - private List ExecutePopoutAndSeparation() + private List ExecutePopout() { List panels = new List(); @@ -261,18 +249,13 @@ namespace MSFSPopoutPanelManager.Orchestration InputEmulationManager.PopOutPanel(x, y, AppSetting.UseLeftRightControlToPopOut); - // Get an AceApp window with empty title - var handle = PInvoke.FindWindow("AceApp", String.Empty); + // Get an AceApp window with non Microsoft Flight Simulator as window title + var handle = PInvoke.FindWindow("AceApp", null); - // Need to move the window to upper left corner first. There is a possible bug in the game that panel pop out to full screen that prevents further clicking. - if (handle != IntPtr.Zero) - WindowActionManager.MoveWindow(handle, 0, 0, 1000, 500); - - // The joined panel is always the first panel that got popped out - if (i > 1) - SeparatePanel(panels[0].PanelHandle); - - handle = PInvoke.FindWindow("AceApp", String.Empty); + // Unable to find pop out window because of application delay + var simulatorProcess = WindowProcessManager.GetSimulatorProcess(); + if (handle.Equals(simulatorProcess.Handle)) + handle = IntPtr.Zero; if (handle == IntPtr.Zero && i == 1) { @@ -285,9 +268,7 @@ namespace MSFSPopoutPanelManager.Orchestration return null; } - // Fix SU10+ bug where pop out window after separation is huge - if (i > 1) - WindowActionManager.MoveWindow(handle, -8, 0, 800, 600); + var clientRect = WindowActionManager.GetClientRect(handle); var panel = new PanelConfig(); panel.PanelHandle = handle; @@ -296,8 +277,8 @@ namespace MSFSPopoutPanelManager.Orchestration panel.PanelName = $"Panel{i}"; panel.Top = (i - 1) * 30; panel.Left = (i - 1) * 30; - panel.Width = 800; - panel.Height = 600; + panel.Width = clientRect.Width; + panel.Height = clientRect.Height; panels.Add(panel); PInvoke.SetWindowText(panel.PanelHandle, panel.PanelName + " (Custom)"); @@ -313,18 +294,6 @@ namespace MSFSPopoutPanelManager.Orchestration return panels; } - private void SeparatePanel(IntPtr hwnd) - { - // ToDo: Need to figure mouse click code to separate window - PInvoke.SetForegroundWindow(hwnd); - Thread.Sleep(500); - - // Find the magnifying glass coordinate - var point = PanelAnalyzer.GetMagnifyingGlassIconCoordinate(hwnd); - - InputEmulationManager.LeftClick(point.X, point.Y); - } - private List AddBuiltInPanels() { List builtinPanels = new List(); @@ -436,7 +405,14 @@ namespace MSFSPopoutPanelManager.Orchestration else if (panel.PanelType == PanelType.BuiltInPopout) savedPanelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(s => s.PanelName == panel.PanelName); - if (savedPanelConfig == null) return; + // Apply MSFS saved panel location if available since this panel is newly profiled + if (savedPanelConfig == null) + { + var rect = WindowActionManager.GetWindowRect(panel.PanelHandle); + panel.Top = rect.Top; + panel.Left = rect.Left; + return; + } // Assign window handle to panel config savedPanelConfig.PanelHandle = panel.PanelHandle; diff --git a/README.md b/README.md index 20b13d7..4e6a5d2 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,7 @@ Perform your regular panel selection and once your touch capable panel has been ## User Profile Data Files -The user plane profile data and application settings data are stored as JSON files under your "Documents" folder. (%userprofile%\Documents\MSFS Pop Out Panel Manager) +The user plane profile data and application settings data are stored as JSON files under your "Documents" folder. (%userprofile%\Documents\MSFS Pop Out Manager) * userprofiledata.json diff --git a/Shared/Shared.csproj b/Shared/Shared.csproj index 018dcbf..8e97251 100644 --- a/Shared/Shared.csproj +++ b/Shared/Shared.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.Shared x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 Embedded Debug;Release;DebugTouchPanel;ReleaseTouchPanel diff --git a/SimconnectAgent/SimconnectAgent.csproj b/SimconnectAgent/SimconnectAgent.csproj index af8db70..e61dea9 100644 --- a/SimconnectAgent/SimconnectAgent.csproj +++ b/SimconnectAgent/SimconnectAgent.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.SimConnectAgent x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 Embedded Debug;Release;DebugTouchPanel;ReleaseTouchPanel diff --git a/TouchPanelAgent/TouchPanelAgent.csproj b/TouchPanelAgent/TouchPanelAgent.csproj index 4d88009..00e8fbd 100644 --- a/TouchPanelAgent/TouchPanelAgent.csproj +++ b/TouchPanelAgent/TouchPanelAgent.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.TouchPanelAgent x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 Embedded Debug;Release;DebugTouchPanel;ReleaseTouchPanel diff --git a/UserDataAgent/UserDataAgent.csproj b/UserDataAgent/UserDataAgent.csproj index 5e9fa89..ad414ba 100644 --- a/UserDataAgent/UserDataAgent.csproj +++ b/UserDataAgent/UserDataAgent.csproj @@ -10,9 +10,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.UserDataAgent x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 Embedded Debug;Release;DebugTouchPanel;ReleaseTouchPanel diff --git a/VERSION.md b/VERSION.md index 4cea722..665dd44 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1,6 +1,9 @@ # Version History
+## Version 3.4.6.0321 +* Added SU12 compatibility. This version is required for MSFS SU12 and is not compatible with earlier MSFS releases. + ## Version 3.4.5 * Added new preference option by default to auto close MSFS Pop Out Manager when MSFS exits. diff --git a/WebServer/WebServer.csproj b/WebServer/WebServer.csproj index 19f800e..e6736dc 100644 --- a/WebServer/WebServer.csproj +++ b/WebServer/WebServer.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.WebServer x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 Embedded Debug;Release;DebugTouchPanel;ReleaseTouchPanel diff --git a/WindowsAgent/InputEmulationManager.cs b/WindowsAgent/InputEmulationManager.cs index 5ccdb24..bacfd9f 100644 --- a/WindowsAgent/InputEmulationManager.cs +++ b/WindowsAgent/InputEmulationManager.cs @@ -43,7 +43,6 @@ namespace MSFSPopoutPanelManager.WindowsAgent public static void LeftClick(int x, int y) { - PInvoke.SetCursorPos(x, y); // Need to do this twice to overcome MSFS bug for separating pop out panels PInvoke.SetCursorPos(x, y); Thread.Sleep(300); @@ -77,8 +76,7 @@ namespace MSFSPopoutPanelManager.WindowsAgent Thread.Sleep(300); PInvoke.SetCursorPos(x, y); - PInvoke.SetCursorPos(x, y); - Thread.Sleep(300); + Thread.Sleep(500); if (useSecondaryKeys) { diff --git a/WindowsAgent/TouchEventManager.cs b/WindowsAgent/TouchEventManager.cs index b75e699..8298792 100644 --- a/WindowsAgent/TouchEventManager.cs +++ b/WindowsAgent/TouchEventManager.cs @@ -141,10 +141,9 @@ namespace MSFSPopoutPanelManager.WindowsAgent PInvoke.mouse_event(MOUSEEVENTF_LEFTUP, info.pt.X, info.pt.Y, 0, 0); if (_isDragged) { - // Override GTN750 bug - must execute this to fix GTN750 cursor moving offscreen issue when doing touch and drag Thread.Sleep(AppSetting.TouchScreenSettings.TouchDownUpDelay + 50); PInvoke.SetCursorPos(info.pt.X, info.pt.Y); - Thread.Sleep(100); + Thread.Sleep(AppSetting.TouchScreenSettings.TouchDownUpDelay + 50); InputEmulationManager.LeftClickFast(info.pt.X, info.pt.Y); _isDragged = false; } diff --git a/WindowsAgent/WindowsAgent.csproj b/WindowsAgent/WindowsAgent.csproj index 33fd996..2e3a47f 100644 --- a/WindowsAgent/WindowsAgent.csproj +++ b/WindowsAgent/WindowsAgent.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.WindowsAgent x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 Embedded Debug;Release;DebugTouchPanel;ReleaseTouchPanel diff --git a/WpfApp/WpfApp.csproj b/WpfApp/WpfApp.csproj index 297599b..3b9855b 100644 --- a/WpfApp/WpfApp.csproj +++ b/WpfApp/WpfApp.csproj @@ -14,9 +14,9 @@ MSFSPopoutPanelManager.WpfApp logo.ico x64 - 3.4.5.0 - 3.4.5.0 - 3.4.5.0 + 3.4.6.0321 + 3.4.6.0321 + 3.4.6.0321 win-x64 embedded en diff --git a/latestreleasenotes.txt b/latestreleasenotes.txt index c44048b..04fb768 100644 --- a/latestreleasenotes.txt +++ b/latestreleasenotes.txt @@ -4,4 +4,4 @@ This release is a mandatory update for MSFS SU12. Change Log: -* Added SU12 compatibility. This version is required for MSFS SU12 and is not compatible with earlier MSFS releases. +* Added SU12 compatibility. This version is required for MSFS SU12 and is not compatible with earlier MSFS releases. \ No newline at end of file