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
This commit is contained in:
Christopher Michael 2012-08-08 10:09:49 +00:00
parent 33d4af1e18
commit cfe7431256
2 changed files with 35 additions and 12 deletions

View File

@ -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);
}

View File

@ -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);
}