From fe6a635c3a22b978c775e4bf96a1d1f4e294676c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 22 Mar 2024 13:11:46 -0600 Subject: [PATCH] provide a GDK function to enable/disable use of Cocoa-provided rect in drawRect --- libs/tk/ydk/quartz/GdkQuartzView.c | 6 +++--- libs/tk/ydk/quartz/gdkglobals-quartz.c | 14 ++++++++++++++ libs/tk/ydk/ydk/quartz/gdk/gdkquartz.h | 2 ++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/libs/tk/ydk/quartz/GdkQuartzView.c b/libs/tk/ydk/quartz/GdkQuartzView.c index 7b279c87a1..722537dddc 100644 --- a/libs/tk/ydk/quartz/GdkQuartzView.c +++ b/libs/tk/ydk/quartz/GdkQuartzView.c @@ -717,17 +717,17 @@ return; } - if (!impl->needs_display_region) { + if (!impl->needs_display_region || gdk_quartz_get_use_cocoa_invalidation()) { [self getRectsBeingDrawn: &drawn_rects count: &count]; region = gdk_region_new (); - + for (i = 0; i < count; i++) { gdk_rect.x = drawn_rects[i].origin.x; gdk_rect.y = drawn_rects[i].origin.y; gdk_rect.width = drawn_rects[i].size.width; gdk_rect.height = drawn_rects[i].size.height; - + gdk_region_union_with_rect (region, &gdk_rect); } } else { diff --git a/libs/tk/ydk/quartz/gdkglobals-quartz.c b/libs/tk/ydk/quartz/gdkglobals-quartz.c index 764eb10880..a784962c1c 100644 --- a/libs/tk/ydk/quartz/gdkglobals-quartz.c +++ b/libs/tk/ydk/quartz/gdkglobals-quartz.c @@ -27,6 +27,8 @@ GdkDisplay *_gdk_display = NULL; GdkScreen *_gdk_screen = NULL; GdkWindow *_gdk_root = NULL; +static int _gdk_quartz_use_cocoa_invalidation = FALSE; + GdkOSXVersion gdk_quartz_osx_version (void) { @@ -53,3 +55,15 @@ gdk_quartz_osx_version (void) else return vkey; } + +void +gdk_quartz_set_use_cocoa_invalidation (int yn) +{ + _gdk_quartz_use_cocoa_invalidation = yn; +} + +int +gdk_quartz_get_use_cocoa_invalidation (void) +{ + return _gdk_quartz_use_cocoa_invalidation; +} diff --git a/libs/tk/ydk/ydk/quartz/gdk/gdkquartz.h b/libs/tk/ydk/ydk/quartz/gdk/gdkquartz.h index 57f7a7b3fb..6f4aa4ab57 100644 --- a/libs/tk/ydk/ydk/quartz/gdk/gdkquartz.h +++ b/libs/tk/ydk/ydk/quartz/gdk/gdkquartz.h @@ -68,6 +68,8 @@ NSImage *gdk_quartz_pixbuf_to_ns_image_libgtk_only (GdkPixbuf id gdk_quartz_drag_context_get_dragging_info_libgtk_only (GdkDragContext *context); NSEvent *gdk_quartz_event_get_nsevent (GdkEvent *event); GdkOSXVersion gdk_quartz_osx_version (void); +void gdk_quartz_set_use_cocoa_invalidation (int); +int gdk_quartz_get_use_cocoa_invalidation (void); GdkAtom gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type); NSString *gdk_quartz_target_to_pasteboard_type_libgtk_only (const gchar *target);