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
This commit is contained in:
Carsten Haitzler 2020-09-07 01:04:49 +01:00
parent aaefc0cafe
commit 100121bd64
2 changed files with 18 additions and 5 deletions

View File

@ -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) 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)))) ((!type) || (!e_util_strcmp(stack->type, type))))
{ {
_e_pointer_stack_free(stack); _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); if (!ptr->stack)
eina_stringshare_replace(&ptr->type, NULL); {
return; 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; if (!(stack = eina_list_data_get(ptr->stack))) return;

View File

@ -863,6 +863,7 @@ lokker_lock(void)
mlock(edd, sizeof(Lokker_Data)); mlock(edd, sizeof(Lokker_Data));
#endif #endif
e_pointer_type_push(e_comp->pointer, e_comp->pointer, "default");
E_LIST_FOREACH(e_comp->zones, _lokker_popup_add); E_LIST_FOREACH(e_comp->zones, _lokker_popup_add);
total_zone_num = eina_list_count(e_comp->zones); total_zone_num = eina_list_count(e_comp->zones);
@ -882,6 +883,8 @@ EINTERN void
lokker_unlock(void) lokker_unlock(void)
{ {
E_FREE_LIST(edd->elock_wnd_list, _lokker_popup_free); 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); E_FREE_LIST(edd->handlers, ecore_event_handler_del);
if (edd->move_handler) ecore_event_handler_del(edd->move_handler); if (edd->move_handler) ecore_event_handler_del(edd->move_handler);