diff --git a/src/Libraries/AvalonDock/AvalonDock/DockingManager.cs b/src/Libraries/AvalonDock/AvalonDock/DockingManager.cs index c130ba6ac8..5ad49fb8a4 100644 --- a/src/Libraries/AvalonDock/AvalonDock/DockingManager.cs +++ b/src/Libraries/AvalonDock/AvalonDock/DockingManager.cs @@ -1054,7 +1054,7 @@ namespace AvalonDock protected override void OnKeyDown(KeyEventArgs e) { - bool isCtrlDown = Keyboard.Modifiers == ModifierKeys.Control; + bool isCtrlDown = Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl); bool _navigatorWindowIsVisible = navigatorWindow != null ? navigatorWindow.IsVisible : false; Debug.WriteLine(string.Format("OnKeyDn {0} CtrlDn={1}", e.Key, isCtrlDown)); @@ -1078,7 +1078,7 @@ namespace AvalonDock protected override void OnKeyUp(KeyEventArgs e) { - bool isCtrlDown = Keyboard.Modifiers == ModifierKeys.Control; + bool isCtrlDown = Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl); bool _navigatorWindowIsVisible = navigatorWindow != null ? navigatorWindow.IsVisible : false; Debug.WriteLine(string.Format("OnKeyUp {0} CtrlDn={1}", e.Key, isCtrlDown)); @@ -1087,6 +1087,7 @@ namespace AvalonDock if (!_navigatorWindowIsVisible && e.Key == Key.Tab) { ShowNavigatorWindow(); + _navigatorWindowIsVisible = true; } if (_navigatorWindowIsVisible) diff --git a/src/Libraries/AvalonDock/AvalonDock/NavigatorWindow.cs b/src/Libraries/AvalonDock/AvalonDock/NavigatorWindow.cs index c37178ee19..df778ddbd7 100644 --- a/src/Libraries/AvalonDock/AvalonDock/NavigatorWindow.cs +++ b/src/Libraries/AvalonDock/AvalonDock/NavigatorWindow.cs @@ -196,7 +196,10 @@ namespace AvalonDock { if (key == Key.Tab) { - MoveToNextContent(); + if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)) + MoveToPreviousContent(); + else + MoveToNextContent(); return true; } else if (key == Key.Down) diff --git a/src/Main/Base/Project/Src/Commands/WindowCommands.cs b/src/Main/Base/Project/Src/Commands/WindowCommands.cs index 6e4ab0fc97..eec4d7e93d 100644 --- a/src/Main/Base/Project/Src/Commands/WindowCommands.cs +++ b/src/Main/Base/Project/Src/Commands/WindowCommands.cs @@ -11,7 +11,8 @@ namespace ICSharpCode.SharpDevelop.Commands { public override void Run() { - if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null) { + if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null || + WorkbenchSingleton.Workbench.WorkbenchWindowCollection.Count == 0) { return; } int index = WorkbenchSingleton.Workbench.WorkbenchWindowCollection.IndexOf(WorkbenchSingleton.Workbench.ActiveWorkbenchWindow); @@ -23,7 +24,8 @@ namespace ICSharpCode.SharpDevelop.Commands { public override void Run() { - if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null) { + if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null || + WorkbenchSingleton.Workbench.WorkbenchWindowCollection.Count == 0) { return; } int index = WorkbenchSingleton.Workbench.WorkbenchWindowCollection.IndexOf(WorkbenchSingleton.Workbench.ActiveWorkbenchWindow);