From 9f51bffd1e1568fdfbee69abb2df136d4ef7dd24 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 8 Jul 2015 14:48:19 -0400 Subject: [PATCH] make e_client_util_.?win_get() fns return xwayland windows when available fixes setting x11 hints in xwayland clients --- src/bin/e_client.x | 8 ++++++++ src/bin/e_comp_x.c | 10 ++++++++++ src/bin/e_comp_x.h | 3 +++ 3 files changed, 21 insertions(+) diff --git a/src/bin/e_client.x b/src/bin/e_client.x index 562f75a90..2a2785512 100644 --- a/src/bin/e_client.x +++ b/src/bin/e_client.x @@ -87,14 +87,22 @@ static inline Ecore_Window e_client_util_pwin_get(const E_Client *ec) { if (!ec->pixmap) return 0; +#if defined(HAVE_WAYLAND) && !defined(HAVE_WAYLAND_ONLY) + return e_pixmap_parent_window_get(e_comp_x_client_pixmap_get(ec)); +#else return e_pixmap_parent_window_get(ec->pixmap); +#endif } static inline Ecore_Window e_client_util_win_get(const E_Client *ec) { if (!ec->pixmap) return 0; +#if defined(HAVE_WAYLAND) && !defined(HAVE_WAYLAND_ONLY) + return e_pixmap_window_get(e_comp_x_client_pixmap_get(ec)); +#else return e_pixmap_window_get(ec->pixmap); +#endif } static inline Eina_Bool diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index f9ec6d3d2..498f00da2 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -5461,3 +5461,13 @@ e_comp_x_xwayland_client_setup(E_Client *ec, E_Client *wc) _e_comp_x_client_stack(wc); } #endif + +E_API inline E_Pixmap * +e_comp_x_client_pixmap_get(const E_Client *ec) +{ +#ifdef HAVE_WAYLAND + if (!e_pixmap_is_x(ec->pixmap)) + return e_comp_wl_client_xwayland_pixmap(ec); +#endif + return ec->pixmap; +} diff --git a/src/bin/e_comp_x.h b/src/bin/e_comp_x.h index 1be3d4602..33360e588 100644 --- a/src/bin/e_comp_x.h +++ b/src/bin/e_comp_x.h @@ -111,5 +111,8 @@ E_API void e_comp_x_shutdown(void); E_API void e_alert_composite_win(Ecore_X_Window root, Ecore_X_Window win); EINTERN void e_comp_x_nocomp_end(void); EINTERN void e_comp_x_xwayland_client_setup(E_Client *ec, E_Client *wc); + +E_API E_Pixmap *e_comp_x_client_pixmap_get(const E_Client *ec); + # endif #endif