devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b38b349262e2afff456b1ccb33161fc3a2602c5a
commit b38b349262e2afff456b1ccb33161fc3a2602c5a Author: Seunghun Lee <shiin....@samsung.com> Date: Wed Jul 29 11:14:11 2015 -0400 ecore-evas-x: resize window when it is rotated by window manager. Summary: window manager can send arguments and its meaning as follows. 1) resize:0 it means client window doesn't need to resize its window by rotation. this case is a ELM_WIN_BASIC window in mobile profile. 2) resize:1, ee->w != w, ee->h != h (deprecated) it means client window should be resized by rotation, and wm already resize its window. so, client don't need to resize its window. it's just for backward compatibility. 3) resize:1, ee->w == w, ee->h == h (addition) it means client window should be resized by rotation, and wm don't resize it. so, client should resize its window. Test Plan: N/A Reviewers: gwanglim, raster, jypark, devilhorns Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D2831 --- src/modules/ecore_evas/engines/x/ecore_evas_x.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index ed6bf84..40f538c 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -1188,7 +1188,9 @@ _ecore_evas_x_event_client_message(void *data EINA_UNUSED, int type EINA_UNUSED, ee->prop.wm_rot.win_resize = (int)e->data.l[2]; ee->prop.wm_rot.w = (int)e->data.l[3]; ee->prop.wm_rot.h = (int)e->data.l[4]; - if (ee->prop.wm_rot.win_resize) + if ((ee->prop.wm_rot.win_resize) && + ((ee->w != ee->prop.wm_rot.w) || + (ee->h != ee->prop.wm_rot.h))) edata->wm_rot.configure_coming = 1; edata->wm_rot.prepare = 1; edata->wm_rot.request = 0; @@ -1207,10 +1209,13 @@ _ecore_evas_x_event_client_message(void *data EINA_UNUSED, int type EINA_UNUSED, { if (ee->prop.wm_rot.app_set) { + int angle = ee->prop.wm_rot.angle; + Eina_Bool resize = ee->prop.wm_rot.win_resize; + edata->wm_rot.prepare = 0; edata->wm_rot.request = 1; edata->wm_rot.done = 0; - if (ee->prop.wm_rot.win_resize) + if (resize) { if ((ee->w == ee->prop.wm_rot.w) && (ee->h == ee->prop.wm_rot.h)) @@ -1225,7 +1230,7 @@ _ecore_evas_x_event_client_message(void *data EINA_UNUSED, int type EINA_UNUSED, ee->prop.wm_rot.manual_mode.wait_for_done = EINA_TRUE; _ecore_evas_x_wm_rot_manual_rotation_done_timeout_update(ee); } - _ecore_evas_x_rotation_set(ee, ee->prop.wm_rot.angle, 1); + _ecore_evas_x_rotation_set(ee, angle, (!resize)); } } } @@ -1629,6 +1634,7 @@ _ecore_evas_x_event_window_configure(void *data EINA_UNUSED, int type EINA_UNUSE if ((ee->prop.wm_rot.w == e->w) && (ee->prop.wm_rot.h == e->h)) { + ee->prop.wm_rot.win_resize = 0; edata->wm_rot.configure_coming = 0; } } @@ -2355,10 +2361,7 @@ _rotation_do(Ecore_Evas *ee, int rotation, int resize) { #ifdef BUILD_ECORE_EVAS_SOFTWARE_X11 if (ee->prop.wm_rot.supported) - { - if (!_ecore_evas_x_wm_rotation_check(ee)) return; - if (!resize) resize = 1; - } + if (!_ecore_evas_x_wm_rotation_check(ee)) return; Evas_Engine_Info_Software_X11 *einfo; Ecore_Evas_Engine_Data_X11 *edata = ee->engine.data; @@ -2418,10 +2421,7 @@ _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation, int resize) } if (ee->prop.wm_rot.supported) - { - if (!_ecore_evas_x_wm_rotation_check(ee)) return; - if (!resize) resize = 1; - } + if (!_ecore_evas_x_wm_rotation_check(ee)) return; if (!strcmp(ee->driver, "opengl_x11")) { --