elm_layout: Internal refactoring about layout frozen check.

1. Moved frozen variable to more proper position. Elm_Widget_Smart_Data -> Elm_Layout_Smart_Data.
2. Check frozen at one place. This makes codes cleaner and reduces human mistakes.
This commit is contained in:
Daniel Juyung Seo 2013-10-05 17:59:58 +09:00
parent c40fbd89b8
commit 3a10554b11
3 changed files with 9 additions and 23 deletions

View File

@ -84,7 +84,6 @@ _on_sub_object_size_hint_change(void *data,
void *event_info __UNUSED__)
{
ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
if (wd->frozen) return;
eo_do(data, elm_obj_layout_sizing_eval());
}
@ -501,10 +500,8 @@ _elm_layout_smart_sub_object_del(Eo *obj, void *_pd, va_list *list)
break;
}
if (wd->frozen) goto end;
eo_do(obj, elm_obj_layout_sizing_eval());
end:
if (ret) *ret = EINA_TRUE;
}
@ -1070,8 +1067,6 @@ _elm_layout_smart_content_set(Eo *obj, void *_pd, va_list *list)
_icon_signal_emit(sd, sub_d, EINA_TRUE);
}
if (wd->frozen) goto end;
eo_do(obj, elm_obj_layout_sizing_eval());
end:
@ -1230,8 +1225,7 @@ _elm_layout_smart_text_set(Eo *obj, void *_pd, va_list *list)
_text_signal_emit(sd, sub_d, !!text);
if (!wd->frozen)
eo_do(obj, elm_obj_layout_sizing_eval());
eo_do(obj, elm_obj_layout_sizing_eval());
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON &&
wd->can_access && !(sub_d->obj))
@ -1315,10 +1309,8 @@ _elm_layout_smart_box_append(Eo *obj, void *_pd, va_list *list)
sub_d->obj = child;
sd->subs = eina_list_append(sd->subs, sub_d);
if (wd->frozen) goto end;
eo_do(obj, elm_obj_layout_sizing_eval());
end:
if (ret) *ret = EINA_TRUE;
}
@ -1368,10 +1360,8 @@ _elm_layout_smart_box_prepend(Eo *obj, void *_pd, va_list *list)
sub_d->obj = child;
sd->subs = eina_list_prepend(sd->subs, sub_d);
if (wd->frozen) goto end;;
eo_do(obj, elm_obj_layout_sizing_eval());
end:
if (ret) *ret = EINA_TRUE;
}
@ -1429,10 +1419,8 @@ _elm_layout_smart_box_insert_before(Eo *obj, void *_pd, va_list *list)
evas_object_event_callback_add
((Evas_Object *)reference, EVAS_CALLBACK_DEL, _box_reference_del, sub_d);
if (wd->frozen) goto end;
eo_do(obj, elm_obj_layout_sizing_eval());
end:
if (ret) *ret = EINA_TRUE;
}
@ -1486,10 +1474,8 @@ _elm_layout_smart_box_insert_at(Eo *obj, void *_pd, va_list *list)
sub_d->p.box.pos = pos;
sd->subs = eina_list_append(sd->subs, sub_d);
if (wd->frozen) goto end;
eo_do(obj, elm_obj_layout_sizing_eval());
end:
if (ret) *ret = EINA_TRUE;
}
@ -1643,10 +1629,8 @@ _elm_layout_smart_table_pack(Eo *obj, void *_pd, va_list *list)
sub_d->p.table.rowspan = rowspan;
sd->subs = eina_list_append(sd->subs, sub_d);
if (wd->frozen) goto end;
eo_do(obj, elm_obj_layout_sizing_eval());
end:
if (ret) *ret = EINA_TRUE;
}
@ -1794,7 +1778,7 @@ static void
_elm_layout_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
Elm_Layout_Smart_Data *sd = _pd;
if (sd->frozen) return;
if (sd->needs_size_calc) return;
sd->needs_size_calc = EINA_TRUE;
@ -1817,10 +1801,11 @@ _elm_layout_smart_freeze(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
int int_ret = 1;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
ELM_LAYOUT_DATA_GET(obj, sd);
if ((wd->frozen)++ != 0)
if ((sd->frozen)++ != 0)
{
int_ret = wd->frozen;
int_ret = sd->frozen;
goto end;
}
@ -1846,10 +1831,11 @@ _elm_layout_smart_thaw(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
int int_ret = 0;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
ELM_LAYOUT_DATA_GET(obj, sd);
if (--(wd->frozen) != 0)
if (--(sd->frozen) != 0)
{
int_ret = wd->frozen;
int_ret = sd->frozen;
goto end;
}

View File

@ -413,7 +413,6 @@ typedef struct _Elm_Widget_Smart_Data
void (*on_show_region)(void *data,
Evas_Object *obj);
int frozen;
int orient_mode; /* -1 is disabled */
Eina_Bool drag_x_locked : 1;

View File

@ -81,6 +81,7 @@ typedef struct _Elm_Layout_Smart_Data
Eina_List *edje_signals;
Eina_List *parts_cursors;
const char *klass, *group;
int frozen; /**< Layout freeze counter */
Eina_Bool needs_size_calc : 1;
} Elm_Layout_Smart_Data;