tweak drop target overlay color and make stack fully constraint children by the first child

K Simmons created

's size

Change summary

crates/gpui/src/elements/stack.rs | 14 +++++++++++---
crates/workspace/src/workspace.rs |  1 +
styles/src/styleTree/workspace.ts |  4 ++--
3 files changed, 14 insertions(+), 5 deletions(-)

Detailed changes

crates/gpui/src/elements/stack.rs 🔗

@@ -7,6 +7,8 @@ use crate::{
     DebugContext, Element, ElementBox, LayoutContext, PaintContext, SizeConstraint,
 };
 
+/// Element which renders it's children in a stack on top of each other.
+/// The first child determines the size of the others.
 #[derive(Default)]
 pub struct Stack {
     children: Vec<ElementBox>,
@@ -28,10 +30,16 @@ impl Element for Stack {
         cx: &mut LayoutContext,
     ) -> (Vector2F, Self::LayoutState) {
         let mut size = constraint.min;
-        for child in &mut self.children {
-            size = size.max(child.layout(constraint, cx));
-            constraint.min = size;
+        let mut children = self.children.iter_mut();
+        if let Some(bottom_child) = children.next() {
+            size = bottom_child.layout(constraint, cx);
+            constraint = SizeConstraint::strict(size);
+        }
+
+        for child in children {
+            child.layout(constraint, cx);
         }
+
         (size, ())
     }
 

crates/workspace/src/workspace.rs 🔗

@@ -126,6 +126,7 @@ pub struct OpenSharedScreen {
     pub peer_id: PeerId,
 }
 
+#[derive(Clone, PartialEq)]
 pub struct SplitWithItem {
     from: WeakViewHandle<Pane>,
     pane_to_split: WeakViewHandle<Pane>,

styles/src/styleTree/workspace.ts 🔗

@@ -228,8 +228,8 @@ export default function workspace(colorScheme: ColorScheme) {
       },
     },
     dropTargetOverlayColor: withOpacity(
-      foreground(layer),
-      0.6
+      foreground(layer, "variant"),
+      0.5
     ),
   };
 }