summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlos@imendio.com>2008-04-22 13:34:48 +0000
committerThomas James Alexander Thurman <tthurman@src.gnome.org>2008-04-22 13:34:48 +0000
commitfa1195b7f103a9107238d66250810baeb6ff1413 (patch)
treee7c39cddedb136a34642bebbad6251d4f7736be4
parent3d9f2868fcf480f793418203454b959eb7fd39ba (diff)
downloadmetacity-fa1195b7f103a9107238d66250810baeb6ff1413.tar.gz
Propagate opacity to frame window.
2008-04-22 Carlos Garnacho <carlos@imendio.com> * src/core/compositor.c (process_property_notify, find_window_in_display): Propagate opacity to frame window. svn path=/trunk/; revision=3692
-rw-r--r--ChangeLog5
-rw-r--r--src/core/compositor.c28
2 files changed, 32 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 97fba5c3..a0748c91 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-22 Carlos Garnacho <carlos@imendio.com>
+
+ * src/core/compositor.c (process_property_notify,
+ find_window_in_display): Propagate opacity to frame window.
+
2008-04-22 Thomas Thurman <tthurman@gnome.org>
* configure.in: Post-release bump to 2.23.13.
diff --git a/src/core/compositor.c b/src/core/compositor.c
index c37a7818..4c44a6f0 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,