Added switch to target.
Added switch to target.

--- a/Documents/CHANGES.txt
+++ b/Documents/CHANGES.txt
@@ -1,3 +1,6 @@
+1.0.9.4
+    Added: Switch to function on the Target Selector readout.
+
 1.0.9.3
     Added: Title of the build engineer in compact mode now shows if you are using atmospheric data.
     Added: New readout to the surface category:

--- a/KerbalEngineer/Editor/BuildOverlayVessel.cs
+++ b/KerbalEngineer/Editor/BuildOverlayVessel.cs
@@ -108,17 +108,24 @@
 
         protected void Update()
         {
-            if (!Visible || EditorLogic.startPod == null)
-            {
-                return;
-            }
-
-            if (this.openPercent > 0.0)
-            {
-                this.SetVesselInfo();
-            }
-
-            this.SetSlidePosition();
+            try
+            {
+                if (!BuildOverlay.Visible || EditorLogic.startPod == null)
+                {
+                    return;
+                }
+
+                if (this.openPercent > 0.0)
+                {
+                    this.SetVesselInfo();
+                }
+
+                this.SetSlidePosition();
+            }
+            catch (Exception ex)
+            {
+                Logger.Exception(ex);
+            }
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TargetSelector.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TargetSelector.cs
@@ -29,11 +29,11 @@
     {
         #region Fields
 
-        private float typeButtonWidth;
         private string searchQuery = string.Empty;
         private string searchText = string.Empty;
         private int targetCount;
         private ITargetable targetObject;
+        private float typeButtonWidth;
         private bool typeIsBody;
         private bool usingSearch;
         private VesselType vesselType = VesselType.Unknown;
@@ -53,6 +53,8 @@
         #endregion
 
         #region Drawing
+
+        #region Methods: public
 
         /// <summary>
         ///     Draws the target selector structure.
@@ -91,6 +93,80 @@
             }
         }
 
+        #endregion
+
+        #region Methods: private
+
+        /// <summary>
+        ///     Draws the back to types button.
+        /// </summary>
+        private void DrawBackToTypes()
+        {
+            if (GUILayout.Button("Go Back to Type Selection", this.ButtonStyle, GUILayout.Width(this.ContentWidth)))
+            {
+                this.typeIsBody = false;
+                this.vesselType = VesselType.Unknown;
+                this.ResizeRequested = true;
+            }
+
+            GUILayout.Space(3f);
+        }
+
+        /// <summary>
+        ///     Draws targetable moons.
+        /// </summary>
+        private int DrawMoons()
+        {
+            var count = 0;
+
+            foreach (var body in FlightGlobals.Bodies)
+            {
+                if (FlightGlobals.ActiveVessel.mainBody != body.referenceBody || body == Planetarium.fetch.Sun)
+                {
+                    continue;
+                }
+
+                if (this.searchQuery.Length > 0 && !body.bodyName.ToLower().Contains(this.searchQuery))
+                {
+                    continue;
+                }
+
+                count++;
+                if (GUILayout.Button(body.bodyName, this.ButtonStyle, GUILayout.Width(this.ContentWidth)))
+                {
+                    this.SetTargetAs(body);
+                }
+            }
+            return count;
+        }
+
+        /// <summary>
+        ///     Draws the targetable planets.
+        /// </summary>
+        private int DrawPlanets()
+        {
+            var count = 0;
+            foreach (var body in FlightGlobals.Bodies)
+            {
+                if (FlightGlobals.ActiveVessel.mainBody.referenceBody != body.referenceBody || body == Planetarium.fetch.Sun || body == FlightGlobals.ActiveVessel.mainBody)
+                {
+                    continue;
+                }
+
+                if (this.searchQuery.Length > 0 && !body.bodyName.ToLower().Contains(this.searchQuery))
+                {
+                    continue;
+                }
+
+                count++;
+                if (GUILayout.Button(body.GetName(), this.ButtonStyle, GUILayout.Width(this.ContentWidth)))
+                {
+                    this.SetTargetAs(body);
+                }
+            }
+            return count;
+        }
+
         /// <summary>
         ///     Draws the search bar.
         /// </summary>
@@ -114,72 +190,9 @@
             else if (this.usingSearch)
             {
                 this.usingSearch = false;
-            }
-
-            GUILayout.EndHorizontal();
-        }
-
-        /// <summary>
-        ///     Draws the button list of target types.
-        /// </summary>
-        private void DrawTypes()
-        {
-            this.typeButtonWidth = Mathf.Round(this.ContentWidth * 0.5f);
-
-            GUILayout.BeginHorizontal();
-            if (GUILayout.Button("Celestial Bodies", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAsBody();
-            }
-            if (GUILayout.Button("Debris", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.Debris);
-            }
-            GUILayout.EndHorizontal();
-
-            GUILayout.BeginHorizontal();
-            if (GUILayout.Button("Probes", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.Probe);
-            }
-
-            if (GUILayout.Button("Rovers", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.Rover);
-            }
-            GUILayout.EndHorizontal();
-
-            GUILayout.BeginHorizontal();
-            if (GUILayout.Button("Landers", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.Lander);
-            }
-            if (GUILayout.Button("Ships", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.Ship);
-            }
-            GUILayout.EndHorizontal();
-
-            GUILayout.BeginHorizontal();
-            if (GUILayout.Button("Stations", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.Station);
-            }
-            if (GUILayout.Button("Bases", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.Base);
-            }
-            GUILayout.EndHorizontal();
-
-            GUILayout.BeginHorizontal();
-            if (GUILayout.Button("EVAs", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.EVA);
-            }
-            if (GUILayout.Button("Flags", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
-            {
-                this.SetTypeAs(VesselType.Flag);
-            }
+                this.ResizeRequested = true;
+            }
+
             GUILayout.EndHorizontal();
         }
 
@@ -194,24 +207,15 @@
                 this.ResizeRequested = true;
             }
 
+            if (!(FlightGlobals.fetch.VesselTarget is CelestialBody) && GUILayout.Button("Switch to Target", this.ButtonStyle, GUILayout.Width(this.ContentWidth)))
+            {
+                FlightGlobals.SetActiveVessel(FlightGlobals.fetch.VesselTarget.GetVessel());
+                this.ResizeRequested = true;
+            }
+
             GUILayout.Space(3f);
 
             this.DrawLine("Selected Target", FlightGlobals.fetch.VesselTarget.GetName());
-        }
-
-        /// <summary>
-        ///     Draws the back to types button.
-        /// </summary>
-        private void DrawBackToTypes()
-        {
-            if (GUILayout.Button("Go Back to Type Selection", this.ButtonStyle, GUILayout.Width(this.ContentWidth)))
-            {
-                this.typeIsBody = false;
-                this.vesselType = VesselType.Unknown;
-                this.ResizeRequested = true;
-            }
-
-            GUILayout.Space(3f);
         }
 
         /// <summary>
