From a0fefe37a0369cdcf1907ed5c75e861fb257cc64 Mon Sep 17 00:00:00 2001 From: wangrlinrbo Date: Sun, 17 May 2026 01:23:54 +0800 Subject: [PATCH] Add FrameRow FrameCol and Tabs NewTabButtonOnClick --- core/framecol.go | 24 ++++++++++++++++++++++++ core/framerow.go | 19 +++++++++++++++++++ core/tabs.go | 21 +++++++++++++-------- 3 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 core/framecol.go create mode 100644 core/framerow.go diff --git a/core/framecol.go b/core/framecol.go new file mode 100644 index 0000000000..3f6a9f00fa --- /dev/null +++ b/core/framecol.go @@ -0,0 +1,24 @@ +package core + +import ( + "cogentcore.org/core/styles" + "cogentcore.org/core/tree" +) + +func NewFrameCol(parent ...tree.Node) *Frame { + frm := NewFrame(parent...) + frm.Styler(func(s *styles.Style) { + //s.GrowWrap = false + s.Grow.Set(1, 1) + s.Direction = styles.Column + s.Grow.X = 1 + s.Grow.Y = 1 + s.Border.Radius = styles.BorderRadiusFull + s.Gap.Zero() + s.Align.Content = styles.Start + s.Align.Items = styles.Start + s.Overflow.Set(styles.OverflowAuto) + }) + return frm +} + diff --git a/core/framerow.go b/core/framerow.go new file mode 100644 index 0000000000..d0b5a63e33 --- /dev/null +++ b/core/framerow.go @@ -0,0 +1,19 @@ +package core + +import ( + "cogentcore.org/core/styles" + "cogentcore.org/core/styles/units" + "cogentcore.org/core/tree" +) + +func NewFrameRow(parent ...tree.Node) *Frame { + frm := NewFrame(parent...) + frm.Styler(func(s *styles.Style) { + s.Overflow.Set(styles.OverflowHidden) // no scrollbars! + s.Gap.Set(units.Dp(4)) + s.Direction = styles.Row + s.Grow.Set(1, 0) + s.Wrap = true + }) + return frm +} diff --git a/core/tabs.go b/core/tabs.go index 34dce8f1cf..e7c985fd1c 100644 --- a/core/tabs.go +++ b/core/tabs.go @@ -38,6 +38,7 @@ type Tabs struct { // NewTabButton is whether to show a new tab button at the end of the list of tabs. NewTabButton bool + NewTabButtonOnClick func(e events.Event) // NewTabFunc is a function that will be called when the NewTabButton // is clicked to create a new tab, with the index of this new tab. @@ -159,14 +160,18 @@ func (ts *Tabs) Init() { } ntb := NewButton(w).SetType(ButtonAction).SetIcon(icons.Add) ntb.SetTooltip("Add a new tab").SetName("new-tab-button") - ntb.OnClick(func(e events.Event) { - ts.NewTab("New tab") - idx := ts.NumTabs() - 1 - if ts.NewTabFunc != nil { - ts.NewTabFunc(idx) - } - ts.SelectTabIndex(idx) - }) + if ts.NewTabButtonOnClick == nil { + ntb.OnClick(func(e events.Event) { + ts.NewTab("New tab") + idx := ts.NumTabs() - 1 + if ts.NewTabFunc != nil { + ts.NewTabFunc(idx) + } + ts.SelectTabIndex(idx) + }) + } else { + ntb.OnClick(ts.NewTabButtonOnClick) + } }) }) tree.AddAt(p, "frame", func(w *Frame) {