workspace: Add setting to make dock resize apply to all panels (#30551)
Re: #19015 Close #12667 When dragging a dock’s resize handle, only the active panel grows or shrinks. This patch introduces an opt-in behaviour that lets users resize every panel hosted by that dock at once. Release Notes: - Added new `resize_all_panels_in_dock` setting to optionally resize every panel in a dock together. Co-authored-by: Mikayla Maki <mikayla@zed.dev>
This commit is contained in:
parent
ff6ac60bad
commit
8c1b549683
4 changed files with 46 additions and 3 deletions
|
@ -6240,7 +6240,14 @@ fn resize_bottom_dock(
|
|||
let size =
|
||||
new_size.min(workspace.bounds.bottom() - RESIZE_HANDLE_SIZE - workspace.bounds.top());
|
||||
workspace.bottom_dock.update(cx, |bottom_dock, cx| {
|
||||
bottom_dock.resize_active_panel(Some(size), window, cx);
|
||||
if WorkspaceSettings::get_global(cx)
|
||||
.resize_all_panels_in_dock
|
||||
.contains(&DockPosition::Bottom)
|
||||
{
|
||||
bottom_dock.resize_all_panels(Some(size), window, cx);
|
||||
} else {
|
||||
bottom_dock.resize_active_panel(Some(size), window, cx);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -6252,7 +6259,14 @@ fn resize_right_dock(
|
|||
) {
|
||||
let size = new_size.max(workspace.bounds.left() - RESIZE_HANDLE_SIZE);
|
||||
workspace.right_dock.update(cx, |right_dock, cx| {
|
||||
right_dock.resize_active_panel(Some(size), window, cx);
|
||||
if WorkspaceSettings::get_global(cx)
|
||||
.resize_all_panels_in_dock
|
||||
.contains(&DockPosition::Right)
|
||||
{
|
||||
right_dock.resize_all_panels(Some(size), window, cx);
|
||||
} else {
|
||||
right_dock.resize_active_panel(Some(size), window, cx);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -6265,7 +6279,14 @@ fn resize_left_dock(
|
|||
let size = new_size.min(workspace.bounds.right() - RESIZE_HANDLE_SIZE);
|
||||
|
||||
workspace.left_dock.update(cx, |left_dock, cx| {
|
||||
left_dock.resize_active_panel(Some(size), window, cx);
|
||||
if WorkspaceSettings::get_global(cx)
|
||||
.resize_all_panels_in_dock
|
||||
.contains(&DockPosition::Left)
|
||||
{
|
||||
left_dock.resize_all_panels(Some(size), window, cx);
|
||||
} else {
|
||||
left_dock.resize_active_panel(Some(size), window, cx);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue