+//TIZEN_ONLY(20170919): Handle default label object
+static void
+_default_label_obj_del_cb (void *data,
+ Evas *e EINA_UNUSED,
+ Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ ELM_WIN_DATA_GET(data, sd);
+ if (!sd) return;
+
+ sd->default_label_objs = eina_list_remove(sd->default_label_objs, obj);
+}
+
+static int _sort_parent_child_order(const void *data1, const void *data2)
+{
+ if (data1)
+ {
+ Eo *parent;
+ eo_do(data1, parent = elm_interface_atspi_accessible_parent_get());
+ while (parent)
+ {
+ if (parent == data2) return 1;
+ eo_do(parent, parent = elm_interface_atspi_accessible_parent_get());
+ }
+ }
+ return -1;
+}
+
+void
+_elm_win_default_label_obj_append(Evas_Object *default_label_obj)
+{
+ if (!default_label_obj) return;
+
+ Evas_Object *win = elm_widget_top_get(default_label_obj);
+ if (!win || !eo_isa(win, ELM_WIN_CLASS))
+ {
+ WRN("The top object of %s is not a window.",
+ eo_class_name_get(eo_class_get(default_label_obj)));
+ return;
+ }
+
+ ELM_WIN_DATA_GET(win, sd);
+ if (!sd) return;
+
+ if (eina_list_data_find(sd->default_label_objs, default_label_obj))
+ {
+ sd->default_label_objs =
+ eina_list_remove(sd->default_label_objs, default_label_obj);
+ evas_object_event_callback_del_full(default_label_obj, EVAS_CALLBACK_DEL,
+ _default_label_obj_del_cb, win);
+ }
+
+ evas_object_event_callback_add(default_label_obj, EVAS_CALLBACK_DEL,
+ _default_label_obj_del_cb, win);
+ sd->default_label_objs =
+ eina_list_append(sd->default_label_objs, default_label_obj);
+
+ sd->default_label_objs =
+ eina_list_sort(sd->default_label_objs, -1, _sort_parent_child_order);
+}
+
+void
+_elm_win_default_label_obj_remove(Evas_Object *default_label_obj)
+{
+ if (!default_label_obj) return;
+
+ Evas_Object *win = elm_widget_top_get(default_label_obj);
+ if (!win || !eo_isa(win, ELM_WIN_CLASS))
+ {
+ WRN("The top object of %s is not a window.",
+ eo_class_name_get(eo_class_get(default_label_obj)));
+ return;
+ }
+
+ ELM_WIN_DATA_GET(win, sd);
+ if (!sd) return;
+
+ if (eina_list_data_find(sd->default_label_objs, default_label_obj))
+ {
+ sd->default_label_objs =
+ eina_list_remove(sd->default_label_objs, default_label_obj);
+ evas_object_event_callback_del_full(default_label_obj, EVAS_CALLBACK_DEL,
+ _default_label_obj_del_cb, win);
+ }
+}
+
+Evas_Object *
+_elm_win_default_label_obj_get(Evas_Object *obj)
+{
+ if (!obj) return NULL;
+ ELM_WIN_DATA_GET(obj, sd);
+ if (!sd) return NULL;
+
+ return eina_list_last_data_get(sd->default_label_objs);
+}
+//
+