48 lines
1.3 KiB
Diff
48 lines
1.3 KiB
Diff
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)
|