mirror of
https://github.com/brl/mutter.git
synced 2024-11-26 01:50:42 -05:00
Make sure we preserve pre-existing event mask on stage and overlay windows.
This commit is contained in:
parent
95fa3a3879
commit
822e125492
@ -1548,18 +1548,26 @@ get_output_window (MetaScreen *screen)
|
|||||||
MetaDisplay *display = meta_screen_get_display (screen);
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
Window output, xroot;
|
Window output, xroot;
|
||||||
|
XWindowAttributes attr;
|
||||||
|
long event_mask;
|
||||||
|
|
||||||
xroot = meta_screen_get_xroot (screen);
|
xroot = meta_screen_get_xroot (screen);
|
||||||
|
|
||||||
|
event_mask = FocusChangeMask |
|
||||||
|
ExposureMask |
|
||||||
|
PointerMotionMask |
|
||||||
|
PropertyChangeMask |
|
||||||
|
ButtonPressMask | ButtonReleaseMask |
|
||||||
|
KeyPressMask | KeyReleaseMask;
|
||||||
|
|
||||||
output = XCompositeGetOverlayWindow (xdisplay, xroot);
|
output = XCompositeGetOverlayWindow (xdisplay, xroot);
|
||||||
XSelectInput (xdisplay,
|
|
||||||
output,
|
if (XGetWindowAttributes (xdisplay, output, &attr))
|
||||||
FocusChangeMask |
|
{
|
||||||
ExposureMask |
|
event_mask |= attr.your_event_mask;
|
||||||
PointerMotionMask |
|
}
|
||||||
PropertyChangeMask |
|
|
||||||
ButtonPressMask | ButtonReleaseMask |
|
XSelectInput (xdisplay, output, event_mask);
|
||||||
KeyPressMask | KeyReleaseMask);
|
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
@ -1620,6 +1628,8 @@ clutter_cmp_manage_screen (MetaCompositor *compositor,
|
|||||||
Window xroot = meta_screen_get_xroot (screen);
|
Window xroot = meta_screen_get_xroot (screen);
|
||||||
Window xwin;
|
Window xwin;
|
||||||
gint width, height;
|
gint width, height;
|
||||||
|
XWindowAttributes attr;
|
||||||
|
long event_mask;
|
||||||
|
|
||||||
/* Check if the screen is already managed */
|
/* Check if the screen is already managed */
|
||||||
if (meta_screen_get_compositor_data (screen))
|
if (meta_screen_get_compositor_data (screen))
|
||||||
@ -1661,14 +1671,19 @@ clutter_cmp_manage_screen (MetaCompositor *compositor,
|
|||||||
|
|
||||||
XReparentWindow (xdisplay, xwin, info->output, 0, 0);
|
XReparentWindow (xdisplay, xwin, info->output, 0, 0);
|
||||||
|
|
||||||
XSelectInput (xdisplay,
|
event_mask = FocusChangeMask |
|
||||||
xwin,
|
ExposureMask |
|
||||||
FocusChangeMask |
|
PointerMotionMask |
|
||||||
ExposureMask |
|
PropertyChangeMask |
|
||||||
PointerMotionMask |
|
ButtonPressMask | ButtonReleaseMask |
|
||||||
PropertyChangeMask |
|
KeyPressMask | KeyReleaseMask;
|
||||||
ButtonPressMask | ButtonReleaseMask |
|
|
||||||
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->window_group = clutter_group_new ();
|
||||||
info->overlay_group = clutter_group_new ();
|
info->overlay_group = clutter_group_new ();
|
||||||
|
Loading…
Reference in New Issue
Block a user