Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion OpenUtau/Controls/LyricBox.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ public void EndEdit(bool commit = false) {
viewModel.NoteOrPhoneme = null;
viewModel.IsVisible = false;
viewModel.Text = string.Empty;
this.Focus();
}
}
}
2 changes: 1 addition & 1 deletion OpenUtau/Controls/PianoRoll.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -751,7 +751,7 @@
<Grid Grid.Row="3" Grid.Column="1" RowDefinitions="1*,1*">
<Border Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Top"
BoxShadow="0 0 5 1 #3F000000">
<c:LyricBox Name="LyricBox" Width="360"/>
<c:LyricBox Name="LyricBox" Width="360" LostFocus="LyricBoxLostFocus"/>
</Border>
</Grid>
<Border Grid.Row="5" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Expand Down
4 changes: 4 additions & 0 deletions OpenUtau/Controls/PianoRoll.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,10 @@ void LengthenCrossfade() {
dialog.ShowDialog(RootWindow);
}

private void LyricBoxLostFocus(object sender, RoutedEventArgs e) {
this.Focus();
}

public void OnExpButtonClick(object sender, RoutedEventArgs args) {
var notesVM = ViewModel.NotesViewModel;
if (notesVM.Part == null) {
Expand Down
39 changes: 15 additions & 24 deletions OpenUtau/Views/MainWindow.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ public partial class MainWindow : Window, ICmdSubscriber {

private PianoRollDetachedWindow? pianoRollWindow;
private PianoRoll? pianoRoll;
private bool openPianoRollWindow;

private PartEditState? partEditState;
private readonly DispatcherTimer timer;
Expand Down Expand Up @@ -1174,26 +1173,19 @@ public void PartsCanvasPointerMoved(object sender, PointerEventArgs args) {
}

public void PartsCanvasPointerReleased(object sender, PointerReleasedEventArgs args) {
if (partEditState != null) {
if (partEditState.MouseButton != args.InitialPressMouseButton) {
return;
}
var control = (Control)sender;
var point = args.GetCurrentPoint(control);
partEditState.Update(point.Pointer, point.Position);
partEditState.End(point.Pointer, point.Position);
partEditState = null;
Cursor = null;
}
if (openPianoRollWindow) {
pianoRollWindow?.Show();
pianoRollWindow?.Activate();
openPianoRollWindow = false;
if (partEditState?.MouseButton != args.InitialPressMouseButton) {
return;
}
var control = (Control)sender;
var point = args.GetCurrentPoint(control);
partEditState.Update(point.Pointer, point.Position);
partEditState.End(point.Pointer, point.Position);
partEditState = null;
Cursor = null;
}

public async void PartsCanvasDoubleTapped(object sender, TappedEventArgs args) {
if (!(sender is Canvas canvas)) {
if (sender is not Canvas canvas) {
return;
}
var control = canvas.InputHitTest(args.GetPosition(canvas));
Expand All @@ -1209,11 +1201,9 @@ public async void PartsCanvasDoubleTapped(object sender, TappedEventArgs args) {
};

if (Preferences.Default.DetachPianoRoll) {
viewModel!.ShowPianoRoll = false;
viewModel.ShowPianoRoll = false;
pianoRollWindow = new(pianoRoll);
pianoRollWindow.Show();
} else {
viewModel!.ShowPianoRoll = true;
PianoRollContainer.Content = pianoRoll;
}

Expand All @@ -1224,11 +1214,12 @@ await Task.Run(() =>

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));
Expand All @@ -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();
Expand Down
2 changes: 1 addition & 1 deletion OpenUtau/Views/PianoRollDetachedWindow.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -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">
<ContentControl Name="PianoRollContainer"/>
</Window>
5 changes: 5 additions & 0 deletions OpenUtau/Views/PianoRollDetachedWindow.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using OpenUtau.App.Controls;
using OpenUtau.Core.Util;

Expand All @@ -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();
Expand Down
Loading