diff options
Diffstat (limited to 'packages/patches/gtk')
-rw-r--r-- | packages/patches/gtk/gdk-empty-clip.patch | 47 | ||||
-rw-r--r-- | packages/patches/gtk/gdkemptypath.patch | 15 | ||||
-rw-r--r-- | packages/patches/gtk/gdkwindow-quartz.patch | 14 |
3 files changed, 47 insertions, 29 deletions
diff --git a/packages/patches/gtk/gdk-empty-clip.patch b/packages/patches/gtk/gdk-empty-clip.patch new file mode 100644 index 0000000..e71f22f --- /dev/null +++ b/packages/patches/gtk/gdk-empty-clip.patch @@ -0,0 +1,47 @@ +diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c +index f058570..c8b791b 100644 +--- a/gdk/gdkwindow.c ++++ b/gdk/gdkwindow.c +@@ -3744,7 +3744,7 @@ start_draw_helper (GdkDrawable *drawable, + impl = private->impl; + } + +- if (clip) ++ if (clip && !gdk_region_empty (clip)) + _gdk_gc_add_drawable_clip (gc, + clip_region_tag, clip, + /* If there was a clip origin set appart from the +@@ -5417,18 +5417,25 @@ _gdk_window_process_updates_recurse (GdkWindow *window, + { + if (private->event_mask & GDK_EXPOSURE_MASK) + { ++ GdkRegion *region_copy = gdk_region_copy (expose_region); + GdkEvent event; + +- event.expose.type = GDK_EXPOSE; +- event.expose.window = g_object_ref (window); +- event.expose.send_event = FALSE; +- event.expose.count = 0; +- event.expose.region = expose_region; +- gdk_region_get_clipbox (expose_region, &event.expose.area); ++ gdk_region_intersect (region_copy, private->clip_region_with_children); ++ if (!gdk_region_empty (region_copy)) ++ { ++ event.expose.type = GDK_EXPOSE; ++ event.expose.window = g_object_ref (window); ++ event.expose.send_event = FALSE; ++ event.expose.count = 0; ++ event.expose.region = expose_region; ++ gdk_region_get_clipbox (expose_region, &event.expose.area); ++ ++ (*_gdk_event_func) (&event, _gdk_event_data); + +- (*_gdk_event_func) (&event, _gdk_event_data); ++ g_object_unref (window); ++ } + +- g_object_unref (window); ++ gdk_region_destroy (region_copy); + } + else if (private->bg_pixmap != GDK_NO_BG && + private->window_type != GDK_WINDOW_FOREIGN) diff --git a/packages/patches/gtk/gdkemptypath.patch b/packages/patches/gtk/gdkemptypath.patch deleted file mode 100644 index b1ba890..0000000 --- a/packages/patches/gtk/gdkemptypath.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/gdk/quartz/gdkgc-quartz.c b/gdk/quartz/gdkgc-quartz.c -index 21cc598..9b79be0 100644 ---- a/gdk/quartz/gdkgc-quartz.c -+++ b/gdk/quartz/gdkgc-quartz.c -@@ -463,6 +463,10 @@ _gdk_quartz_gc_update_cg_context (GdkGC *gc, - gdk_region_get_rectangles (_gdk_gc_get_clip_region (gc), - &rects, &n_rects); - -+ /* No rects, nothing to do */ -+ if (n_rects == 0) -+ return; -+ - if (n_rects == 1) - cg_rects = ▭ - else diff --git a/packages/patches/gtk/gdkwindow-quartz.patch b/packages/patches/gtk/gdkwindow-quartz.patch deleted file mode 100644 index abf15e9..0000000 --- a/packages/patches/gtk/gdkwindow-quartz.patch +++ /dev/null @@ -1,14 +0,0 @@ -git --diff a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c -index efc0672..85a6ef1 100644 ---- a/gdk/quartz/gdkwindow-quartz.c -+++ b/gdk/quartz/gdkwindow-quartz.c -@@ -258,6 +258,9 @@ gdk_window_impl_quartz_begin_paint_region (GdkPaintable *paintable, - goto done; - - gdk_region_get_rectangles (clipped_and_offset_region, &rects, &n_rects); -+/* No rects, no point in going further */ -+ if (n_rects == 0) -+ goto done; - - if (bg_pixmap == NULL) - { |