From 94d17a68093d623a07018a5279175cfcf56ec409 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Sun, 2 Aug 2020 16:35:50 -0700 Subject: [PATCH] textlinedisplaycache: short-circuit y_range invalidation If we have a y==-1 then we are generally invalidating the whole textview. For this case, we can just discard the entire GtkTextLineDisplay cache. Fixes #2975 --- gtk/gtktextlinedisplaycache.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk/gtktextlinedisplaycache.c b/gtk/gtktextlinedisplaycache.c index fa595644ff..91ce0d98e4 100644 --- a/gtk/gtktextlinedisplaycache.c +++ b/gtk/gtktextlinedisplaycache.c @@ -663,6 +663,12 @@ gtk_text_line_display_cache_invalidate_y_range (GtkTextLineDisplayCache *cache, STAT_INC (cache->inval_by_y_range); + if (y < 0) + { + gtk_text_line_display_cache_invalidate (cache); + return; + } + btree = _gtk_text_buffer_get_btree (layout->buffer); iter = find_iter_at_at_y (cache, layout, y);