[metacity] window: parse _NET_WM_WINDOW_OPACITY property
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] window: parse _NET_WM_WINDOW_OPACITY property
- Date: Mon, 6 Mar 2017 15:51:28 +0000 (UTC)
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]