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 1a94b83ba9..746fa0aa55 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 @@ -36,6 +36,7 @@ EVAS_SMART_SUBCLASS_NEW(_smart_frame_type, _ecore_evas_wl_frame, static int _ecore_evas_wl_init_count = 0; static Ecore_Event_Handler *_ecore_evas_wl_event_hdls[5]; +static void _ecore_evas_wayland_resize_edge_set(Ecore_Evas *ee, int edge); static void _ecore_evas_wayland_resize(Ecore_Evas *ee, int location); /* local function prototypes */ @@ -264,20 +265,20 @@ _ecore_evas_wl_common_cb_window_configure(void *data EINA_UNUSED, int type EINA_ evas_output_viewport_set(ee->evas, 0, 0, ev->w, ev->h); } + if (wdata->frame) + evas_object_resize(wdata->frame, ev->w, ev->h); + if (wdata->win) { Ecore_Wl_Window *win; win = wdata->win; + _ecore_evas_wayland_resize_edge_set(ee, win->edges); + win->server_allocation = win->allocation; ecore_wl_window_update_size(wdata->win, ev->w, ev->h); - - _ecore_evas_wayland_resize(ee, win->edges); } - - if (wdata->frame) - evas_object_resize(wdata->frame, ev->w, ev->h); } return ECORE_CALLBACK_PASS_ON; @@ -1267,6 +1268,24 @@ _ecore_evas_wl_common_screen_dpi_get(const Ecore_Evas *ee EINA_UNUSED, int *xdpi if (ydpi) *ydpi = dpi; } +static void +_ecore_evas_wayland_resize_edge_set(Ecore_Evas *ee, int edge) +{ + if (!ee) return; + if (!strcmp(ee->driver, "wayland_shm")) + { +#ifdef BUILD_ECORE_EVAS_WAYLAND_SHM + _ecore_evas_wayland_shm_resize_edge_set(ee, edge); +#endif + } + else if (!strcmp(ee->driver, "wayland_egl")) + { +#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL + _ecore_evas_wayland_egl_resize_edge_set(ee, edge); +#endif + } +} + static void _ecore_evas_wayland_resize(Ecore_Evas *ee, int location) {