Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/bockbuild.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'packages/patches/gtk/gdk-empty-clip.patch')
-rw-r--r--packages/patches/gtk/gdk-empty-clip.patch47
1 files changed, 47 insertions, 0 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)