diff --git a/ChangeLog b/ChangeLog index 97fba5c36..a0748c913 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-04-22 Carlos Garnacho + + * src/core/compositor.c (process_property_notify, + find_window_in_display): Propagate opacity to frame window. + 2008-04-22 Thomas Thurman * configure.in: Post-release bump to 2.23.13. diff --git a/src/core/compositor.c b/src/core/compositor.c index c37a78189..4c44a6f04 100644 --- a/src/core/compositor.c +++ b/src/core/compositor.c @@ -645,6 +645,24 @@ find_window_in_display (MetaDisplay *display, return NULL; } +static MetaCompWindow * +find_window_for_child_window_in_display (MetaDisplay *display, + Window xwindow) +{ + Window ignored1, *ignored2; + Window parent; + guint ignored_children; + + XQueryTree (display->xdisplay, + xwindow, &ignored1, &parent, + &ignored2, &ignored_children); + + if (parent != None) + return find_window_in_display (display, parent); + + return NULL; +} + static Picture solid_picture (MetaDisplay *display, MetaScreen *screen, @@ -2117,7 +2135,15 @@ process_property_notify (MetaCompositor *compositor, MetaCompWindow *cw = find_window_in_display (display, event->window); gulong value; - if (!cw) + if (!cw) + { + /* Applications can set this property for their toplevel windows, so + * this must be propagated to the window managed by the compositor + */ + cw = find_window_for_child_window_in_display (display, event->window); + } + + if (!cw) return; if (meta_prop_get_cardinal (display, event->window,