From 28757bd8bef8633f89f119ab00a2f91e79db936c Mon Sep 17 00:00:00 2001 From: feos Date: Sun, 1 Dec 2024 21:24:37 +0300 Subject: [PATCH] control extension to center the new dialog on mouse pointer --- .../Extensions/ControlExtensions.cs | 8 +++++++ .../tools/TAStudio/BookmarksBranchesBox.cs | 8 ++----- .../tools/TAStudio/MarkerControl.cs | 24 ++++++------------- .../tools/TAStudio/TAStudio.ListView.cs | 2 +- 4 files changed, 18 insertions(+), 24 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs index 92acb4c9a9..d7d5e2ee47 100644 --- a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs +++ b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs @@ -79,6 +79,14 @@ namespace BizHawk.Client.EmuHawk return control.PointToScreen(new Point(child.Location.X, child.Location.Y)); } + public static void FollowMousePointer(this Form form) + { + var point = Cursor.Position; + point.Offset(form.Width / -2, form.Height / -2); + form.StartPosition = FormStartPosition.Manual; + form.Location = point; + } + public static DialogResult ShowDialogOnScreen(this Form form) { var topLeft = new Point( diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs index a99925af9f..0cf2a7355f 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs @@ -569,12 +569,8 @@ namespace BizHawk.Client.EmuHawk InitialValue = branch.UserText }; - var point = Cursor.Position; - point.Offset(i.Width / -2, i.Height / -2); - i.StartPosition = FormStartPosition.Manual; - i.Location = point; - - if (this.ShowDialogWithTempMute(i).IsOk()) + i.FollowMousePointer(); + if (i.ShowDialogOnScreen().IsOk()) { branch.UserText = i.PromptText; UpdateTextColumnWidth(); diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs index a5ab900da9..b8a8d720ae 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs @@ -175,12 +175,8 @@ namespace BizHawk.Client.EmuHawk "" }; - var point = Cursor.Position; - point.Offset(i.Width / -2, i.Height / -2); - i.StartPosition = FormStartPosition.Manual; - i.Location = point; - - if (!this.ShowDialogWithTempMute(i).IsOk()) return; + i.FollowMousePointer(); + if (!i.ShowDialogOnScreen().IsOk()) return; UpdateTextColumnWidth(); marker = new TasMovieMarker(frame, i.PromptText); @@ -210,7 +206,7 @@ namespace BizHawk.Client.EmuHawk } } - public void EditMarkerPopUp(TasMovieMarker marker, bool followCursor = false) + public void EditMarkerPopUp(TasMovieMarker marker) { var markerFrame = marker.Frame; var i = new InputPrompt @@ -224,15 +220,8 @@ namespace BizHawk.Client.EmuHawk : "" }; - if (followCursor) - { - var point = Cursor.Position; - point.Offset(i.Width / -2, i.Height / -2); - i.StartPosition = FormStartPosition.Manual; - i.Location = point; - } - - if (!this.ShowDialogWithTempMute(i).IsOk()) return; + i.FollowMousePointer(); + if (!i.ShowDialogOnScreen().IsOk()) return; marker.Message = i.PromptText; UpdateTextColumnWidth(); @@ -252,7 +241,8 @@ namespace BizHawk.Client.EmuHawk : "0", }; - if (!this.ShowDialogWithTempMute(i).IsOk() + i.FollowMousePointer(); + if (!i.ShowDialogOnScreen().IsOk() || !int.TryParse(i.PromptText, out var promptValue) || Markers.IsMarker(promptValue)) // don't move to frame with an existing marker { diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs index aae0f331a3..347456f75c 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs @@ -903,7 +903,7 @@ namespace BizHawk.Client.EmuHawk if (existingMarker != null) { - MarkerControl.EditMarkerPopUp(existingMarker, true); + MarkerControl.EditMarkerPopUp(existingMarker); } else {