diff options
author | Victor Kareh <[email protected]> | 2019-05-23 13:08:13 -0400 |
---|---|---|
committer | raveit65 <[email protected]> | 2019-06-16 18:12:44 +0200 |
commit | fa32fffe0f6b0191cd17ce9ab19f89c4082497cf (patch) | |
tree | 11a32b4351928efb31c6fa9c1d0f38edcb639061 /src | |
parent | 969d85a4ed8aa5958f97649f9de11b802cf22f6c (diff) | |
download | marco-fa32fffe0f6b0191cd17ce9ab19f89c4082497cf.tar.bz2 marco-fa32fffe0f6b0191cd17ce9ab19f89c4082497cf.tar.xz |
frame: make frame window transparent
upstream commit:
https://gitlab.gnome.org/GNOME/metacity/commit/74db1f11
Diffstat (limited to 'src')
-rw-r--r-- | src/core/frame.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/core/frame.c b/src/core/frame.c index 4b0b112f..07837c19 100644 --- a/src/core/frame.c +++ b/src/core/frame.c @@ -66,8 +66,11 @@ void meta_window_ensure_frame (MetaWindow *window) { MetaFrame *frame; + MetaScreen *screen; XSetWindowAttributes attrs; + XVisualInfo visual_info; Visual *visual; + int status; if (window->frame) return; @@ -110,13 +113,24 @@ meta_window_ensure_frame (MetaWindow *window) * the default of NULL. */ - /* Special case for depth 32 windows (assumed to be ARGB), - * we use the window's visual. Otherwise we just use the system visual. - */ - if (window->depth == 32) - visual = window->xvisual; + screen = meta_window_get_screen (window); + status = XMatchVisualInfo (window->display->xdisplay, + XScreenNumberOfScreen (screen->xscreen), + 32, TrueColor, + &visual_info); + + if (!status) + { + /* Special case for depth 32 windows (assumed to be ARGB), + * we use the window's visual. Otherwise we just use the system visual. + */ + if (window->depth == 32) + visual = window->xvisual; + else + visual = NULL; + } else - visual = NULL; + visual = visual_info.visual; frame->xwindow = meta_ui_create_frame_window (window->screen->ui, window->display->xdisplay, |