From aa0ccade2dcf386a7e33191cf61e41bf13157fc5 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sat, 19 Mar 2005 17:39:25 +0000 Subject: [PATCH] fix initial stickiness handling SVN revision: 13796 --- src/modules/pager/e_mod_main.c | 60 ++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index e6920f362..cb745562a 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -775,14 +775,33 @@ _pager_face_cb_event_border_add(void *data, int type, void *event) if ((face->zone != ev->border->zone) || (_pager_face_border_find(face, ev->border))) return 1; - pd = _pager_face_desk_find(face, ev->border->desk); - if (pd) + if (ev->border->sticky) { - Pager_Win *pw; + Evas_List *l; - pw = _pager_window_new(pd, ev->border); - if (pw) - pd->wins = evas_list_append(pd->wins, pw); + /* go through all desks */ + for (l = face->desks; l; l = l->next) + { + Pager_Win *pw; + + pd = l->data; + /* create it and add it */ + pw = _pager_window_new(pd, ev->border); + if (pw) + pd->wins = evas_list_append(pd->wins, pw); + } + } + else + { + pd = _pager_face_desk_find(face, ev->border->desk); + if (pd) + { + Pager_Win *pw; + + pw = _pager_window_new(pd, ev->border); + if (pw) + pd->wins = evas_list_append(pd->wins, pw); + } } return 1; } @@ -1014,14 +1033,29 @@ _pager_face_cb_event_border_desk_set(void *data, int type, void *event) /* the border isnt in this pager at all - it must have moved zones */ else { - /* find the pager desk it needs to go to */ - pd = _pager_face_desk_find(face, ev->border->desk); - if (pd) + if (!ev->border->sticky) { - /* create it and add it */ - pw = _pager_window_new(pd, ev->border); - if (pw) - pd->wins = evas_list_append(pd->wins, pw); + /* find the pager desk it needs to go to */ + pd = _pager_face_desk_find(face, ev->border->desk); + if (pd) + { + /* create it and add it */ + pw = _pager_window_new(pd, ev->border); + if (pw) + pd->wins = evas_list_append(pd->wins, pw); + } + } + else + { + /* go through all desks */ + for (l = face->desks; l; l = l->next) + { + pd = l->data; + /* create it and add it */ + pw = _pager_window_new(pd, ev->border); + if (pw) + pd->wins = evas_list_append(pd->wins, pw); + } } } return 1;