discomfitor pushed a commit to branch efl-1.20. http://git.enlightenment.org/core/efl.git/commit/?id=cceb25d9a73acda33608cb740891598c52631907
commit cceb25d9a73acda33608cb740891598c52631907 Author: Mike Blumenkrantz <[email protected]> Date: Fri Aug 11 18:43:15 2017 -0400 wayland: set min/max size hints to surface before show with deferred surface creation the first canvas change of hints may not be able to trigger protocol methods for size hints, so ensure that hints are set --- src/lib/ecore_wl2/ecore_wl2_private.h | 2 ++ .../engines/wayland/ecore_evas_wayland_common.c | 36 ++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 3569db9f39..585615c726 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -201,6 +201,8 @@ struct _Ecore_Wl2_Window struct { Eina_Bool configure : 1; + Eina_Bool min : 1; + Eina_Bool max : 1; } pending; struct diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c index d6b6350174..417c6e9485 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c @@ -192,6 +192,17 @@ _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h) ee->w = w; ee->h = h; + if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel && wdata->win->pending.min) + { + wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, ee->prop.min.w, ee->prop.min.h); + wdata->win->pending.min = 0; + } + if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel && wdata->win->pending.max) + { + wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, ee->prop.max.w, ee->prop.max.h); + wdata->win->pending.max = 0; + } + if (!ee->prop.fullscreen) { int fw = 0, fh = 0; @@ -1426,7 +1437,12 @@ _ecore_evas_wl_common_size_min_set(Ecore_Evas *ee, int w, int h) ee->prop.min.h = h; wdata = ee->engine.data; if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel) - wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, w, h); + { + wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, w, h); + wdata->win->pending.min = 0; + } + else + wdata->win->pending.min = 1; _ecore_evas_wl_common_resize(ee, ee->w, ee->h); } @@ -1442,7 +1458,12 @@ _ecore_evas_wl_common_size_max_set(Ecore_Evas *ee, int w, int h) ee->prop.max.h = h; wdata = ee->engine.data; if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel) - wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, w, h); + { + wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, w, h); + wdata->win->pending.max = 0; + } + else + wdata->win->pending.max = 1; _ecore_evas_wl_common_resize(ee, ee->w, ee->h); } @@ -1953,6 +1974,17 @@ _ecore_evas_wl_common_show(Ecore_Evas *ee) { int fw, fh; + if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel && wdata->win->pending.min) + { + wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, ee->prop.min.w, ee->prop.min.h); + wdata->win->pending.min = 0; + } + if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel && wdata->win->pending.max) + { + wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, ee->prop.max.w, ee->prop.max.h); + wdata->win->pending.max = 0; + } + evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh); ecore_wl2_window_show(wdata->win); --
