summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWonguk Jeong <wonguk.jeong@samsung.com>2014-07-27 09:16:25 -0400
committerMike Blumenkrantz <zmike@samsung.com>2014-07-27 09:16:25 -0400
commitaada5dea8d2cb4b0937b024ab48c4edd318a42be (patch)
tree6f4440763283e0d8fe225ef799a7d7a5a49a7d6b
parentbed733d10001070b8c783275c3178d501717d231 (diff)
downloadenlightenment-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.c18
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)
{