diff options
author | Wonguk Jeong <wonguk.jeong@samsung.com> | 2014-07-27 09:16:25 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2014-07-27 09:16:25 -0400 |
commit | aada5dea8d2cb4b0937b024ab48c4edd318a42be (patch) | |
tree | 6f4440763283e0d8fe225ef799a7d7a5a49a7d6b | |
parent | bed733d10001070b8c783275c3178d501717d231 (diff) | |
download | enlightenment-aada5dea8d2cb4b0937b024ab48c4edd318a42be.tar.gz |
pager16: resize on desktop bug fix
Summary:
pager16 is not properly resized when it is a desktop gadget.
Case 1. In move/resize mode, shrink is impossible since all items' min has been set by setting table options on resizing.
-> Do not set table options in _pager_resize().
Case 2. After log-in, if we open new window, pager has been get into move/resize mode.
frame resize was ignored, since it's invoked in the middle of resizing.
The detail is:
1) gadcon's frame is resizing
2) the table is resized
3) _pager_resize() -> e_gadcon_client_aspect_set() -> _gadman_gadget_size_hints_cb() -> try to resize frame
4) since frame is in the middle of resizing, the resize request has been ignored. (at start, since the initial size was 0, 0, pager get into move/resize mode)
-> Defer aspect setting.
fixes T1012
Test Plan:
Caes 1. try to shrink pager16 gadget on desktop
Case 2. open any window after log-in -> check whether the pager has been getting into move/resize mode and shrink
Reviewers: zmike
Subscribers: cedric, seoz
Maniphest Tasks: T1012
Differential Revision: https://phab.enlightenment.org/D1242
-rw-r--r-- | src/modules/pager16/e_mod_main.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/modules/pager16/e_mod_main.c b/src/modules/pager16/e_mod_main.c index 78d44f236b..a94a4983dc 100644 --- a/src/modules/pager16/e_mod_main.c +++ b/src/modules/pager16/e_mod_main.c @@ -50,7 +50,8 @@ struct _Pager Evas_Coord dnd_x, dnd_y; Pager_Desk *active_drop_pd; E_Client *active_drag_client; - Eina_Bool invert : 1; + Eina_Bool invert : 1; + Eina_Bool recalc : 1; }; struct _Pager_Desk @@ -309,7 +310,7 @@ _gc_id_new(const E_Gadcon_Client_Class *client_class) } static void -_pager_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_pager_recalc(void *data) { Pager *p = data; Eina_List *l; @@ -317,6 +318,7 @@ _pager_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi Evas_Coord mw = 0, mh = 0; int w, h, zw, zh, w2, h2; + p->recalc = EINA_FALSE; zw = p->zone->w; zh = p->zone->h; pd = eina_list_data_get(p->desks); if (!pd) return; @@ -331,8 +333,6 @@ _pager_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi } w = w2; h = h2; w += mw; h += mh; - EINA_LIST_FOREACH(p->desks, l, pd) - e_table_pack_options_set(pd->o_desk, 1, 1, 1, 1, 0.5, 0.5, w, h, -1, -1); if ((p->inst) && (p->inst->gcc)) { if (p->invert) @@ -342,6 +342,16 @@ _pager_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi } } +static void +_pager_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Pager *p = data; + + if (p->recalc) return; + p->recalc = EINA_TRUE; + ecore_job_add(_pager_recalc, p); +} + static Pager * _pager_new(Evas *evas, E_Zone *zone, E_Gadcon *gc) { |