From fa1195b7f103a9107238d66250810baeb6ff1413 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 22 Apr 2008 13:34:48 +0000 Subject: [PATCH] Propagate opacity to frame window. 2008-04-22 Carlos Garnacho * src/core/compositor.c (process_property_notify, find_window_in_display): Propagate opacity to frame window. svn path=/trunk/; revision=3692 --- ChangeLog | 5 +++++ src/core/compositor.c | 28 +++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) 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,