summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2019-02-27 14:00:14 -0500
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2019-02-27 20:19:23 +0100
commit0b152734ba13d46155b2c1dcc98cd13c79fc804c (patch)
treec561dfae458ad5c53f2f44f2c20db81d28a61167
parent98b4a7bfa74201cccacd62cb84230a194fa8c697 (diff)
efl_ui_widget: redo disable handling
before the disable property was a bit weird. Setting something to disabled=true will disable all children of the widget that is changed. However, only the update function of the children will get the false flag, not the flag itself. Which means, to query the real disabled state, we need to walk up the parent relations. With this patch, every change to disabled will go through the disabled property, which mean, a implementor can just overwrite the disabled property, and adjust its internal state there. Just be carefull, a set to disabled=true still might result in disabled=false. This makes the function on_disable_update unneccesary. Which also cleans up the Efl.Ui.Widget class. ref T7553 Depends on D8016 Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Differential Revision: https://phab.enlightenment.org/D8017
-rw-r--r--src/lib/elementary/efl_ui_layout.c56
-rw-r--r--src/lib/elementary/efl_ui_layout_base.eo2
-rw-r--r--src/lib/elementary/efl_ui_panel.c9
-rw-r--r--src/lib/elementary/efl_ui_panel.eo2
-rw-r--r--src/lib/elementary/efl_ui_text.c22
-rw-r--r--src/lib/elementary/efl_ui_text.eo2
-rw-r--r--src/lib/elementary/efl_ui_widget.c72
-rw-r--r--src/lib/elementary/efl_ui_widget.eo13
-rw-r--r--src/lib/elementary/efl_ui_win.c5
-rw-r--r--src/lib/elementary/elm_entry.c36
-rw-r--r--src/lib/elementary/elm_entry.eo2
-rw-r--r--src/lib/elementary/elm_gesture_layer.c10
-rw-r--r--src/lib/elementary/elm_gesture_layer.eo2
-rw-r--r--src/lib/elementary/elm_list.c11
-rw-r--r--src/lib/elementary/elm_list.eo2
-rw-r--r--src/lib/elementary/elm_main.c14
-rw-r--r--src/lib/elementary/elm_panel.c13
-rw-r--r--src/lib/elementary/elm_panel.eo2
-rw-r--r--src/lib/elementary/elm_segment_control.c11
-rw-r--r--src/lib/elementary/elm_segment_control.eo2
-rw-r--r--src/lib/elementary/elm_widget.h2
-rw-r--r--src/tests/elementary/elm_test_box.c38
22 files changed, 159 insertions, 169 deletions
diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c
index 5dd2c3d1a8..ed097fc118 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -395,12 +395,29 @@ _efl_ui_layout_highlight_in_theme(Evas_Object *obj)
395 elm_widget_access_highlight_in_theme_set(obj, EINA_FALSE); 395 elm_widget_access_highlight_in_theme_set(obj, EINA_FALSE);
396} 396}
397 397
398static void
399_flush_mirrored_state(Eo *obj)
400{
401 char prefix[4], state[10], signal[100];
402
403 if (efl_ui_widget_disabled_get(obj))
404 snprintf(state, sizeof(state), "disabled");
405 else
406 snprintf(state, sizeof(state), "enabled");
407
408 if (!elm_widget_is_legacy(obj))
409 snprintf(prefix, sizeof(prefix), "efl");
410 else
411 snprintf(prefix, sizeof(prefix), "elm");
412
413 snprintf(signal, sizeof(signal), "%s,state,%s", prefix, state);
414 efl_layout_signal_emit(obj, signal, prefix);
415}
416
398static Eina_Bool 417static Eina_Bool
399_visuals_refresh(Evas_Object *obj, 418_visuals_refresh(Evas_Object *obj,
400 Efl_Ui_Layout_Data *sd) 419 Efl_Ui_Layout_Data *sd)
401{ 420{
402 Eina_Bool ret = EINA_FALSE;
403
404 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); 421 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
405 422
406 _parts_signals_emit(sd); 423 _parts_signals_emit(sd);
@@ -414,41 +431,18 @@ _visuals_refresh(Evas_Object *obj,
414 efl_gfx_entity_scale_get(obj) * elm_config_scale_get()); 431 efl_gfx_entity_scale_get(obj) * elm_config_scale_get());
415 432
416 _efl_ui_layout_highlight_in_theme(obj); 433 _efl_ui_layout_highlight_in_theme(obj);
417 434 _flush_mirrored_state(obj);
418 ret = efl_ui_widget_on_disabled_update(obj, elm_widget_disabled_get(obj));
419 435
420 elm_layout_sizing_eval(obj); 436 elm_layout_sizing_eval(obj);
421 437
422 return ret; 438 return EINA_TRUE;
423} 439}
424 440
425EOLIAN static Eina_Bool 441EOLIAN static void
426_efl_ui_layout_base_efl_ui_widget_on_disabled_update(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, Eina_Bool disabled) 442_efl_ui_layout_base_efl_ui_widget_disabled_set(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, Eina_Bool disabled)
427{ 443{
428 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); 444 efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
429 445 _flush_mirrored_state(obj);
430 // Not calling efl_super here: Elm.Widget simply returns false.
431
432 if (elm_widget_is_legacy(obj))
433 {
434 if (disabled)
435 edje_object_signal_emit
436 (wd->resize_obj, "elm,state,disabled", "elm");
437 else
438 edje_object_signal_emit
439 (wd->resize_obj, "elm,state,enabled", "elm");
440 }
441 else
442 {
443 if (disabled)
444 edje_object_signal_emit
445 (wd->resize_obj, "efl,state,disabled", "efl");
446 else
447 edje_object_signal_emit
448 (wd->resize_obj, "efl,state,enabled", "efl");
449 }
450
451 return EINA_TRUE;
452} 446}
453 447
454static Efl_Ui_Theme_Apply_Result 448static Efl_Ui_Theme_Apply_Result
diff --git a/src/lib/elementary/efl_ui_layout_base.eo b/src/lib/elementary/efl_ui_layout_base.eo
index a024feefd6..68437219ff 100644
--- a/src/lib/elementary/efl_ui_layout_base.eo
+++ b/src/lib/elementary/efl_ui_layout_base.eo
@@ -82,7 +82,7 @@ abstract @beta Efl.Ui.Layout_Base extends Efl.Ui.Widget implements Efl.Container
82 Efl.Layout.Group.part_exist { get; } 82 Efl.Layout.Group.part_exist { get; }
83 Efl.Ui.Widget.widget_sub_object_add; 83 Efl.Ui.Widget.widget_sub_object_add;
84 Efl.Ui.Widget.theme_apply; 84 Efl.Ui.Widget.theme_apply;
85 Efl.Ui.Widget.on_disabled_update; 85 Efl.Ui.Widget.disabled {set;}
86 Efl.Ui.Widget.widget_sub_object_del; 86 Efl.Ui.Widget.widget_sub_object_del;
87 Efl.Ui.Focus.Object.on_focus_update; 87 Efl.Ui.Focus.Object.on_focus_update;
88 Efl.Container.content_count; 88 Efl.Container.content_count;
diff --git a/src/lib/elementary/efl_ui_panel.c b/src/lib/elementary/efl_ui_panel.c
index 77c8ae15ec..285cebf6b0 100644
--- a/src/lib/elementary/efl_ui_panel.c
+++ b/src/lib/elementary/efl_ui_panel.c
@@ -1156,11 +1156,10 @@ _scroll_cb(Evas_Object *obj, void *data EINA_UNUSED)
1156 (obj, EFL_UI_EVENT_SCROLL, (void *) &event); 1156 (obj, EFL_UI_EVENT_SCROLL, (void *) &event);
1157} 1157}
1158 1158
1159EOLIAN static Eina_Bool 1159EOLIAN static void
1160_efl_ui_panel_efl_ui_widget_on_disabled_update(Eo *obj, Efl_Ui_Panel_Data *sd, Eina_Bool disabled) 1160_efl_ui_panel_efl_ui_widget_disabled_set(Eo *obj, Efl_Ui_Panel_Data *sd, Eina_Bool disabled)
1161{ 1161{
1162 if (!efl_ui_widget_on_disabled_update(efl_super(obj, MY_CLASS), disabled)) 1162 efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
1163 return EINA_FALSE;
1164 1163
1165 if (sd->scrollable) 1164 if (sd->scrollable)
1166 { 1165 {
@@ -1191,8 +1190,6 @@ _efl_ui_panel_efl_ui_widget_on_disabled_update(Eo *obj, Efl_Ui_Panel_Data *sd, E
1191 sd->callback_added = EINA_TRUE; 1190 sd->callback_added = EINA_TRUE;
1192 } 1191 }
1193 } 1192 }
1194
1195 return EINA_TRUE;
1196} 1193}
1197 1194
1198EOLIAN static double 1195EOLIAN static double
diff --git a/src/lib/elementary/efl_ui_panel.eo b/src/lib/elementary/efl_ui_panel.eo
index 8aa1189001..f1dadaa4b5 100644
--- a/src/lib/elementary/efl_ui_panel.eo
+++ b/src/lib/elementary/efl_ui_panel.eo
@@ -80,7 +80,7 @@ class @beta Efl.Ui.Panel extends Efl.Ui.Layout implements Efl.Ui.Focus.Layer, El
80 Efl.Gfx.Entity.size { set; } 80 Efl.Gfx.Entity.size { set; }
81 Efl.Canvas.Group.group_member_add; 81 Efl.Canvas.Group.group_member_add;
82 Efl.Ui.Widget.theme_apply; 82 Efl.Ui.Widget.theme_apply;
83 Efl.Ui.Widget.on_disabled_update; 83 Efl.Ui.Widget.disabled {set;}
84 Efl.Ui.Widget.on_access_update; 84 Efl.Ui.Widget.on_access_update;
85 Efl.Ui.Widget.widget_event; 85 Efl.Ui.Widget.widget_event;
86 Efl.Ui.Widget.interest_region { get; } 86 Efl.Ui.Widget.interest_region { get; }
diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index c6655ac93d..b079bf2e5b 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -698,10 +698,12 @@ _get_drop_format(Evas_Object *obj)
698} 698}
699 699
700/* we can't reuse layout's here, because it's on entry_edje only */ 700/* we can't reuse layout's here, because it's on entry_edje only */
701EOLIAN static Eina_Bool 701EOLIAN static void
702_efl_ui_text_efl_ui_widget_on_disabled_update(Eo *obj, Efl_Ui_Text_Data *sd, Eina_Bool disabled) 702_efl_ui_text_efl_ui_widget_disabled_set(Eo *obj, Efl_Ui_Text_Data *sd, Eina_Bool disabled)
703{ 703{
704 const char *emission ; 704 const char *emission;
705
706 efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
705 707
706 elm_drop_target_del(obj, sd->drop_format, 708 elm_drop_target_del(obj, sd->drop_format,
707 _dnd_enter_cb, NULL, 709 _dnd_enter_cb, NULL,
@@ -709,16 +711,16 @@ _efl_ui_text_efl_ui_widget_on_disabled_update(Eo *obj, Efl_Ui_Text_Data *sd, Ein
709 _dnd_pos_cb, NULL, 711 _dnd_pos_cb, NULL,
710 _dnd_drop_cb, NULL); 712 _dnd_drop_cb, NULL);
711 713
712 emission = disabled ? "efl,state,disabled" : "efl,state,enabled"; 714 emission = efl_ui_widget_disabled_get(obj) ? "efl,state,disabled" : "efl,state,enabled";
713 edje_object_signal_emit(sd->entry_edje, emission, "efl"); 715 edje_object_signal_emit(sd->entry_edje, emission, "efl");
714 if (sd->scroll) 716 if (sd->scroll)
715 { 717 {
716 edje_object_signal_emit(sd->scr_edje, emission, "efl"); 718 edje_object_signal_emit(sd->scr_edje, emission, "efl");
717 //elm_interface_scrollable_freeze_set(obj, disabled); 719 elm_interface_scrollable_freeze_set(obj, efl_ui_widget_disabled_get(obj));
718 } 720 }
719 sd->disabled = disabled; 721 sd->disabled = efl_ui_widget_disabled_get(obj);
720 722
721 if (!disabled) 723 if (!efl_ui_widget_disabled_get(obj))
722 { 724 {
723 sd->drop_format = _get_drop_format(obj); 725 sd->drop_format = _get_drop_format(obj);
724 elm_drop_target_add(obj, sd->drop_format, 726 elm_drop_target_add(obj, sd->drop_format,
@@ -727,8 +729,6 @@ _efl_ui_text_efl_ui_widget_on_disabled_update(Eo *obj, Efl_Ui_Text_Data *sd, Ein
727 _dnd_pos_cb, NULL, 729 _dnd_pos_cb, NULL,
728 _dnd_drop_cb, NULL); 730 _dnd_drop_cb, NULL);
729 } 731 }
730
731 return EINA_TRUE;
732} 732}
733 733
734/* we can't issue the layout's theming code here, cause it assumes an 734/* we can't issue the layout's theming code here, cause it assumes an
@@ -2071,7 +2071,7 @@ _format_color_parse(const char *str, int slen,
2071/** 2071/**
2072 * @internal 2072 * @internal
2073 * Updates the text properties of the object from the theme. 2073 * Updates the text properties of the object from the theme.
2074 * 2074 *
2075 * This update functions skips any property that was already set, 2075 * This update functions skips any property that was already set,
2076 * to allow users to override the theme during the construction of the widget. 2076 * to allow users to override the theme during the construction of the widget.
2077 */ 2077 */
@@ -3642,7 +3642,7 @@ _anchor_format_parse(const char *item)
3642static Anchor * 3642static Anchor *
3643_anchor_get(Eo *obj, Efl_Ui_Text_Data *sd, Efl_Text_Annotate_Annotation *an) 3643_anchor_get(Eo *obj, Efl_Ui_Text_Data *sd, Efl_Text_Annotate_Annotation *an)
3644{ 3644{
3645 Anchor *anc; 3645 Anchor *anc;
3646 Eina_List *i; 3646 Eina_List *i;
3647 const char *str; 3647 const char *str;
3648 3648
diff --git a/src/lib/elementary/efl_ui_text.eo b/src/lib/elementary/efl_ui_text.eo
index c4f4bf955b..79727f7d28 100644
--- a/src/lib/elementary/efl_ui_text.eo
+++ b/src/lib/elementary/efl_ui_text.eo
@@ -334,7 +334,7 @@ class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Ui.Clickable,
334 Efl.Ui.Widget.theme_apply; 334 Efl.Ui.Widget.theme_apply;
335 Efl.Ui.Focus.Object.on_focus_update; 335 Efl.Ui.Focus.Object.on_focus_update;
336 Efl.Ui.Widget.interest_region { get; } 336 Efl.Ui.Widget.interest_region { get; }
337 Efl.Ui.Widget.on_disabled_update; 337 Efl.Ui.Widget.disabled {set;}
338 //Efl.Ui.Widget.widget_sub_object_del; 338 //Efl.Ui.Widget.widget_sub_object_del;
339 //Elm.Interface_Scrollable.policy { set; } 339 //Elm.Interface_Scrollable.policy { set; }
340 //Elm.Interface_Scrollable.bounce_allow { set; } 340 //Elm.Interface_Scrollable.bounce_allow { set; }
diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c
index edff7f479b..d390d729a4 100644
--- a/src/lib/elementary/efl_ui_widget.c
+++ b/src/lib/elementary/efl_ui_widget.c
@@ -184,8 +184,6 @@ _elm_scrollable_is(const Evas_Object *obj)
184} 184}
185 185
186static void 186static void
187elm_widget_disabled_internal(Eo *obj, Eina_Bool disabled);
188static void
189_on_sub_obj_del(void *data, const Efl_Event *event); 187_on_sub_obj_del(void *data, const Efl_Event *event);
190static void _propagate_event(void *data, const Efl_Event *eo_event); 188static void _propagate_event(void *data, const Efl_Event *eo_event);
191static void _elm_widget_focus_tree_unfocusable_handle(Eo *obj); 189static void _elm_widget_focus_tree_unfocusable_handle(Eo *obj);
@@ -1338,8 +1336,6 @@ EOLIAN static Efl_Ui_Theme_Apply_Result
1338_efl_ui_widget_theme_apply(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED) 1336_efl_ui_widget_theme_apply(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
1339{ 1337{
1340 _elm_widget_mirrored_reload(obj); 1338 _elm_widget_mirrored_reload(obj);
1341 if (elm_widget_disabled_get(obj))
1342 elm_widget_disabled_internal(obj, elm_widget_disabled_get(obj));
1343 1339
1344 return EFL_UI_THEME_APPLY_RESULT_SUCCESS; 1340 return EFL_UI_THEME_APPLY_RESULT_SUCCESS;
1345} 1341}
@@ -1497,14 +1493,7 @@ _efl_ui_widget_widget_sub_object_add(Eo *obj, Elm_Widget_Smart_Data *sd, Evas_Ob
1497 sdc->parent_obj = obj; 1493 sdc->parent_obj = obj;
1498 1494
1499 _full_eval(sobj, sdc); 1495 _full_eval(sobj, sdc);
1500 1496 efl_ui_widget_disabled_set(sobj, efl_ui_widget_disabled_get(obj));
1501 if (!sdc->on_create)
1502 {
1503 if (!sdc->disabled && (elm_widget_disabled_get(obj)))
1504 {
1505 efl_ui_widget_on_disabled_update(sobj, EINA_TRUE);
1506 }
1507 }
1508 1497
1509 _elm_widget_top_win_focused_set(sobj, sd->top_win_focused); 1498 _elm_widget_top_win_focused_set(sobj, sd->top_win_focused);
1510 1499
@@ -2474,54 +2463,31 @@ _elm_widget_top_win_focused_get(const Evas_Object *obj)
2474 return sd->top_win_focused; 2463 return sd->top_win_focused;
2475} 2464}
2476 2465
2477static void 2466EOLIAN static void
2478_elm_widget_disabled_eval(const Evas_Object *obj, Eina_Bool disabled) 2467_efl_ui_widget_disabled_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd, Eina_Bool disabled)
2479{ 2468{
2480 const Eina_List *l; 2469 Efl_Ui_Widget *subs;
2481 Evas_Object *child; 2470 Eina_List *n;
2482 ELM_WIDGET_DATA_GET(obj, sd);
2483 2471
2484 EINA_LIST_FOREACH(sd->subobjs, l, child) 2472 if (disabled)
2473 pd->disabled ++;
2474 else
2475 pd->disabled = MAX(pd->disabled - 1 ,0);
2476
2477 EINA_LIST_FOREACH(pd->subobjs, n, subs)
2485 { 2478 {
2486 if (elm_widget_is(child)) 2479 if (efl_isa(subs, EFL_UI_WIDGET_CLASS))
2487 { 2480 efl_ui_widget_disabled_set(subs, efl_ui_widget_disabled_get(obj));
2488 efl_ui_widget_on_disabled_update(child, disabled);
2489 _elm_widget_disabled_eval(child, disabled);
2490 }
2491 } 2481 }
2492}
2493
2494static void
2495elm_widget_disabled_internal(Eo *obj, Eina_Bool disabled)
2496{
2497 if (!disabled && elm_widget_disabled_get(elm_widget_parent_get(obj)))
2498 return;
2499
2500 efl_ui_widget_on_disabled_update(obj, disabled);
2501 _elm_widget_disabled_eval(obj, disabled);
2502}
2503
2504EOLIAN static void
2505_efl_ui_widget_disabled_set(Eo *obj, Elm_Widget_Smart_Data *sd, Eina_Bool disabled)
2506{
2507 if (sd->disabled == disabled) return;
2508 sd->disabled = !!disabled;
2509
2510 elm_widget_disabled_internal(obj, disabled);
2511 2482
2512 if (efl_finalized_get(obj)) 2483 if (efl_finalized_get(obj))
2513 _elm_widget_full_eval_children(obj, sd); 2484 _elm_widget_full_eval_children(obj, pd);
2514} 2485}
2515 2486
2516EOLIAN static Eina_Bool 2487EOLIAN static Eina_Bool
2517_efl_ui_widget_disabled_get(const Eo *obj, Elm_Widget_Smart_Data *sd) 2488_efl_ui_widget_disabled_get(const Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd)
2518{ 2489{
2519 Eo *parent; 2490 return pd->disabled > 0;
2520
2521 if (sd->disabled) return EINA_TRUE;
2522 if ((parent = elm_widget_parent_get(obj)) != NULL)
2523 return elm_widget_disabled_get(parent);
2524 return EINA_FALSE;
2525} 2491}
2526 2492
2527EOLIAN static void 2493EOLIAN static void
@@ -5330,12 +5296,6 @@ _efl_ui_widget_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_Widget_Smart_Dat
5330} 5296}
5331 5297
5332EOLIAN static Eina_Bool 5298EOLIAN static Eina_Bool
5333_efl_ui_widget_on_disabled_update(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED, Eina_Bool disabled EINA_UNUSED)
5334{
5335 return EINA_FALSE;
5336}
5337
5338EOLIAN static Eina_Bool
5339_efl_ui_widget_widget_event(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const Efl_Event *eo_event EINA_UNUSED, Evas_Object *source EINA_UNUSED) 5299_efl_ui_widget_widget_event(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const Efl_Event *eo_event EINA_UNUSED, Evas_Object *source EINA_UNUSED)
5340{ 5300{
5341 return EINA_FALSE; 5301 return EINA_FALSE;
diff --git a/src/lib/elementary/efl_ui_widget.eo b/src/lib/elementary/efl_ui_widget.eo
index 6fb8a03c38..63a5ea765e 100644
--- a/src/lib/elementary/efl_ui_widget.eo
+++ b/src/lib/elementary/efl_ui_widget.eo
@@ -106,6 +106,8 @@ abstract @beta Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Obje
106 @property disabled { 106 @property disabled {
107 [[Whether the widget is enabled (accepts and reacts to user inputs). 107 [[Whether the widget is enabled (accepts and reacts to user inputs).
108 108
109 The property works counted, this means, whenever n-caller set the value to $true, n-caller have to set it to $false in order to get it out of the disabled state again.
110
109 Each widget may handle the disabled state differently, but overall 111 Each widget may handle the disabled state differently, but overall
110 disabled widgets shall not respond to any input events. This is 112 disabled widgets shall not respond to any input events. This is
111 $false by default, meaning the widget is enabled. 113 $false by default, meaning the widget is enabled.
@@ -312,17 +314,6 @@ abstract @beta Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Obje
312 return: bool; [[Indicates if the operation succeeded.]] 314 return: bool; [[Indicates if the operation succeeded.]]
313 legacy: elm_widget_sub_object_del; 315 legacy: elm_widget_sub_object_del;
314 } 316 }
315 on_disabled_update @protected {
316 [[Virtual function called when the widget becomes disabled.
317
318 This may be triggered even if this widget is not disabled, as the
319 parent widget could be disabled and propagate its state.
320 ]]
321 params {
322 disabled: bool; [[The new value of @.disabled.]]
323 }
324 return: bool; [[Indicates if the operation succeeded.]]
325 }
326 theme_apply @protected { 317 theme_apply @protected {
327 [[Virtual function called when the widget needs to re-apply its theme. 318 [[Virtual function called when the widget needs to re-apply its theme.
328 319
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index f3086dbc3f..99ccf86705 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -6973,7 +6973,7 @@ static Efl_Ui_Theme_Apply_Result
6973_elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd) 6973_elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd)
6974{ 6974{
6975 Efl_Ui_Theme_Apply_Result int_ret = EFL_UI_THEME_APPLY_RESULT_FAIL; 6975 Efl_Ui_Theme_Apply_Result int_ret = EFL_UI_THEME_APPLY_RESULT_FAIL;
6976 Eina_Bool ret = EINA_FALSE, prev_alpha; 6976 Eina_Bool prev_alpha;
6977 const char *s; 6977 const char *s;
6978 6978
6979 int_ret = elm_widget_theme_object_set(obj, sd->legacy.edje, "win", "base", 6979 int_ret = elm_widget_theme_object_set(obj, sd->legacy.edje, "win", "base",
@@ -6985,9 +6985,6 @@ _elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd)
6985 efl_gfx_entity_scale_get(obj) * elm_config_scale_get()); 6985 efl_gfx_entity_scale_get(obj) * elm_config_scale_get());
6986 6986
6987 efl_event_callback_legacy_call(obj, EFL_UI_WIN_EVENT_THEME_CHANGED, NULL); 6987 efl_event_callback_legacy_call(obj, EFL_UI_WIN_EVENT_THEME_CHANGED, NULL);
6988 ret = efl_ui_widget_on_disabled_update(obj, elm_widget_disabled_get(obj));
6989
6990 if (!ret) int_ret = EFL_UI_THEME_APPLY_RESULT_FAIL;
6991 6988
6992 prev_alpha = sd->theme_alpha; 6989 prev_alpha = sd->theme_alpha;
6993 s = edje_object_data_get(sd->legacy.edje, "alpha"); 6990 s = edje_object_data_get(sd->legacy.edje, "alpha");
diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c
index 4c42535571..981a108808 100644
--- a/src/lib/elementary/elm_entry.c
+++ b/src/lib/elementary/elm_entry.c
@@ -805,11 +805,25 @@ _get_drop_format(Evas_Object *obj)
805 return ELM_SEL_FORMAT_MARKUP; 805 return ELM_SEL_FORMAT_MARKUP;
806} 806}
807 807
808/* we can't reuse layout's here, because it's on entry_edje only */ 808static void
809EOLIAN static Eina_Bool 809_flush_disabled_state(Eo *obj, Elm_Entry_Data *sd)
810_elm_entry_efl_ui_widget_on_disabled_update(Eo *obj, Elm_Entry_Data *sd, Eina_Bool disabled)
811{ 810{
812 const char *emission; 811 const char *emission;
812 emission = efl_ui_widget_disabled_get(obj) ? "elm,state,disabled" : "elm,state,enabled";
813 edje_object_signal_emit(sd->entry_edje, emission, "elm");
814 if (sd->scroll)
815 {
816 edje_object_signal_emit(sd->scr_edje, emission, "elm");
817 elm_interface_scrollable_freeze_set(obj, efl_ui_widget_disabled_get(obj));
818 }
819}
820
821/* we can't reuse layout's here, because it's on entry_edje only */
822EOLIAN static void
823_elm_entry_efl_ui_widget_disabled_set(Eo *obj, Elm_Entry_Data *sd, Eina_Bool disabled)
824{
825
826 efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
813 827
814 elm_drop_target_del(obj, sd->drop_format, 828 elm_drop_target_del(obj, sd->drop_format,
815 _dnd_enter_cb, NULL, 829 _dnd_enter_cb, NULL,
@@ -817,16 +831,10 @@ _elm_entry_efl_ui_widget_on_disabled_update(Eo *obj, Elm_Entry_Data *sd, Eina_Bo
817 _dnd_pos_cb, NULL, 831 _dnd_pos_cb, NULL,
818 _dnd_drop_cb, NULL); 832 _dnd_drop_cb, NULL);
819 833
820 emission = disabled ? "elm,state,disabled" : "elm,state,enabled"; 834 _flush_disabled_state(obj, sd);
821 edje_object_signal_emit(sd->entry_edje, emission, "elm"); 835 sd->disabled = efl_ui_widget_disabled_get(obj);
822 if (sd->scroll)
823 {
824 edje_object_signal_emit(sd->scr_edje, emission, "elm");
825 elm_interface_scrollable_freeze_set(obj, disabled);
826 }
827 sd->disabled = disabled;
828 836
829 if (!disabled) 837 if (!efl_ui_widget_disabled_get(obj))
830 { 838 {
831 sd->drop_format = _get_drop_format(obj); 839 sd->drop_format = _get_drop_format(obj);
832 elm_drop_target_add(obj, sd->drop_format, 840 elm_drop_target_add(obj, sd->drop_format,
@@ -835,8 +843,6 @@ _elm_entry_efl_ui_widget_on_disabled_update(Eo *obj, Elm_Entry_Data *sd, Eina_Bo
835 _dnd_pos_cb, NULL, 843 _dnd_pos_cb, NULL,
836 _dnd_drop_cb, NULL); 844 _dnd_drop_cb, NULL);
837 } 845 }
838
839 return EINA_TRUE;
840} 846}
841 847
842/* It gets the background object from from_edje object and 848/* It gets the background object from from_edje object and
@@ -1022,6 +1028,8 @@ _elm_entry_efl_ui_widget_theme_apply(Eo *obj, Elm_Entry_Data *sd)
1022 1028
1023 evas_object_unref(obj); 1029 evas_object_unref(obj);
1024 1030
1031 _flush_disabled_state(obj, sd);
1032
1025 return theme_apply; 1033 return theme_apply;
1026} 1034}
1027 1035
diff --git a/src/lib/elementary/elm_entry.eo b/src/lib/elementary/elm_entry.eo
index d91c4232fd..fb903db52a 100644
--- a/src/lib/elementary/elm_entry.eo
+++ b/src/lib/elementary/elm_entry.eo
@@ -868,7 +868,7 @@ class Elm.Entry extends Efl.Ui.Layout_Base implements Elm.Interface_Scrollable,
868 Efl.Ui.Widget_Focus_Manager.focus_manager_create; 868 Efl.Ui.Widget_Focus_Manager.focus_manager_create;
869 Efl.Ui.Focus.Object.on_focus_update; 869 Efl.Ui.Focus.Object.on_focus_update;
870 Efl.Ui.Widget.interest_region { get; } 870 Efl.Ui.Widget.interest_region { get; }
871 Efl.Ui.Widget.on_disabled_update; 871 Efl.Ui.Widget.disabled {set;}
872 Efl.Ui.Widget.widget_sub_object_del; 872 Efl.Ui.Widget.widget_sub_object_del;
873 Elm.Interface_Scrollable.policy { set; } 873 Elm.Interface_Scrollable.policy { set; }
874 Elm.Interface_Scrollable.bounce_allow { set; } 874 Elm.Interface_Scrollable.bounce_allow { set; }
diff --git a/src/lib/elementary/elm_gesture_layer.c b/src/lib/elementary/elm_gesture_layer.c
index c711e2a184..b1c3212e27 100644
--- a/src/lib/elementary/elm_gesture_layer.c
+++ b/src/lib/elementary/elm_gesture_layer.c
@@ -3733,15 +3733,15 @@ _rotate_test(Evas_Object *obj,
3733 } 3733 }
3734} 3734}
3735 3735
3736EOLIAN static Eina_Bool 3736EOLIAN static void
3737_elm_gesture_layer_efl_ui_widget_on_disabled_update(Eo *obj, Elm_Gesture_Layer_Data *_pd EINA_UNUSED, Eina_Bool disabled) 3737_elm_gesture_layer_efl_ui_widget_disabled_set(Eo *obj, Elm_Gesture_Layer_Data *_pd EINA_UNUSED, Eina_Bool disabled)
3738{ 3738{
3739 if (disabled) 3739 efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
3740
3741 if (efl_ui_widget_disabled_get(obj))
3740 _callbacks_unregister(obj); 3742 _callbacks_unregister(obj);
3741 else 3743 else
3742 _callbacks_register(obj); 3744 _callbacks_register(obj);
3743
3744 return EINA_TRUE;
3745} 3745}
3746 3746
3747EOLIAN static void 3747EOLIAN static void
diff --git a/src/lib/elementary/elm_gesture_layer.eo b/src/lib/elementary/elm_gesture_layer.eo
index 46a3479564..6fce6d4678 100644
--- a/src/lib/elementary/elm_gesture_layer.eo
+++ b/src/lib/elementary/elm_gesture_layer.eo
@@ -162,6 +162,6 @@ class Elm.Gesture_Layer extends Efl.Ui.Widget implements Efl.Ui.Legacy
162 implements { 162 implements {
163 class.constructor; 163 class.constructor;
164 Efl.Object.constructor; 164 Efl.Object.constructor;
165 Efl.Ui.Widget.on_disabled_update; 165 Efl.Ui.Widget.disabled {set;}
166 } 166 }
167} 167}
diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c
index 604c45be9a..ff72abd991 100644
--- a/src/lib/elementary/elm_list.c
+++ b/src/lib/elementary/elm_list.c
@@ -1077,13 +1077,12 @@ _show_region_hook(void *data EINA_UNUSED, Evas_Object *obj, Eina_Rect r)
1077 elm_interface_scrollable_content_region_set(obj, r.x, r.y, r.w, r.h); 1077 elm_interface_scrollable_content_region_set(obj, r.x, r.y, r.w, r.h);
1078} 1078}
1079 1079
1080EOLIAN static Eina_Bool 1080EOLIAN static void
1081_elm_list_efl_ui_widget_on_disabled_update(Eo *obj, Elm_List_Data *sd, Eina_Bool disabled) 1081_elm_list_efl_ui_widget_disabled_set(Eo *obj, Elm_List_Data *sd, Eina_Bool disabled)
1082{ 1082{
1083 if (!efl_ui_widget_on_disabled_update(efl_super(obj, MY_CLASS), disabled)) 1083 efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
1084 return EINA_FALSE;
1085 1084
1086 if (disabled) 1085 if (efl_ui_widget_disabled_get(obj))
1087 { 1086 {
1088 elm_widget_scroll_freeze_push(obj); 1087 elm_widget_scroll_freeze_push(obj);
1089 elm_widget_scroll_hold_push(obj); 1088 elm_widget_scroll_hold_push(obj);
@@ -1096,8 +1095,6 @@ _elm_list_efl_ui_widget_on_disabled_update(Eo *obj, Elm_List_Data *sd, Eina_Bool
1096 elm_widget_scroll_freeze_pop(obj); 1095 elm_widget_scroll_freeze_pop(obj);
1097 elm_widget_scroll_hold_pop(obj); 1096 elm_widget_scroll_hold_pop(obj);
1098 } 1097 }
1099
1100 return EINA_TRUE;
1101} 1098}
1102 1099
1103static void 1100static void
diff --git a/src/lib/elementary/elm_list.eo b/src/lib/elementary/elm_list.eo
index c2115ba476..6db5de2423 100644
--- a/src/lib/elementary/elm_list.eo
+++ b/src/lib/elementary/elm_list.eo
@@ -400,7 +400,7 @@ class Elm.List extends Efl.Ui.Layout implements Elm.Interface_Scrollable,
400 Efl.Ui.Widget.theme_apply; 400 Efl.Ui.Widget.theme_apply;
401 Efl.Ui.Widget.on_access_update; 401 Efl.Ui.Widget.on_access_update;
402 Efl.Ui.Widget.focus_highlight_geometry { get; } 402 Efl.Ui.Widget.focus_highlight_geometry { get; }
403 Efl.Ui.Widget.on_disabled_update; 403 Efl.Ui.Widget.disabled {set;}
404 Efl.Ui.Focus.Object.on_focus_update; 404 Efl.Ui.Focus.Object.on_focus_update;
405 Efl.Ui.L10n.translation_update; 405 Efl.Ui.L10n.translation_update;
406 Efl.Ui.Widget.widget_sub_object_del; 406 Efl.Ui.Widget.widget_sub_object_del;
diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c
index cc63a8e656..661901511c 100644
--- a/src/lib/elementary/elm_main.c
+++ b/src/lib/elementary/elm_main.c
@@ -1590,6 +1590,20 @@ elm_object_disabled_set(Evas_Object *obj,
1590 Eina_Bool disabled) 1590 Eina_Bool disabled)
1591{ 1591{
1592 EINA_SAFETY_ON_NULL_RETURN(obj); 1592 EINA_SAFETY_ON_NULL_RETURN(obj);
1593 ELM_WIDGET_DATA_GET_OR_RETURN(obj, pd);
1594 ELM_WIDGET_DATA_GET_OR_RETURN(efl_ui_widget_parent_get(obj), ppd);
1595 if (disabled)
1596 {
1597 //we aim here for the disabled count of parent + 1
1598 if (pd->disabled == ppd->disabled + 1) return;
1599 pd->disabled = ppd->disabled;
1600 }
1601 else
1602 {
1603 //we aim for the same disabled count as the parent here
1604 if (pd->disabled == ppd->disabled) return;
1605 pd->disabled = ppd->disabled + 1;
1606 }
1593 elm_widget_disabled_set(obj, disabled); 1607 elm_widget_disabled_set(obj, disabled);
1594} 1608}
1595 1609
diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index ac2fc2415a..a0f4798121 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -1242,15 +1242,14 @@ _scroll_cb(Evas_Object *obj, void *data EINA_UNUSED)
1242 (obj, EFL_UI_EVENT_SCROLL, (void *) &event); 1242 (obj, EFL_UI_EVENT_SCROLL, (void *) &event);
1243} 1243}
1244 1244
1245EOLIAN static Eina_Bool 1245EOLIAN static void
1246_elm_panel_efl_ui_widget_on_disabled_update(Eo *obj, Elm_Panel_Data *sd, Eina_Bool disabled) 1246_elm_panel_efl_ui_widget_disabled_set(Eo *obj, Elm_Panel_Data *sd, Eina_Bool disabled)
1247{ 1247{
1248 if (!efl_ui_widget_on_disabled_update(efl_super(obj, MY_CLASS), disabled)) 1248 efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
1249 return EINA_FALSE;
1250 1249
1251 if (sd->scrollable) 1250 if (sd->scrollable)
1252 { 1251 {
1253 if (disabled && sd->callback_added) 1252 if (efl_ui_widget_disabled_get(obj) && sd->callback_added)
1254 { 1253 {
1255 evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_DOWN, 1254 evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_DOWN,
1256 _on_mouse_down); 1255 _on_mouse_down);
@@ -1263,7 +1262,7 @@ _elm_panel_efl_ui_widget_on_disabled_update(Eo *obj, Elm_Panel_Data *sd, Eina_Bo
1263 1262
1264 sd->callback_added = EINA_FALSE; 1263 sd->callback_added = EINA_FALSE;
1265 } 1264 }
1266 else if (!disabled && !sd->callback_added) 1265 else if (!efl_ui_widget_disabled_get(obj) && !sd->callback_added)
1267 { 1266 {
1268 evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN, 1267 evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN,
1269 _on_mouse_down, sd); 1268 _on_mouse_down, sd);
@@ -1277,8 +1276,6 @@ _elm_panel_efl_ui_widget_on_disabled_update(Eo *obj, Elm_Panel_Data *sd, Eina_Bo
1277 sd->callback_added = EINA_TRUE; 1276 sd->callback_added = EINA_TRUE;
1278 } 1277 }
1279 } 1278 }
1280
1281 return EINA_TRUE;
1282} 1279}
1283 1280
1284EOLIAN static double 1281EOLIAN static double
diff --git a/src/lib/elementary/elm_panel.eo b/src/lib/elementary/elm_panel.eo
index 05ae83760a..f689607290 100644
--- a/src/lib/elementary/elm_panel.eo
+++ b/src/lib/elementary/elm_panel.eo
@@ -80,7 +80,7 @@ class Elm.Panel extends Efl.Ui.Layout implements Efl.Ui.Focus.Layer, Elm.Interfa
80 Efl.Gfx.Entity.size { set; } 80 Efl.Gfx.Entity.size { set; }
81 Efl.Canvas.Group.group_member_add; 81 Efl.Canvas.Group.group_member_add;
82 Efl.Ui.Widget.theme_apply; 82 Efl.Ui.Widget.theme_apply;
83 Efl.Ui.Widget.on_disabled_update; 83 Efl.Ui.Widget.disabled {set;}
84 Efl.Ui.Widget.on_access_update; 84 Efl.Ui.Widget.on_access_update;
85 Efl.Ui.Widget.widget_event; 85 Efl.Ui.Widget.widget_event;
86 Efl.Ui.Widget.interest_region { get; } 86 Efl.Ui.Widget.interest_region { get; }
diff --git a/src/lib/elementary/elm_segment_control.c b/src/lib/elementary/elm_segment_control.c
index 3bcc7207d9..5a51829d49 100644
--- a/src/lib/elementary/elm_segment_control.c
+++ b/src/lib/elementary/elm_segment_control.c
@@ -244,15 +244,12 @@ _elm_segment_control_efl_ui_widget_theme_apply(Eo *obj, Elm_Segment_Control_Data
244 return int_ret; 244 return int_ret;
245} 245}
246 246
247EOLIAN static Eina_Bool
248_elm_segment_control_efl_ui_widget_on_disabled_update(Eo *obj, Elm_Segment_Control_Data *sd, Eina_Bool disabled)
249{
250 if (!efl_ui_widget_on_disabled_update(efl_super(obj, MY_CLASS), disabled))
251 return EINA_FALSE;
252 247
248EOLIAN static void
249_elm_segment_control_efl_ui_widget_disabled_set(Eo *obj, Elm_Segment_Control_Data *sd, Eina_Bool disabled)
250{
251 efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
253 _update_list(sd); 252 _update_list(sd);
254
255 return EINA_TRUE;
256} 253}
257 254
258// TODO: elm_widget_focus_list_next_get supports only Elm_widget list, 255// TODO: elm_widget_focus_list_next_get supports only Elm_widget list,
diff --git a/src/lib/elementary/elm_segment_control.eo b/src/lib/elementary/elm_segment_control.eo
index 5bbce6f6a0..50f6a1ec6a 100644
--- a/src/lib/elementary/elm_segment_control.eo
+++ b/src/lib/elementary/elm_segment_control.eo
@@ -138,7 +138,7 @@ class Elm.Segment_Control extends Efl.Ui.Layout implements Efl.Ui.Focus.Composit
138 Efl.Object.constructor; 138 Efl.Object.constructor;
139 Efl.Ui.Widget.theme_apply; 139 Efl.Ui.Widget.theme_apply;
140 Efl.Ui.Widget.on_access_update; 140 Efl.Ui.Widget.on_access_update;
141 Efl.Ui.Widget.on_disabled_update; 141 Efl.Ui.Widget.disabled {set;}
142 Efl.Ui.L10n.translation_update; 142 Efl.Ui.L10n.translation_update;
143 } 143 }
144 events { 144 events {
diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h
index cc95ff75aa..3763d955ba 100644
--- a/src/lib/elementary/elm_widget.h
+++ b/src/lib/elementary/elm_widget.h
@@ -353,6 +353,7 @@ typedef struct _Elm_Widget_Smart_Data
353 353
354 int child_drag_x_locked; 354 int child_drag_x_locked;
355 int child_drag_y_locked; 355 int child_drag_y_locked;
356 int disabled;
356 357
357 Eina_Inlist *translate_strings; 358 Eina_Inlist *translate_strings;
358 Eina_List *focus_chain; 359 Eina_List *focus_chain;
@@ -394,7 +395,6 @@ typedef struct _Elm_Widget_Smart_Data
394 Eina_Bool highlight_ignore : 1; 395 Eina_Bool highlight_ignore : 1;
395 Eina_Bool highlight_in_theme : 1; 396 Eina_Bool highlight_in_theme : 1;
396 Eina_Bool access_highlight_in_theme : 1; 397 Eina_Bool access_highlight_in_theme : 1;
397 Eina_Bool disabled : 1;
398 Eina_Bool is_mirrored : 1; 398 Eina_Bool is_mirrored : 1;
399 Eina_Bool mirrored_auto_mode : 1; /* This is TRUE by default */ 399 Eina_Bool mirrored_auto_mode : 1; /* This is TRUE by default */
400 Eina_Bool still_in : 1; 400 Eina_Bool still_in : 1;
diff --git a/src/tests/elementary/elm_test_box.c b/src/tests/elementary/elm_test_box.c
index e5a8683696..e8c126f0d0 100644
--- a/src/tests/elementary/elm_test_box.c
+++ b/src/tests/elementary/elm_test_box.c
@@ -41,8 +41,46 @@ EFL_START_TEST(elm_atspi_role_get)
41} 41}
42EFL_END_TEST 42EFL_END_TEST
43 43
44EFL_START_TEST(elm_box_disabled_test)
45{
46 Evas_Object *win, *box, *o;
47 Efl_Access_Role role;
48
49 win = win_add(NULL, "box", ELM_WIN_BASIC);
50
51 box = elm_box_add(win);
52 elm_win_resize_object_add(box, win);
53 role = efl_access_object_role_get(box);
54
55 for (int i = 0; i < 3; ++i)
56 {
57 o = elm_button_add(box);
58 elm_box_pack_end(box, o);
59 }
60
61 elm_object_disabled_set(box, EINA_TRUE);
62 elm_object_disabled_set(box, EINA_TRUE);
63 ck_assert_int_eq(elm_object_disabled_get(box), EINA_TRUE);
64 ck_assert_int_eq(elm_object_disabled_get(o), EINA_TRUE);
65 elm_object_disabled_set(box, EINA_FALSE);
66 ck_assert_int_eq(elm_object_disabled_get(box), EINA_FALSE);
67 ck_assert_int_eq(elm_object_disabled_get(o), EINA_FALSE);
68 elm_object_disabled_set(box, EINA_TRUE);
69 elm_object_disabled_set(o, EINA_TRUE);
70 ck_assert_int_eq(elm_object_disabled_get(box), EINA_TRUE);
71 ck_assert_int_eq(elm_object_disabled_get(o), EINA_TRUE);
72 elm_object_disabled_set(box, EINA_FALSE);
73 ck_assert_int_eq(elm_object_disabled_get(box), EINA_FALSE);
74 ck_assert_int_eq(elm_object_disabled_get(o), EINA_TRUE);
75
76 ck_assert(role == EFL_ACCESS_ROLE_FILLER);
77
78}
79EFL_END_TEST
80
44void elm_test_box(TCase *tc) 81void elm_test_box(TCase *tc)
45{ 82{
46 tcase_add_test(tc, elm_box_legacy_type_check); 83 tcase_add_test(tc, elm_box_legacy_type_check);
47 tcase_add_test(tc, elm_atspi_role_get); 84 tcase_add_test(tc, elm_atspi_role_get);
85 tcase_add_test(tc, elm_box_disabled_test);
48} 86}