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);