From cfe74312560ebf03d7cb7fe56faa52e81fd1dac0 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Wed, 8 Aug 2012 10:09:49 +0000 Subject: [PATCH] Ecore_Evas (wayland): When we maximize windows, account for framespace width and height so the window does not draw outside the output dimensions. Fixes ticket #1281 SVN revision: 75005 --- .../lib/ecore_evas/ecore_evas_wayland_egl.c | 23 ++++++++++++++---- .../lib/ecore_evas/ecore_evas_wayland_shm.c | 24 +++++++++++++------ 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c index b296bd26c6..0ab2703814 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c @@ -957,6 +957,7 @@ _ecore_evas_wl_cb_window_configure(void *data __UNUSED__, int type __UNUSED__, v { Ecore_Evas *ee; Ecore_Wl_Event_Window_Configure *ev; + int nw = 0, nh = 0; LOGFN(__FILE__, __LINE__, __FUNCTION__); @@ -964,18 +965,30 @@ _ecore_evas_wl_cb_window_configure(void *data __UNUSED__, int type __UNUSED__, v ee = ecore_event_window_match(ev->win); if (!ee) return ECORE_CALLBACK_PASS_ON; if (ev->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON; + if ((ee->x != ev->x) || (ee->y != ev->y)) { - /* ee->x = ev->x; */ - /* ee->y = ev->y; */ ee->req.x = ee->x; ee->req.y = ee->y; if (ee->func.fn_move) ee->func.fn_move(ee); } - if ((ee->req.w != ev->w) || (ee->req.h != ev->h)) + + nw = ev->w; + nh = ev->h; + + if (ee->prop.maximized) { - ee->req.w = ev->w; - ee->req.h = ev->h; + int fw = 0, fh = 0; + + evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh); + nw = ev->w - fw; + nh = ev->h - fh; + } + + if ((ee->w != nw) || (ee->h != nh)) + { + ee->req.w = nw; + ee->req.h = nh; if (ee->func.fn_resize) ee->func.fn_resize(ee); } diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c index 9d547d16b0..0deb37186e 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c @@ -1100,6 +1100,7 @@ _ecore_evas_wl_cb_window_configure(void *data __UNUSED__, int type __UNUSED__, v { Ecore_Evas *ee; Ecore_Wl_Event_Window_Configure *ev; + int nw = 0, nh = 0; LOGFN(__FILE__, __LINE__, __FUNCTION__); @@ -1110,18 +1111,27 @@ _ecore_evas_wl_cb_window_configure(void *data __UNUSED__, int type __UNUSED__, v if ((ee->x != ev->x) || (ee->y != ev->y)) { - /* ee->x = ev->x; */ - /* ee->y = ev->y; */ ee->req.x = ee->x; ee->req.y = ee->y; if (ee->func.fn_move) ee->func.fn_move(ee); } - if ((ee->req.w != ev->w) || (ee->req.h != ev->h)) + + nw = ev->w; + nh = ev->h; + + if (ee->prop.maximized) { - /* ee->w = ev->w; */ - /* ee->h = ev->h; */ - ee->req.w = ev->w; - ee->req.h = ev->h; + int fw = 0, fh = 0; + + evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh); + nw = ev->w - fw; + nh = ev->h - fh; + } + + if ((ee->w != nw) || (ee->h != nh)) + { + ee->req.w = nw; + ee->req.h = nh; if (ee->func.fn_resize) ee->func.fn_resize(ee); }