summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@src.gnome.org>2002-02-28 00:26:51 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-02-28 00:26:51 +0000
commit7ea17ce7fd9c36d0eb02586d119273ed57fb517e (patch)
tree11bb50d2bf78278f5c42872b7dff0afe13c7dd94 /gdk
parent07bdeb1871182975905fecc87bfa4ccecafbf116 (diff)
downloadgtk+-7ea17ce7fd9c36d0eb02586d119273ed57fb517e.tar.gz
ed Feb 27 19:16:50 2002 Owen Taylor <otaylor@redhat.com>
* gdk/x11/gdkwindow-x11.c (gdk_window_new): * gdk/x11/gdkwindow-x11.c (gdk_window_get_events): * gdk/x11/gdkwindow-x11.c (gdk_window_set_events): * gdk/win32/gdkwindow-win32.c (gdk_window_set_events): * gdk/win32/gdkwindow-win32.c (gdk_window_new): * gdk/gdkwindow.h (struct _GdkWindowObject): * gdk/linux-fb/gdkwindow-fb.c (gdk_window_set_events): Save the window's event mask in window->event_mask. * gdk/gdkwindow.c (gdk_window_process_updates_internal): Only generate expose events if GDK_EXPOSE_MASK is included window->event_mask. (#54506)
Diffstat (limited to 'gdk')
-rw-r--r--gdk/gdkwindow.c3
-rw-r--r--gdk/gdkwindow.h2
-rw-r--r--gdk/linux-fb/gdkwindow-fb.c2
-rw-r--r--gdk/win32/gdkwindow-win32.c2
-rw-r--r--gdk/x11/gdkwindow-x11.c4
5 files changed, 12 insertions, 1 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index c79f198089..8199e09bf6 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -2065,7 +2065,8 @@ 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))
+ if (_gdk_event_func && gdk_window_is_viewable (window) &&
+ (private->event_mask & GDK_EXPOSURE_MASK))
{
GdkEvent event;
GdkRectangle window_rect;
diff --git a/gdk/gdkwindow.h b/gdk/gdkwindow.h
index b1e42ce2dc..7235ce2e36 100644
--- a/gdk/gdkwindow.h
+++ b/gdk/gdkwindow.h
@@ -260,6 +260,8 @@ struct _GdkWindowObject
guint modal_hint : 1;
guint destroyed : 2;
+
+ GdkEventMask event_mask;
};
struct _GdkWindowObjectClass
diff --git a/gdk/linux-fb/gdkwindow-fb.c b/gdk/linux-fb/gdkwindow-fb.c
index 13244b7647..44a674cf6e 100644
--- a/gdk/linux-fb/gdkwindow-fb.c
+++ b/gdk/linux-fb/gdkwindow-fb.c
@@ -1751,6 +1751,8 @@ gdk_window_set_events (GdkWindow *window,
if (!GDK_WINDOW_DESTROYED (window))
GDK_WINDOW_IMPL_FBDATA (window)->event_mask = event_mask;
+
+ GDK_WINDOW_OBJECT (window)->event_mask = event_mask;
}
void
diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c
index a0d8d55826..91221942ec 100644
--- a/gdk/win32/gdkwindow-win32.c
+++ b/gdk/win32/gdkwindow-win32.c
@@ -487,6 +487,7 @@ gdk_window_new (GdkWindow *parent,
title = "GDK client window";
impl->event_mask = GDK_STRUCTURE_MASK | attributes->event_mask;
+ private->event_mask = impl->event_mask;
if (private->parent && private->parent->guffaw_gravity)
{
@@ -1941,6 +1942,7 @@ gdk_window_set_events (GdkWindow *window,
if (GDK_WINDOW_DESTROYED (window))
return;
+ GDK_WINDOW_OBJECT (window)->event_mask = event_mask;
GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl)->event_mask = event_mask;
}
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 37de3ff28a..21bcc8b0a9 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -414,6 +414,7 @@ gdk_window_new (GdkWindow *parent,
if (attributes->event_mask & (1 << (i + 1)))
xattributes.event_mask |= _gdk_event_mask_table[i];
}
+ private->event_mask = attributes->event_mask;
if (xattributes.event_mask)
xattributes_mask |= CWEventMask;
@@ -2466,6 +2467,8 @@ gdk_window_get_events (GdkWindow *window)
if (attrs.your_event_mask & _gdk_event_mask_table[i])
event_mask |= 1 << (i + 1);
}
+
+ GDK_WINDOW_OBJECT (window)->event_mask = event_mask;
return event_mask;
}
@@ -2494,6 +2497,7 @@ gdk_window_set_events (GdkWindow *window,
if (!GDK_WINDOW_DESTROYED (window))
{
+ GDK_WINDOW_OBJECT (window)->event_mask = event_mask;
xevent_mask = StructureNotifyMask;
for (i = 0; i < _gdk_nenvent_masks; i++)
{