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