diff --git a/UndertaleModTool/MainWindow.xaml b/UndertaleModTool/MainWindow.xaml index f81a1f37a..d5841a941 100644 --- a/UndertaleModTool/MainWindow.xaml +++ b/UndertaleModTool/MainWindow.xaml @@ -178,9 +178,12 @@ - + diff --git a/UndertaleModTool/MainWindow.xaml.cs b/UndertaleModTool/MainWindow.xaml.cs index fd810c783..41d60ffd1 100644 --- a/UndertaleModTool/MainWindow.xaml.cs +++ b/UndertaleModTool/MainWindow.xaml.cs @@ -1531,7 +1531,7 @@ private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEv { if (e.NewValue is TreeViewItem) { - string item = (e.NewValue as TreeViewItem)?.Header?.ToString(); + string item = (e.NewValue as TreeViewItem).Header?.ToString(); if (item == "Data") { @@ -1567,7 +1567,29 @@ private void MainTree_MouseDoubleClick(object sender, MouseButtonEventArgs e) OpenInTab(Highlighted); } + private void MainTree_MouseDown(object sender, MouseButtonEventArgs e) + { + if (e.ButtonState == MouseButtonState.Pressed && e.ChangedButton == System.Windows.Input.MouseButton.Middle) + { + DependencyObject obj = MainTree.InputHitTest(e.GetPosition(MainTree)) as DependencyObject; + if (obj is not TextBlock) + return; + + TreeViewItem item = GetNearestParent(obj); + if (item is null) + return; + + item.IsSelected = true; + if (item.DataContext is not UndertaleResource) + return; + + if (Highlighted is UndertaleRoom room && Selected is not UndertaleRoom) + UndertaleRoomEditor.CheckAndRearrangeLayers(room); + + OpenInTab(Highlighted, true); + } + } private void MainTree_KeyUp(object sender, KeyEventArgs e) { if (e.Key == Key.Return)