From c098d33e5b81b4c4458cfb6ca0a309365c918328 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Fri, 31 Jan 2025 14:56:49 +0000 Subject: [PATCH] Fixup tap scrolls to top on first selection (#5481) --- widget/tree.go | 10 +++++----- widget/tree_internal_test.go | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/widget/tree.go b/widget/tree.go index 569130f89b..085977eedb 100644 --- a/widget/tree.go +++ b/widget/tree.go @@ -876,14 +876,14 @@ func (n *treeNode) Tapped(*fyne.PointEvent) { } n.tree.Select(n.uid) - if !fyne.CurrentDevice().IsMobile() { - canvas := fyne.CurrentApp().Driver().CanvasForObject(n.tree) - if canvas != nil { + canvas := fyne.CurrentApp().Driver().CanvasForObject(n.tree) + if canvas != nil && canvas.Focused() != n.tree { + n.tree.currentFocus = n.uid + if !fyne.CurrentDevice().IsMobile() { canvas.Focus(n.tree) } - n.tree.currentFocus = n.uid - n.Refresh() } + n.Refresh() } func (n *treeNode) partialRefresh() { diff --git a/widget/tree_internal_test.go b/widget/tree_internal_test.go index 5f99b008f5..512e62edc4 100644 --- a/widget/tree_internal_test.go +++ b/widget/tree_internal_test.go @@ -697,6 +697,7 @@ func TestTree_Tap(t *testing.T) { test.Tap(getBranch(t, tree, "A")) assert.True(t, selected, "Branch should have been selected") + assert.Equal(t, "A", tree.currentFocus) }) t.Run("BranchIcon", func(t *testing.T) { data := make(map[string][]string) @@ -725,6 +726,7 @@ func TestTree_Tap(t *testing.T) { } test.Tap(getLeaf(t, tree, "A")) assert.True(t, selected, "Leaf should have been selected") + assert.Equal(t, "A", tree.currentFocus) }) }