Make dock not eagerly steal focus from sub items

Mikayla Maki created

Change summary

crates/gpui/src/app.rs            | 19 ++++++++++++++++++-
crates/workspace/src/workspace.rs |  3 ++-
2 files changed, 20 insertions(+), 2 deletions(-)

Detailed changes

crates/gpui/src/app.rs 🔗

@@ -3963,6 +3963,15 @@ impl Drop for AnyViewHandle {
     }
 }
 
+impl Debug for AnyViewHandle {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_struct("AnyViewHandle")
+            .field("window_id", &self.window_id)
+            .field("view_id", &self.view_id)
+            .finish()
+    }
+}
+
 pub struct AnyModelHandle {
     model_id: usize,
     model_type: TypeId,
@@ -4072,12 +4081,20 @@ impl AnyWeakModelHandle {
     }
 }
 
-#[derive(Debug, Copy)]
+#[derive(Copy)]
 pub struct WeakViewHandle<T> {
     any_handle: AnyWeakViewHandle,
     view_type: PhantomData<T>,
 }
 
+impl<T> Debug for WeakViewHandle<T> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_struct(&format!("WeakViewHandle<{}>", type_name::<T>()))
+            .field("any_handle", &self.any_handle)
+            .finish()
+    }
+}
+
 impl<T> WeakHandle for WeakViewHandle<T> {
     fn id(&self) -> usize {
         self.view_id

crates/workspace/src/workspace.rs 🔗

@@ -1600,8 +1600,9 @@ impl Workspace {
             });
             self.active_item_path_changed(cx);
 
+
             if &pane == self.dock_pane() {
-                Dock::show(self, true, cx);
+                Dock::show(self, false, cx);
             } else {
                 self.last_active_center_pane = Some(pane.downgrade());
                 if self.dock.is_anchored_at(DockAnchor::Expanded) {