diff options
author | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2006-01-12 22:14:56 +0000 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2006-01-12 22:14:56 +0000 |
commit | c2dedf4d17f8a5b1a8037fd2b4e29122ef78945a (patch) | |
tree | 03adc3a1a20822e6a133432998c6bc8a484f6ba1 /dix | |
parent | 847d83ec3c90c5b298eaf19ba55251b4a30f4155 (diff) |
Thu Jan 12 17:09:18 2006 Søren Sandmann <sandmann@redhat.com>
Add new functions to enable and disable events on Map and Unmap.
Use them here to make sure Composite redirect doesn't cause Map/UnmapNotify
events that would confuse window managers.
Diffstat (limited to 'dix')
-rw-r--r-- | dix/window.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/dix/window.c b/dix/window.c index bd320fabe..84985e66f 100644 --- a/dix/window.c +++ b/dix/window.c @@ -2728,7 +2728,7 @@ MapWindow(register WindowPtr pWin, ClientPtr client) } pWin->mapped = TRUE; - if (SubStrSend(pWin, pParent)) + if (SubStrSend(pWin, pParent) && MapUnmapEventsEnabled(pWin)) { event.u.u.type = MapNotify; event.u.mapNotify.window = pWin->drawable.id; @@ -2983,7 +2983,7 @@ UnmapWindow(register WindowPtr pWin, Bool fromConfigure) if ((!pWin->mapped) || (!(pParent = pWin->parent))) return(Success); - if (SubStrSend(pWin, pParent)) + if (SubStrSend(pWin, pParent) && MapUnmapEventsEnabled(pWin)) { event.u.u.type = UnmapNotify; event.u.unmapNotify.window = pWin->drawable.id; @@ -3285,6 +3285,29 @@ SendVisibilityNotify(WindowPtr pWin) DeliverEvents(pWin, &event, 1, NullWindow); } +static WindowPtr windowDisableMapUnmapEvents; + +void +DisableMapUnmapEvents(WindowPtr pWin) +{ + assert (windowDisableMapUnmapEvents == NULL); + + windowDisableMapUnmapEvents = pWin; +} + +void +EnableMapUnmapEvents(WindowPtr pWin) +{ + assert (windowDisableMapUnmapEvents != NULL); + + windowDisableMapUnmapEvents = NULL; +} + +Bool +MapUnmapEventsEnabled(WindowPtr pWin) +{ + return pWin != windowDisableMapUnmapEvents; +} #define RANDOM_WIDTH 32 |