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();