@@ -7085,7 +7085,17 @@ impl Workspace {
}
fn resize_left_dock(&mut self, new_size: Pixels, window: &mut Window, cx: &mut App) {
- let size = new_size.min(self.bounds.right() - RESIZE_HANDLE_SIZE);
+ let workspace_width = self.bounds.size.width;
+ let mut size = new_size.min(workspace_width - RESIZE_HANDLE_SIZE);
+
+ self.right_dock.read_with(cx, |right_dock, cx| {
+ let right_dock_size = right_dock
+ .active_panel_size(window, cx)
+ .unwrap_or(Pixels::ZERO);
+ if right_dock_size + size > workspace_width {
+ size = workspace_width - right_dock_size
+ }
+ });
self.left_dock.update(cx, |left_dock, cx| {
if WorkspaceSettings::get_global(cx)
@@ -7100,13 +7110,14 @@ impl Workspace {
}
fn resize_right_dock(&mut self, new_size: Pixels, window: &mut Window, cx: &mut App) {
- let mut size = new_size.max(self.bounds.left() - RESIZE_HANDLE_SIZE);
+ let workspace_width = self.bounds.size.width;
+ let mut size = new_size.min(workspace_width - RESIZE_HANDLE_SIZE);
self.left_dock.read_with(cx, |left_dock, cx| {
let left_dock_size = left_dock
.active_panel_size(window, cx)
.unwrap_or(Pixels::ZERO);
- if left_dock_size + size > self.bounds.right() {
- size = self.bounds.right() - left_dock_size
+ if left_dock_size + size > workspace_width {
+ size = workspace_width - left_dock_size
}
});
self.right_dock.update(cx, |right_dock, cx| {
@@ -7667,6 +7678,7 @@ impl Render for Workspace {
{
workspace.previous_dock_drag_coordinates =
Some(e.event.position);
+
match e.drag(cx).0 {
DockPosition::Left => {
workspace.resize_left_dock(