From 631cda9fc838eba59da65a1cad885efed03ea27e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 17 Jan 2025 18:24:33 +0100 Subject: [PATCH] Fix mac/Quartz drawRect full exposure When full-draw is set, use the `rect` passed as argument to `drawRect` and ignore `drawn_rects` invalidation. This may fix some missing redraws when switching tabs. --- libs/tk/ydk/quartz/GdkQuartzView.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libs/tk/ydk/quartz/GdkQuartzView.c b/libs/tk/ydk/quartz/GdkQuartzView.c index 392ab2a856..cdd056881e 100644 --- a/libs/tk/ydk/quartz/GdkQuartzView.c +++ b/libs/tk/ydk/quartz/GdkQuartzView.c @@ -759,7 +759,13 @@ static int showInvalidation = 0; return; } - if (!impl->needs_display_region || gdk_quartz_get_use_cocoa_invalidation() || full_draw) { + if (full_draw) { + GdkRectangle r = { rect.origin.x, rect.origin.y, rect.size.width, rect.size.height }; + region = gdk_region_rectangle (&r); + if (impl->needs_display_region) { + gdk_region_destroy (impl->needs_display_region); + } + } else if (!impl->needs_display_region || gdk_quartz_get_use_cocoa_invalidation()) { gint nrects; GdkRectangle* rects; [self getRectsBeingDrawn: &drawn_rects count: &count];