diff options
author | Owen Taylor <otaylor@src.gnome.org> | 2002-02-28 00:26:51 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-02-28 00:26:51 +0000 |
commit | 7ea17ce7fd9c36d0eb02586d119273ed57fb517e (patch) | |
tree | 11bb50d2bf78278f5c42872b7dff0afe13c7dd94 /gdk | |
parent | 07bdeb1871182975905fecc87bfa4ccecafbf116 (diff) | |
download | gtk+-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.c | 3 | ||||
-rw-r--r-- | gdk/gdkwindow.h | 2 | ||||
-rw-r--r-- | gdk/linux-fb/gdkwindow-fb.c | 2 | ||||
-rw-r--r-- | gdk/win32/gdkwindow-win32.c | 2 | ||||
-rw-r--r-- | gdk/x11/gdkwindow-x11.c | 4 |
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++) { |