[gtk+] Send expose events on foreign windows
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtk+] Send expose events on foreign windows
- Date: Thu, 24 Sep 2009 14:48:42 +0000 (UTC)
commit afc19eb4a7e4ec4420dc202e0da0fe2c4d1ca7c2
Author: Alexander Larsson <alexl redhat com>
Date: Thu Sep 24 16:42:52 2009 +0200
Send expose events on foreign windows
F-Spot needs this as it draws on a foreign (screensaver) window, which
used to work.
I believe this is safe, because in all typical cases the expose
mask will not be set, so we won't do anything, and its what we used to
do.
gdk/gdkwindow.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 500bf65..3231dea 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -5023,12 +5023,17 @@ _gdk_window_process_updates_recurse (GdkWindow *window,
g_object_unref (window);
}
- else if (private->bg_pixmap != GDK_NO_BG)
+ else if (private->bg_pixmap != GDK_NO_BG &&
+ private->window_type != GDK_WINDOW_FOREIGN)
{
/* No exposure mask set, so nothing will be drawn, the
* app relies on the background being what it specified
* for the window. So, we need to clear this manually.
*
+ * For foreign windows if expose is not set that generally
+ * means some other client paints them, so don't clear
+ * there.
+ *
* We use begin/end_paint around the clear so that we can
* piggyback on the implicit paint */
@@ -5066,8 +5071,7 @@ gdk_window_process_updates_internal (GdkWindow *window)
GdkRegion *update_area = private->update_area;
private->update_area = NULL;
- if (_gdk_event_func && gdk_window_is_viewable (window) &&
- private->window_type != GDK_WINDOW_FOREIGN)
+ if (_gdk_event_func && gdk_window_is_viewable (window))
{
GdkRegion *expose_region;
gboolean end_implicit;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]