From c994982afcb5d54d440efc2f2b64381f15ff3a20 Mon Sep 17 00:00:00 2001
From: Matt Ward <ward.matt@gmail.com>
Date: Mon, 3 Apr 2006 18:49:42 +0000
Subject: [PATCH] SD2-741. The active workbench window is no longer changed
 when switching between different layouts.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1264 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
---
 .../Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs
index 3c63b9ef72..72f926ca01 100644
--- a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs
+++ b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs
@@ -218,6 +218,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 			if (dockPanel != null) {
 				LockWindowUpdate(wbForm.Handle);
 				try {
+					IViewContent activeView = GetActiveView();
 					dockPanel.ActiveDocumentChanged -= new EventHandler(ActiveMdiChanged);
 					
 					DetachPadContents(true);
@@ -227,6 +228,9 @@ namespace ICSharpCode.SharpDevelop.Gui
 					LoadLayoutConfiguration();
 					ShowPads();
 					ShowViewContents();
+					if (activeView != null && activeView.WorkbenchWindow != null) {
+						activeView.WorkbenchWindow.SelectWindow();
+					}
 				} finally {
 					LockWindowUpdate(IntPtr.Zero);
 				}
@@ -556,6 +560,15 @@ namespace ICSharpCode.SharpDevelop.Gui
 			OnActiveWorkbenchWindowChanged(e);
 		}
 		
+		static IViewContent GetActiveView()
+		{
+			IWorkbenchWindow activeWindow = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
+			if (activeWindow != null) {
+				return activeWindow.ViewContent;
+			}
+			return null;
+		}
+		
 		IWorkbenchWindow oldSelectedWindow = null;
 		public virtual void OnActiveWorkbenchWindowChanged(EventArgs e)
 		{