raster pushed a commit to branch master.

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

commit 100121bd64a8ebe52176e3015a7051508a75ea24
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Mon Sep 7 01:04:49 2020 +0100

    e pointer - on lock push a default pointer and ensure it is ok after
    
    this makes the pointer a default - so no resize animations sticking
    around when locked, and on unlock we are restored to default.
    
    @fix
---
 src/bin/e_pointer.c         | 20 +++++++++++++++-----
 src/modules/lokker/lokker.c |  3 +++
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c
index 0f7ef2a9b..82f928192 100644
--- a/src/bin/e_pointer.c
+++ b/src/bin/e_pointer.c
@@ -646,7 +646,7 @@ e_pointer_type_pop(E_Pointer *ptr, void *obj, const char 
*type)
 
    EINA_LIST_FOREACH_SAFE(ptr->stack, l, ll, stack)
      {
-        if ((stack->obj == obj) &&
+        if (((stack->obj == obj) || (!obj)) &&
             ((!type) || (!e_util_strcmp(stack->type, type))))
           {
              _e_pointer_stack_free(stack);
@@ -655,11 +655,21 @@ e_pointer_type_pop(E_Pointer *ptr, void *obj, const char 
*type)
           }
      }
 
-   if (!ptr->stack)
+   if ((!obj) && (!type))
      {
-        e_pointer_hide(ptr);
-        eina_stringshare_replace(&ptr->type, NULL);
-        return;
+        if (!ptr->stack)
+          {
+             e_pointer_type_push(ptr, ptr, "default");
+          }
+     }
+   else
+     {
+        if (!ptr->stack)
+          {
+             e_pointer_hide(ptr);
+             eina_stringshare_replace(&ptr->type, NULL);
+             return;
+          }
      }
 
    if (!(stack = eina_list_data_get(ptr->stack))) return;
diff --git a/src/modules/lokker/lokker.c b/src/modules/lokker/lokker.c
index f52ceae1c..c4a0c7e8c 100644
--- a/src/modules/lokker/lokker.c
+++ b/src/modules/lokker/lokker.c
@@ -863,6 +863,7 @@ lokker_lock(void)
    mlock(edd, sizeof(Lokker_Data));
 #endif
 
+   e_pointer_type_push(e_comp->pointer, e_comp->pointer, "default");
    E_LIST_FOREACH(e_comp->zones, _lokker_popup_add);
    total_zone_num = eina_list_count(e_comp->zones);
 
@@ -882,6 +883,8 @@ EINTERN void
 lokker_unlock(void)
 {
    E_FREE_LIST(edd->elock_wnd_list, _lokker_popup_free);
+   e_pointer_type_pop(e_comp->pointer, e_comp->pointer, "default");
+   e_pointer_type_pop(e_comp->pointer, NULL, NULL);
    E_FREE_LIST(edd->handlers, ecore_event_handler_del);
    if (edd->move_handler) ecore_event_handler_del(edd->move_handler);
 

-- 


Reply via email to