multibuttonentry: Fix expand state changed callback called many times.

Summary:
The expand state changed callback has been called when layout property changed and other reason.
Even expand state is not changed.

So we need to check the current view state to call expand changed callback.
(We can't prevent calling the _shrink_mode_set() function. It needs to call the re-arrange internal items.)

Test Plan:
elemenatay_test - multibuttonentry.

Check the shrink, expand state.

Reviewers: jpeg, cedric, woohyun

Reviewed By: jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4970
This commit is contained in:
Woochan Lee 2017-06-19 12:00:30 +09:00 committed by Jean-Philippe Andre
parent 08f04b1496
commit 3805544a32
1 changed files with 12 additions and 6 deletions

View File

@ -270,9 +270,12 @@ _shrink_mode_set(Evas_Object *obj,
}
}
sd->view_state = MULTIBUTTONENTRY_VIEW_SHRINK;
efl_event_callback_legacy_call
(obj, ELM_MULTIBUTTONENTRY_EVENT_EXPAND_STATE_CHANGED, (void *)1);
if (sd->view_state != MULTIBUTTONENTRY_VIEW_SHRINK)
{
sd->view_state = MULTIBUTTONENTRY_VIEW_SHRINK;
efl_event_callback_legacy_call
(obj, ELM_MULTIBUTTONENTRY_EVENT_EXPAND_STATE_CHANGED, (void *)1);
}
}
else
{
@ -300,9 +303,12 @@ _shrink_mode_set(Evas_Object *obj,
item->visible = EINA_TRUE;
}
sd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
efl_event_callback_legacy_call
(obj, ELM_MULTIBUTTONENTRY_EVENT_EXPAND_STATE_CHANGED, (void *)(uintptr_t)sd->shrink);
if (sd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK)
{
sd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
efl_event_callback_legacy_call
(obj, ELM_MULTIBUTTONENTRY_EVENT_EXPAND_STATE_CHANGED, (void *)(uintptr_t)sd->shrink);
}
}
if (sd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK)