[metacity] window: parse _NET_WM_WINDOW_OPACITY property



commit d7c6f66741344b6261ed3ef0e94f1460e4b7a8fa
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Mon Mar 6 11:44:32 2017 +0200

    window: parse _NET_WM_WINDOW_OPACITY property

 src/core/window-private.h |    3 +++
 src/core/window-props.c   |   27 +++++++++++++++++++++++++++
 src/core/window.c         |    1 +
 3 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/src/core/window-private.h b/src/core/window-private.h
index 65f98f9..4eba584 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -346,6 +346,9 @@ struct _MetaWindow
   /* if non-NULL, the opaque region _NET_WM_OPAQUE_REGION */
   cairo_region_t *opaque_region;
 
+  /* _NET_WM_WINDOW_OPACITY */
+  guint opacity;
+
   /* Note: can be NULL */
   GSList *struts;
 
diff --git a/src/core/window-props.c b/src/core/window-props.c
index 4007917..ca7cd06 100644
--- a/src/core/window-props.c
+++ b/src/core/window-props.c
@@ -1726,6 +1726,27 @@ reload_gtk_theme_variant (MetaWindow    *window,
     }
 }
 
+static void
+reload_window_opacity (MetaWindow    *window,
+                       MetaPropValue *value,
+                       gboolean       initial)
+
+{
+  guint opacity;
+
+  opacity = 0xffffffff;
+
+  if (value->type != META_PROP_VALUE_INVALID)
+    opacity = value->v.cardinal;
+
+  if (window->opacity == opacity)
+    return;
+
+  window->opacity = opacity;
+
+  meta_compositor_window_opacity_changed (window->display->compositor, window);
+}
+
 /**
  * Initialises the property hooks system.  Each row in the table named "hooks"
  * represents an action to take when a property is found on a newly-created
@@ -1926,6 +1947,12 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
       NONE
     },
     {
+      display->atom__NET_WM_WINDOW_OPACITY,
+      META_PROP_VALUE_CARDINAL,
+      reload_window_opacity,
+      LOAD_INIT | INCLUDE_OR
+    },
+    {
       0
     },
   };
diff --git a/src/core/window.c b/src/core/window.c
index 5b14b20..3668035 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -529,6 +529,7 @@ meta_window_new (MetaDisplay    *display,
   window->attached = FALSE;
   window->frame_bounds = NULL;
   window->opaque_region = NULL;
+  window->opacity = 0xffffffff;
 
   window->unmaps_pending = 0;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]