diff --git a/OpenUtau/Controls/LyricBox.axaml.cs b/OpenUtau/Controls/LyricBox.axaml.cs index 8c60844e2..b39ac6a0e 100644 --- a/OpenUtau/Controls/LyricBox.axaml.cs +++ b/OpenUtau/Controls/LyricBox.axaml.cs @@ -181,7 +181,6 @@ public void EndEdit(bool commit = false) { viewModel.NoteOrPhoneme = null; viewModel.IsVisible = false; viewModel.Text = string.Empty; - this.Focus(); } } } diff --git a/OpenUtau/Controls/PianoRoll.axaml b/OpenUtau/Controls/PianoRoll.axaml index a89b2bb0c..6cf9b812c 100644 --- a/OpenUtau/Controls/PianoRoll.axaml +++ b/OpenUtau/Controls/PianoRoll.axaml @@ -751,7 +751,7 @@ - + pianoRoll.ViewModel.PlaybackViewModel = viewModel.PlaybackViewModel; } - // Workaround for new window losing focus. if (pianoRollWindow != null) { - openPianoRollWindow = true; + pianoRollWindow.Show(); + pianoRollWindow.Activate(); } else { viewModel.ShowPianoRoll = true; + pianoRoll.Focus(); } int tick = viewModel.TracksViewModel.PointToTick(args.GetPosition(canvas)); DocManager.Inst.ExecuteCmd(new LoadPartNotification(partControl.part, DocManager.Inst.Project, tick)); @@ -1244,11 +1235,11 @@ public void SetPianoRollAttachment() { pianoRollWindow?.ForceClose(); pianoRollWindow = null; PianoRollContainer.Content = pianoRoll; - viewModel!.ShowPianoRoll = true; + viewModel.ShowPianoRoll = true; Preferences.Default.DetachPianoRoll = false; } else { PianoRollContainer.Content = null; - viewModel!.ShowPianoRoll = false; + viewModel.ShowPianoRoll = false; if (pianoRollWindow == null) { pianoRollWindow = new(pianoRoll); pianoRollWindow.Show(); diff --git a/OpenUtau/Views/PianoRollDetachedWindow.axaml b/OpenUtau/Views/PianoRollDetachedWindow.axaml index e662874e9..0a793bddf 100644 --- a/OpenUtau/Views/PianoRollDetachedWindow.axaml +++ b/OpenUtau/Views/PianoRollDetachedWindow.axaml @@ -9,7 +9,7 @@ x:Class="OpenUtau.App.Views.PianoRollDetachedWindow" Icon="/Assets/open-utau.ico" Title="{Binding NotesViewModel.WindowTitle}" MinWidth="300" MinHeight="200" Width="{Binding Width}" Height="{Binding Height}" - Focusable="True" TransparencyLevelHint="None" + Focusable="True" GotFocus="WindowGotFocus" TransparencyLevelHint="None" Closing="WindowClosing" Deactivated="WindowDeactivated"> \ No newline at end of file diff --git a/OpenUtau/Views/PianoRollDetachedWindow.axaml.cs b/OpenUtau/Views/PianoRollDetachedWindow.axaml.cs index 52addd00f..48d4e7d06 100644 --- a/OpenUtau/Views/PianoRollDetachedWindow.axaml.cs +++ b/OpenUtau/Views/PianoRollDetachedWindow.axaml.cs @@ -1,6 +1,7 @@ using System; using Avalonia; using Avalonia.Controls; +using Avalonia.Input; using OpenUtau.App.Controls; using OpenUtau.Core.Util; @@ -22,6 +23,10 @@ public PianoRollDetachedWindow(PianoRoll pianoRoll) { WindowState = (WindowState)Preferences.Default.PianorollWindowSize.State; } + public void WindowGotFocus(object sender, GotFocusEventArgs e) { + pianoRoll.Focus(); + } + public void WindowClosing(object? sender, WindowClosingEventArgs e) { Preferences.Default.PianorollWindowSize.Set(Width, Height, Position.X, Position.Y, (int)WindowState); Preferences.Save();