feat(ui): draggable divider between the jobs list and the details pane
The jobs view pinned the sidebar in a Border left slot, so it rendered at its MinSize and nothing else: the user could never trade list width for detail width, and the details value column had no escape from the width the metadata grid left it. container.NewHSplit replaces the Border. Either pane can now be dragged, and container.Split clamps both at their own content minimum, so the divider degrades a pane rather than clipping it. The initial offset is derived, not a literal: SetOffset takes a ratio, but the sidebar's natural width is absolute (448 px), and a ratio that fits 1024 px would hand the sidebar 700 px at 1600 px. initialSplitOffset divides that width by the default window width less the divider, which opens the sidebar at exactly its content width with the rest to details. The divider position is not persisted; a restart reopens at the computed default. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+6
-1
@@ -345,6 +345,11 @@ func newJobsView(w fyne.Window, svc *app.Service) (fyne.CanvasObject, func()) {
|
||||
sidebarHeader := container.NewVBox(globalControls, widget.NewSeparator(), filterRow, toolbar)
|
||||
sidebar := container.NewBorder(sidebarHeader, nil, nil, nil, list)
|
||||
|
||||
panel := container.NewBorder(nil, nil, sidebar, nil, container.NewPadded(dp.container()))
|
||||
// A split rather than a Border left slot: the border pinned the sidebar at its
|
||||
// MinSize forever, so the user could never trade list width for detail width.
|
||||
// The divider lets either pane grow, and neither can be dragged below its own
|
||||
// content minimum.
|
||||
panel := container.NewHSplit(sidebar, container.NewPadded(dp.container()))
|
||||
panel.SetOffset(initialSplitOffset(sidebar.MinSize().Width))
|
||||
return panel, refreshView
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user