jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=71824e1fe0bd0827ac3fc8ddaf6d30b85197fe49

commit 71824e1fe0bd0827ac3fc8ddaf6d30b85197fe49
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Thu Aug 31 14:14:50 2017 +0900

    mbe: Fix infinite recursion on focus change
    
    Ref D4882
---
 src/lib/elementary/elc_multibuttonentry.c        | 6 ++++++
 src/lib/elementary/elm_widget_multibuttonentry.h | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elc_multibuttonentry.c 
b/src/lib/elementary/elc_multibuttonentry.c
index cf59d7738d..8a14381926 100644
--- a/src/lib/elementary/elc_multibuttonentry.c
+++ b/src/lib/elementary/elc_multibuttonentry.c
@@ -350,6 +350,9 @@ _elm_multibuttonentry_elm_widget_on_focus(Eo *obj, 
Elm_Multibuttonentry_Data *sd
 {
    if (elm_widget_focus_get(obj))
      {
+        if (sd->focused) goto end;
+        sd->focused = EINA_TRUE;
+
         // ACCESS
         if (_elm_config->access_mode == ELM_ACCESS_MODE_ON) goto end;
 
@@ -373,6 +376,9 @@ _elm_multibuttonentry_elm_widget_on_focus(Eo *obj, 
Elm_Multibuttonentry_Data *sd
      }
    else
      {
+        if (sd->focused) goto end;
+        sd->focused = EINA_FALSE;
+
         if (sd->editable)
           {
              _view_update(sd);
diff --git a/src/lib/elementary/elm_widget_multibuttonentry.h 
b/src/lib/elementary/elm_widget_multibuttonentry.h
index a6d5041718..ca8b58e03e 100644
--- a/src/lib/elementary/elm_widget_multibuttonentry.h
+++ b/src/lib/elementary/elm_widget_multibuttonentry.h
@@ -104,7 +104,7 @@ struct _Elm_Multibuttonentry_Data
 
    Eina_Bool                           last_it_select : 1;
    Eina_Bool                           editable : 1;
-   Eina_Bool                           focused : 1;
+   Eina_Bool                           focused : 1; // avoids infinite loop on 
focus in/out
    Eina_Bool                           label_packed : 1;
 
    Ecore_Timer                         *longpress_timer;

-- 


Reply via email to