jaehwan pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=8033c99786e7ca1c421ffa2d10781dc60c7b978c

commit 8033c99786e7ca1c421ffa2d10781dc60c7b978c
Author: Jaehwan Kim <jae.hwan....@samsung.com>
Date:   Tue Jul 7 16:22:31 2015 +0900

    elm_conform: remember window pointer.
    
    When the conformant is removed, elm_widget_sub_object_del is called
    before calling _elm_conformant_evas_object_smart_del.
    Because parent-child relation about window-conformant is unrelated,
    there's no meaning elm_widget_top_get in
    _elm_conformant_evas_object_smart_del.
    
    @fix
---
 src/lib/elm_conform.c        | 25 ++++++++++---------------
 src/lib/elm_widget_conform.h |  1 +
 2 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/src/lib/elm_conform.c b/src/lib/elm_conform.c
index af37a51..dcb617b 100644
--- a/src/lib/elm_conform.c
+++ b/src/lib/elm_conform.c
@@ -893,8 +893,6 @@ _elm_conformant_evas_object_smart_add(Eo *obj, 
Elm_Conformant_Data *_pd EINA_UNU
 EOLIAN static void
 _elm_conformant_evas_object_smart_del(Eo *obj, Elm_Conformant_Data *sd)
 {
-   Evas_Object *top;
-
 #ifdef HAVE_ELEMENTARY_X
    ecore_event_handler_del(sd->prop_hdl);
 #endif
@@ -905,8 +903,7 @@ _elm_conformant_evas_object_smart_del(Eo *obj, 
Elm_Conformant_Data *sd)
    evas_object_del(sd->portrait_indicator);
    evas_object_del(sd->landscape_indicator);
 
-   top = elm_widget_top_get(obj);
-   evas_object_data_set(top, "\377 elm,conformant", NULL);
+   evas_object_data_set(sd->win, "\377 elm,conformant", NULL);
 
    eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
 }
@@ -947,27 +944,25 @@ elm_conformant_add(Evas_Object *parent)
 EOLIAN static Eo *
 _elm_conformant_eo_base_constructor(Eo *obj, Elm_Conformant_Data *sd)
 {
-   Evas_Object *top;
-
    obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
    eo_do(obj,
          evas_obj_type_set(MY_CLASS_NAME_LEGACY),
          evas_obj_smart_callbacks_descriptions_set(_smart_callbacks),
          elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_FILLER));
 
-   top = elm_widget_top_get(obj);
-   _on_indicator_mode_changed(obj, top, NULL);
-   _on_rotation_changed(obj, top, NULL);
+   sd->win = elm_widget_top_get(obj);
+   _on_indicator_mode_changed(obj, sd->win, NULL);
+   _on_rotation_changed(obj, sd->win, NULL);
 
-   sd->indmode = elm_win_indicator_mode_get(top);
-   sd->ind_o_mode = elm_win_indicator_opacity_get(top);
-   sd->rot = elm_win_rotation_get(top);
-   evas_object_data_set(top, "\377 elm,conformant", obj);
+   sd->indmode = elm_win_indicator_mode_get(sd->win);
+   sd->ind_o_mode = elm_win_indicator_opacity_get(sd->win);
+   sd->rot = elm_win_rotation_get(sd->win);
+   evas_object_data_set(sd->win, "\377 elm,conformant", obj);
 
    evas_object_smart_callback_add
-     (top, "indicator,prop,changed", _on_indicator_mode_changed, obj);
+     (sd->win, "indicator,prop,changed", _on_indicator_mode_changed, obj);
    evas_object_smart_callback_add
-     (top, "rotation,changed", _on_rotation_changed, obj);
+     (sd->win, "rotation,changed", _on_rotation_changed, obj);
 
    return obj;
 }
diff --git a/src/lib/elm_widget_conform.h b/src/lib/elm_widget_conform.h
index 16a3509..c312314 100644
--- a/src/lib/elm_widget_conform.h
+++ b/src/lib/elm_widget_conform.h
@@ -26,6 +26,7 @@
 typedef struct _Elm_Conformant_Data Elm_Conformant_Data;
 struct _Elm_Conformant_Data
 {
+   Evas_Object                   *win;
    Evas_Object                   *portrait_indicator;
    Evas_Object                   *landscape_indicator;
    Evas_Object                   *softkey;

-- 


Reply via email to