From 71824e1fe0bd0827ac3fc8ddaf6d30b85197fe49 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Thu, 31 Aug 2017 14:14:50 +0900 Subject: [PATCH] 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;