@@ -253,58 +257,67 @@
         }
 
         /// <summary>
-        ///     Draws targetable moons.
-        /// </summary>
-        private int DrawMoons()
-        {
-            var count = 0;
-
-            foreach (var body in FlightGlobals.Bodies)
-            {
-                if (FlightGlobals.ActiveVessel.mainBody != body.referenceBody || body == Planetarium.fetch.Sun)
-                {
-                    continue;
-                }
-
-                if (this.searchQuery.Length > 0 && !body.bodyName.ToLower().Contains(this.searchQuery))
-                {
-                    continue;
-                }
-
-                count++;
-                if (GUILayout.Button(body.bodyName, this.ButtonStyle, GUILayout.Width(this.ContentWidth)))
-                {
-                    this.SetTargetAs(body);
-                }
-            }
-            return count;
-        }
-
-        /// <summary>
-        ///     Draws the targetable planets.
-        /// </summary>
-        private int DrawPlanets()
-        {
-            var count = 0;
-            foreach (var body in FlightGlobals.Bodies)
-            {
-                if (FlightGlobals.ActiveVessel.mainBody.referenceBody != body.referenceBody || body == Planetarium.fetch.Sun || body == FlightGlobals.ActiveVessel.mainBody)
-                {
-                    continue;
-                }
-
-                if (this.searchQuery.Length > 0 && !body.bodyName.ToLower().Contains(this.searchQuery))
-                {
-                    continue;
-                }
-
-                count++;
-                if (GUILayout.Button(body.GetName(), this.ButtonStyle, GUILayout.Width(this.ContentWidth)))
-                {
-                    this.SetTargetAs(body);
-                }
-            }
-            return count;
+        ///     Draws the button list of target types.
+        /// </summary>
+        private void DrawTypes()
+        {
+            this.typeButtonWidth = Mathf.Round(this.ContentWidth * 0.5f);
+
+            GUILayout.BeginHorizontal();
+            if (GUILayout.Button("Celestial Bodies", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAsBody();
+            }
+            if (GUILayout.Button("Debris", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.Debris);
+            }
+            GUILayout.EndHorizontal();
+
+            GUILayout.BeginHorizontal();
+            if (GUILayout.Button("Probes", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.Probe);
+            }
+
+            if (GUILayout.Button("Rovers", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.Rover);
+            }
+            GUILayout.EndHorizontal();
+
+            GUILayout.BeginHorizontal();
+            if (GUILayout.Button("Landers", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.Lander);
+            }
+            if (GUILayout.Button("Ships", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.Ship);
+            }
+            GUILayout.EndHorizontal();
+
+            GUILayout.BeginHorizontal();
+            if (GUILayout.Button("Stations", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.Station);
+            }
+            if (GUILayout.Button("Bases", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.Base);
+            }
+            GUILayout.EndHorizontal();
+
+            GUILayout.BeginHorizontal();
+            if (GUILayout.Button("EVAs", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.EVA);
+            }
+            if (GUILayout.Button("Flags", this.ButtonStyle, GUILayout.Width(this.typeButtonWidth)))
+            {
+                this.SetTypeAs(VesselType.Flag);
+            }
+            GUILayout.EndHorizontal();
         }
 
         /// <summary>
@@ -341,18 +354,6 @@
             return count;
         }
 
-        private void SetTypeAs(VesselType vesselType)
-        {
-            this.vesselType = vesselType;
-            this.ResizeRequested = true;
-        }
-
-        private void SetTypeAsBody()
-        {
-            this.typeIsBody = true;
-            this.ResizeRequested = true;
-        }
-
         private void SetTargetAs(ITargetable target)
         {
             FlightGlobals.fetch.SetVesselTarget(target);
@@ -360,6 +361,20 @@
             this.ResizeRequested = true;
         }
 
+        private void SetTypeAs(VesselType vesselType)
+        {
+            this.vesselType = vesselType;
+            this.ResizeRequested = true;
+        }
+
+        private void SetTypeAsBody()
+        {
+            this.typeIsBody = true;
+            this.ResizeRequested = true;
+        }
+
+        #endregion
+
         #endregion
     }
 }

 Binary files a/Output/KerbalEngineer/KerbalEngineer.dll and b/Output/KerbalEngineer/KerbalEngineer.dll differ