netstar pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=ad43773245bdeac31a4c69bcb7cc8c7553587065

commit ad43773245bdeac31a4c69bcb7cc8c7553587065
Author: Alastair Poole <nets...@gmail.com>
Date:   Fri Mar 5 17:01:23 2021 +0000

    tasks: fix for layer with winlist large.
---
 src/modules/tasks/e_mod_main.c | 37 ++++++++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/src/modules/tasks/e_mod_main.c b/src/modules/tasks/e_mod_main.c
index 24cd9ee40..2ba43f3bf 100644
--- a/src/modules/tasks/e_mod_main.c
+++ b/src/modules/tasks/e_mod_main.c
@@ -65,6 +65,7 @@ static void         _tasks_refill_border(E_Client *ec);
 
 static Tasks_Item  *_tasks_item_find(Tasks *tasks, E_Client *ec);
 static Tasks_Item  *_tasks_item_new(Tasks *tasks, E_Client *ec);
+static Tasks_Item  *_tasks_all_item_find(E_Client *ec);
 
 static int          _tasks_item_check_add(Tasks *tasks, E_Client *ec);
 static void         _tasks_item_add(Tasks *tasks, E_Client *ec);
@@ -334,15 +335,18 @@ _gc_id_new(const E_Gadcon_Client_Class *client_class 
EINA_UNUSED)
 static void
 _tasks_cb_iconify_end_cb(void *data, Evas_Object *obj EINA_UNUSED, const char 
*sig EINA_UNUSED, const char *src EINA_UNUSED)
 {
-   Tasks_Item *item = data;
-   E_Client *ec = item->client;
+   Tasks_Item *item;
+   E_Client *ec = data;
+
+   if (!ec) return;
+
+   evas_object_layer_set(ec->frame, ec->layer);
+   ec->layer_block = 0;
+   if (ec->iconic) evas_object_hide(ec->frame);
+
+   item = _tasks_all_item_find(ec);
+   if (!item) return;
 
-   if (ec)
-     {
-        evas_object_layer_set(ec->frame, ec->layer);
-        ec->layer_block = 0;
-        if (ec->iconic) evas_object_hide(ec->frame);
-     }
    item->iconifying = 0;
    if (item->delete_me) free(item);
 }
@@ -374,7 +378,7 @@ _tasks_cb_iconify_provider(void *data, Evas_Object *obj, 
const char *signal)
                   e_comp_object_effect_params_set(ec->frame, 1, (int[]){ec->x, 
ec->y, ec->w, ec->h, ox, oy, ow, oh}, 8);
                   e_comp_object_effect_params_set(ec->frame, 0, 
(int[]){!!strcmp(signal, "e,action,iconify")}, 1);
                   item->iconifying = 1;
-                  e_comp_object_effect_start(ec->frame, 
_tasks_cb_iconify_end_cb, item);
+                  e_comp_object_effect_start(ec->frame, 
_tasks_cb_iconify_end_cb, ec);
                   return EINA_TRUE;
                }
           }
@@ -553,6 +557,21 @@ _tasks_item_find(Tasks *tasks, E_Client *ec)
    return NULL;
 }
 
+static Tasks_Item *
+_tasks_all_item_find(E_Client *ec)
+{
+   const Eina_List *l;
+   Tasks *tasks;
+   Tasks_Item *item = NULL;
+
+   EINA_LIST_FOREACH(tasks_config->tasks, l, tasks)
+     {
+        item = _tasks_item_find(tasks, ec);
+        if (item) break;
+     }
+   return item;
+}
+
 static Tasks_Item *
 _tasks_item_new(Tasks *tasks, E_Client *ec)
 {

-- 


Reply via email to