feat: increase instance list row height

This commit is contained in:
QiuSW
2026-07-28 07:54:37 +08:00
parent 47639a6f0f
commit 375abc0d82
5 changed files with 41 additions and 12 deletions
+10 -2
View File
@@ -40,6 +40,10 @@ const (
instancePortColumnWeight = 9
instanceStatusColumnWeight = 10
instanceActionColumnWeight = 18
instanceActionIconSize = unit.Dp(16)
instanceActionIconInset = unit.Dp(7)
instanceStandardRowHeight = instanceActionIconSize + 2*instanceActionIconInset
instanceListRowMinHeight = 2 * instanceStandardRowHeight
)
var (
@@ -1137,6 +1141,10 @@ func (s *Shell) instanceTable(gtx layout.Context) layout.Dimensions {
func (s *Shell) instanceListRow(row InstanceRow) layout.Widget {
return func(gtx layout.Context) layout.Dimensions {
minimumHeight := gtx.Dp(instanceListRowMinHeight)
if gtx.Constraints.Min.Y < minimumHeight {
gtx.Constraints.Min.Y = minimumHeight
}
return layout.Background{}.Layout(gtx,
func(gtx layout.Context) layout.Dimensions {
if s.selectedInstanceID == row.ID {
@@ -1305,8 +1313,8 @@ func (s *Shell) instanceIconButton(click *widget.Clickable, icon *widget.Icon, d
gtx = gtx.Disabled()
}
style := material.IconButton(s.theme, click, icon, description)
style.Size = unit.Dp(16)
style.Inset = layout.UniformInset(unit.Dp(7))
style.Size = instanceActionIconSize
style.Inset = layout.UniformInset(instanceActionIconInset)
style.Background = color.NRGBA{}
style.Color = iconColor
return style.Layout(gtx)
+21
View File
@@ -3,6 +3,7 @@ package ui
import (
"context"
"errors"
"image"
"path/filepath"
"strings"
"sync/atomic"
@@ -10,6 +11,8 @@ import (
"time"
"gioui.org/layout"
"gioui.org/op"
"gioui.org/unit"
"gioui.org/widget/material"
)
@@ -83,6 +86,24 @@ func TestInstanceListColumnWeightsPrioritizeDirectoryAndCompactAction(t *testing
}
}
func TestInstanceListRowsUseDoubleStandardHeightAtEveryDPIScale(t *testing.T) {
if instanceListRowMinHeight != 2*instanceStandardRowHeight {
t.Fatalf("row height = %v, want two times standard height %v", instanceListRowMinHeight, instanceStandardRowHeight)
}
shell := NewShell(material.NewTheme())
for _, scale := range []float32{1, 2} {
gtx := layout.Context{
Ops: new(op.Ops),
Constraints: layout.Constraints{Max: image.Pt(1200, 400)},
Metric: unit.Metric{PxPerDp: scale, PxPerSp: scale},
}
dimensions := shell.instanceListRow(shell.rows[0])(gtx)
if want := gtx.Dp(instanceListRowMinHeight); dimensions.Size.Y != want {
t.Fatalf("scale %.0f row height = %d, want %d", scale, dimensions.Size.Y, want)
}
}
}
func TestShellDeletesOnlyTheRequestedInstance(t *testing.T) {
shell := NewShell(material.NewTheme())
target := shell.rows[1]