From 56db81e7d4891b278209295f2a7c9e0bbdedb01c Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 4 Jul 2023 10:55:20 +0100 Subject: [PATCH] Avoid possible re-draw requests when our content has not changed --- widget/textgrid.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/widget/textgrid.go b/widget/textgrid.go index c4ae3a5699..6204424780 100644 --- a/widget/textgrid.go +++ b/widget/textgrid.go @@ -337,6 +337,7 @@ type textGridRenderer struct { cellSize fyne.Size objects []fyne.CanvasObject + current fyne.Canvas } func (t *textGridRenderer) appendTextCell(str rune) { @@ -369,9 +370,12 @@ func (t *textGridRenderer) setCellRune(str rune, pos int, style, rowStyle TextGr } else if rowStyle != nil && rowStyle.TextColor() != nil { fg = rowStyle.TextColor() } - text.Text = string(str) - text.Color = fg - canvas.Refresh(text) + newStr := string(str) + if text.Text != newStr || text.Color != fg { + text.Text = newStr + text.Color = fg + canvas.Refresh(text) + } rect := t.objects[pos*2].(*canvas.Rectangle) bg := color.Color(color.Transparent) @@ -380,8 +384,10 @@ func (t *textGridRenderer) setCellRune(str rune, pos int, style, rowStyle TextGr } else if rowStyle != nil && rowStyle.BackgroundColor() != nil { bg = rowStyle.BackgroundColor() } - rect.FillColor = bg - canvas.Refresh(rect) + if rect.FillColor != bg { + rect.FillColor = bg + canvas.Refresh(rect) + } } func (t *textGridRenderer) addCellsIfRequired() {