multibuttonentry: Fix expand state changed callback called many times.
authorWoochan Lee <wc0917.lee@samsung.com>
Mon, 19 Jun 2017 03:00:30 +0000 (12:00 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Mon, 19 Jun 2017 06:14:20 +0000 (15:14 +0900)
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

src/lib/elementary/elc_multibuttonentry.c

index 04c6ea6..c982803 100644 (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)