From cc1aaa9f39674413d3760fc2b38345999a0d0736 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 25 Feb 2012 17:14:03 +0100 Subject: [PATCH] Fix SD-1857 - Shortcuts do not work in floating windows --- .../AvalonDock/AvalonDock/DockingManager.cs | 18 +++++++++++++++--- .../AvalonDock/AvalonDock/FloatingWindow.cs | 8 ++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/Libraries/AvalonDock/AvalonDock/DockingManager.cs b/src/Libraries/AvalonDock/AvalonDock/DockingManager.cs index c83cdf0d76..45a393e3fa 100644 --- a/src/Libraries/AvalonDock/AvalonDock/DockingManager.cs +++ b/src/Libraries/AvalonDock/AvalonDock/DockingManager.cs @@ -2030,6 +2030,7 @@ namespace AvalonDock { DocumentFloatingWindow floatingWindow = new DocumentFloatingWindow(this); floatingWindow.Owner = Window.GetWindow(this); + floatingWindow.CopyInputBindingsFromOwner(); floatingWindow.Content = document; floatingWindow.Show(); } @@ -2178,8 +2179,10 @@ namespace AvalonDock floatingWindow.Content = content; var mainWindow = Window.GetWindow(this); - if (mainWindow.IsVisible) + if (mainWindow.IsVisible) { floatingWindow.Owner = mainWindow; + floatingWindow.CopyInputBindingsFromOwner(); + } //floatingWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner; //if (content.Content != null) @@ -2421,8 +2424,10 @@ namespace AvalonDock floatingWindow.Height = prevHostpane.FloatingWindow.Height; //floatingWindow.Owner = Window.GetWindow(this); var mainWindow = Window.GetWindow(this); - if (mainWindow.IsVisible) + if (mainWindow.IsVisible) { floatingWindow.Owner = mainWindow; + floatingWindow.CopyInputBindingsFromOwner(); + } @@ -2456,8 +2461,10 @@ namespace AvalonDock floatingWindow.Height = 500; //floatingWindow.Owner = Window.GetWindow(this); var mainWindow = Window.GetWindow(this); - if (mainWindow.IsVisible) + if (mainWindow.IsVisible) { floatingWindow.Owner = mainWindow; + floatingWindow.CopyInputBindingsFromOwner(); + } floatingWindow.Show(); @@ -2858,6 +2865,8 @@ namespace AvalonDock if (CaptureMouse()) { DocumentFloatingWindow floatingWindow = new DocumentFloatingWindow(this); + floatingWindow.Owner = Window.GetWindow(this); + floatingWindow.CopyInputBindingsFromOwner(); floatingWindow.Content = documentContent; Drag(floatingWindow, point, offset); } @@ -2872,6 +2881,7 @@ namespace AvalonDock var floatingWindow = new DockableFloatingWindow(this); floatingWindow.Content = dockableContent; floatingWindow.Owner = Window.GetWindow(this); + floatingWindow.CopyInputBindingsFromOwner(); Drag(floatingWindow, point, offset); } } @@ -2884,6 +2894,7 @@ namespace AvalonDock var floatingWindow = new DockableFloatingWindow(this); floatingWindow.Content = dockablePane; floatingWindow.Owner = Window.GetWindow(this); + floatingWindow.CopyInputBindingsFromOwner(); Drag(floatingWindow, point, offset); } } @@ -3858,6 +3869,7 @@ namespace AvalonDock flWindow.Width = size.Width; flWindow.Height = size.Height; flWindow.Owner = Window.GetWindow(this); + flWindow.CopyInputBindingsFromOwner(); flWindow.IsDockableWindow = isDockableWindow; flWindow.ShowActivated = false; diff --git a/src/Libraries/AvalonDock/AvalonDock/FloatingWindow.cs b/src/Libraries/AvalonDock/AvalonDock/FloatingWindow.cs index ea80e7467e..d43ad44dcb 100644 --- a/src/Libraries/AvalonDock/AvalonDock/FloatingWindow.cs +++ b/src/Libraries/AvalonDock/AvalonDock/FloatingWindow.cs @@ -559,5 +559,13 @@ namespace AvalonDock cnt.ContainerPane.RemoveContent(cnt); }); } + + internal void CopyInputBindingsFromOwner() + { + if (this.Owner != null) { + this.InputBindings.AddRange(this.Owner.InputBindings); + //this.CommandBindings.AddRange(this.Owner.CommandBindings); + } + } } }