linux-packaging-mono/external/bockbuild/packages/patches/gtk/0006-gtk-paint-only-the-exposed-region-in-gdk_window_expo.patch

48 lines
1.3 KiB
Diff
Raw Normal View History

From 37f07504f203aec1345a75abeb07172259bd5973 Mon Sep 17 00:00:00 2001
From: Michael Natterer <mitch@gimp.org>
Date: Sun, 27 May 2012 22:51:33 +0200
Subject: [PATCH 06/68] gtk: paint only the exposed region in
gdk_window_expose()
---
gtk/gtkwindow.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 7094eb6..89c91da 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -6631,13 +6631,28 @@ gtk_window_paint (GtkWidget *widget,
GTK_SHADOW_NONE, area, widget, "base", 0, 0, -1, -1);
}
+static void
+gtk_window_paint_region (GtkWidget *widget,
+ GdkRegion *region)
+{
+ int i, n_rectangles;
+ GdkRectangle *rectangles = NULL;
+
+ gdk_region_get_rectangles (region, &rectangles, &n_rectangles);
+
+ for (i = 0; i < n_rectangles; i++)
+ gtk_window_paint (widget, &rectangles[i]);
+
+ g_free (rectangles);
+}
+
static gint
gtk_window_expose (GtkWidget *widget,
GdkEventExpose *event)
{
if (!gtk_widget_get_app_paintable (widget))
- gtk_window_paint (widget, &event->area);
-
+ gtk_window_paint_region (widget, event->region);
+
if (GTK_WIDGET_CLASS (gtk_window_parent_class)->expose_event)
return GTK_WIDGET_CLASS (gtk_window_parent_class)->expose_event (widget, event);
--
1.7.10.2 (Apple Git-33)