From 3af4cb5c95b911f67a1ab3f649d59957fd9135ff Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 22 Jan 2024 20:15:53 +0000 Subject: [PATCH] Float the desktop number over window icons --- modules/desktops/desktops.go | 2 +- modules/desktops/pager.go | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/modules/desktops/desktops.go b/modules/desktops/desktops.go index 6ac09b8a..f5044055 100644 --- a/modules/desktops/desktops.go +++ b/modules/desktops/desktops.go @@ -60,7 +60,7 @@ func (d *desktops) Shortcuts() map[*fynedesk.Shortcut]func() { } func (d *desktops) StatusAreaWidget() fyne.CanvasObject { - return container.NewStack(d.gui.ui, d.gui.wins) + return container.NewStack(d.gui.buttons, d.gui.wins, d.gui.labels) } func (d *desktops) setDesktop(id int) { diff --git a/modules/desktops/pager.go b/modules/desktops/pager.go index 5eb0515a..31dc2a19 100644 --- a/modules/desktops/pager.go +++ b/modules/desktops/pager.go @@ -13,26 +13,30 @@ import ( ) type pager struct { - ui fyne.CanvasObject - wins *fyne.Container + buttons, labels *fyne.Container + wins *fyne.Container } func newPager(d *desktops) *pager { p := &pager{wins: container.NewWithoutLayout()} - items := make([]fyne.CanvasObject, deskCount) + buttons := make([]fyne.CanvasObject, deskCount) + labels := make([]fyne.CanvasObject, deskCount) for i := 0; i < deskCount; i++ { id := strconv.Itoa(i + 1) deskID := i - items[i] = widget.NewButton(id, func() { + buttons[i] = widget.NewButton("", func() { d.setDesktop(deskID) }) + labels[i] = widget.NewLabelWithStyle(id, fyne.TextAlignCenter, fyne.TextStyle{Bold: true}) } if fynedesk.Instance() != nil && fynedesk.Instance().Settings().NarrowWidgetPanel() { - p.ui = container.NewGridWithColumns(1, items...) + p.buttons = container.NewGridWithColumns(1, buttons...) + p.labels = container.NewGridWithColumns(1, labels...) } else { - p.ui = container.NewGridWithColumns(4, items...) + p.buttons = container.NewGridWithColumns(4, buttons...) + p.labels = container.NewGridWithColumns(4, labels...) } p.refresh() fynedesk.Instance().WindowManager().AddStackListener(p) @@ -66,15 +70,20 @@ func (p *pager) refreshFrom(oldID int) { wins := fynedesk.Instance().WindowManager().Windows() var rects []fyne.CanvasObject - for i, b := range p.ui.(*fyne.Container).Objects { + for i, b := range p.buttons.Objects { + l := p.labels.Objects[i] if i == desk.Desktop() { b.(*widget.Button).Importance = widget.HighImportance + l.(*widget.Label).Importance = widget.LowImportance } else { b.(*widget.Button).Importance = widget.MediumImportance + l.(*widget.Label).Importance = widget.MediumImportance } + b.Refresh() + l.Refresh() } - pivot := p.ui.(*fyne.Container).Objects[oldID] + pivot := p.buttons.Objects[oldID] for j := len(wins) - 1; j >= 0; j-- { win := wins[j]