From: Woochan Lee Date: Mon, 19 Jun 2017 03:00:30 +0000 (+0900) Subject: multibuttonentry: Fix expand state changed callback called many times. X-Git-Tag: upstream/1.20.0~495 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3805544a32cd9ab6920ba770e2717e1a41436a88;p=platform%2Fupstream%2Fefl.git 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 --- diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c index 04c6ea6..c982803 100644 --- a/src/lib/elementary/elc_multibuttonentry.c +++ b/src/lib/elementary/elc_multibuttonentry.c @@ -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)