Make sure we preserve pre-existing event mask on stage and overlay windows.

This commit is contained in:
Tomas Frydrych 2009-01-09 16:28:12 +00:00
parent 95fa3a3879
commit 822e125492

View File

@ -1548,18 +1548,26 @@ get_output_window (MetaScreen *screen)
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
Window output, xroot;
XWindowAttributes attr;
long event_mask;
xroot = meta_screen_get_xroot (screen);
output = XCompositeGetOverlayWindow (xdisplay, xroot);
XSelectInput (xdisplay,
output,
FocusChangeMask |
event_mask = FocusChangeMask |
ExposureMask |
PointerMotionMask |
PropertyChangeMask |
ButtonPressMask | ButtonReleaseMask |
KeyPressMask | KeyReleaseMask);
KeyPressMask | KeyReleaseMask;
output = XCompositeGetOverlayWindow (xdisplay, xroot);
if (XGetWindowAttributes (xdisplay, output, &attr))
{
event_mask |= attr.your_event_mask;
}
XSelectInput (xdisplay, output, event_mask);
return output;
}
@ -1620,6 +1628,8 @@ clutter_cmp_manage_screen (MetaCompositor *compositor,
Window xroot = meta_screen_get_xroot (screen);
Window xwin;
gint width, height;
XWindowAttributes attr;
long event_mask;
/* Check if the screen is already managed */
if (meta_screen_get_compositor_data (screen))
@ -1661,14 +1671,19 @@ clutter_cmp_manage_screen (MetaCompositor *compositor,
XReparentWindow (xdisplay, xwin, info->output, 0, 0);
XSelectInput (xdisplay,
xwin,
FocusChangeMask |
event_mask = FocusChangeMask |
ExposureMask |
PointerMotionMask |
PropertyChangeMask |
ButtonPressMask | ButtonReleaseMask |
KeyPressMask | KeyReleaseMask);
KeyPressMask | KeyReleaseMask;
if (XGetWindowAttributes (xdisplay, xwin, &attr))
{
event_mask |= attr.your_event_mask;
}
XSelectInput (xdisplay, xwin, event_mask);
info->window_group = clutter_group_new ();
info->overlay_group = clutter_group_new ();