evas/wayland_egl: Fix resize to the left or top when rotated.

This commit is contained in:
Rafael Antognolli 2013-04-24 18:33:43 -03:00
parent 455d8790b9
commit 1ec6dd5fbc
2 changed files with 32 additions and 14 deletions

View File

@ -491,7 +491,16 @@ _ecore_evas_wayland_egl_resize(Ecore_Evas *ee, int location)
wdata->win->resizing = EINA_TRUE;
evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
ecore_wl_window_resize(wdata->win, ee->w + fw, ee->h + fh, location);
if ((ee->rotation == 0) || (ee->rotation == 180))
{
ecore_wl_window_resize(wdata->win, ee->w + fw, ee->h + fh, location);
ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh);
}
else
{
ecore_wl_window_resize(wdata->win, ee->w + fh, ee->h + fw, location);
ecore_wl_window_update_size(wdata->win, ee->w + fh, ee->h + fw);
}
}
}
#endif

View File

@ -881,21 +881,30 @@ eng_output_resize(void *data, int w, int h)
if (re->win->win)
{
int aw, ah, dx, dy;
wl_egl_window_get_attached_size(re->win->win, &aw, &ah);
if (re->info->info.edges & 4) // resize from left
dx = aw - w;
else
dx = 0;
if (re->info->info.edges & 1) // resize from top
dy = ah - h;
else
dy = 0;
int aw, ah, dx = 0, dy = 0;
if ((re->win->rot == 90) || (re->win->rot == 270))
wl_egl_window_resize(re->win->win, h, w, dy, dx);
wl_egl_window_get_attached_size(re->win->win, &ah, &aw);
else
wl_egl_window_get_attached_size(re->win->win, &aw, &ah);
if (re->info->info.edges & 4) // resize from left
{
if ((re->win->rot == 90) || (re->win->rot == 270))
dx = ah - h;
else
dx = aw - w;
}
if (re->info->info.edges & 1) // resize from top
{
if ((re->win->rot == 90) || (re->win->rot == 270))
dy = aw - w;
else
dy = ah - h;
}
if ((re->win->rot == 90) || (re->win->rot == 270))
wl_egl_window_resize(re->win->win, h, w, dx, dy);
else
wl_egl_window_resize(re->win->win, w, h, dx, dy);
}