[layout] support mirrored set for layout which is using elm_layout_file_set()
Summary: mirroed mode does not work, if layout uses elm_layout_file_set(). Test Plan: the following is test code. [test.edc] collections { group { name: "layout/test"; parts { part { name: "bg"; type: RECT; description { state: "default" 0.0; color: 255 255 0 100; } } part { name: "test.rect"; type: RECT; description { state: "default" 0.0; color: 255 0 0 255; rel1.to: bg; rel1.relative: 0.2 0.1; rel2.to: bg; rel2.relative: 0.5 0.2; } } } /* parts */ } /* group */ } /* collections */ [test.c] //Compile with: //gcc -g test.c -o test `pkg-config --cflags --libs elementary` #include <Elementary.h> #include <Ecore_X.h> static void _bt_click(void *data, Evas_Object *obj, void *event_info) { Eina_Bool mirrored; Evas_Object *layout; layout = data; mirrored = elm_config_mirrored_get(); mirrored = !mirrored; printf("mirred: %d\n", mirrored); elm_config_mirrored_set(mirrored); } EAPI_MAIN int elm_main(int argc, char **argv) { Evas_Object *win, *box, *layout, *bt, *check; char buf[PATH_MAX]; elm_app_info_set(elm_main, "elementary", "./test.edj"); elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); win = elm_win_add(NULL, "Layout", ELM_WIN_BASIC); elm_win_autodel_set(win, EINA_TRUE); box = elm_box_add(win); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, box); evas_object_show(box); // Adding layout and filling it with widgets layout = elm_layout_add(win); evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); snprintf(buf, sizeof(buf), "./test.edj"); elm_layout_file_set(layout, buf, "layout/test"); elm_box_pack_end(box, layout); evas_object_show(layout); bt = elm_button_add(win); elm_object_text_set(bt, "mirrored"); evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_smart_callback_add(bt, "clicked", _bt_click, layout); elm_box_pack_end(box, bt); evas_object_show(bt); check = elm_check_add(win); elm_object_text_set(check, "test"); evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, check); evas_object_show(check); evas_object_resize(win, 500, 500); evas_object_show(win); elm_run(); elm_shutdown(); return 0; } ELM_MAIN() Reviewers: seoz, raster, tasn, Hermet Subscribers: seoz, cedric Differential Revision: https://phab.enlightenment.org/D2142
This commit is contained in:
parent
e99831eb2f
commit
3a80bbcb41
|
@ -359,13 +359,17 @@ _elm_layout_theme_internal(Eo *obj, Elm_Layout_Smart_Data *sd)
|
|||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
|
||||
|
||||
/* function already prints error messages, if any */
|
||||
if (!elm_widget_theme_object_set(obj, wd->resize_obj, sd->klass, sd->group,
|
||||
elm_widget_style_get(obj)))
|
||||
return EINA_FALSE;
|
||||
if (!sd->file_set)
|
||||
{
|
||||
ret = elm_widget_theme_object_set
|
||||
(obj, wd->resize_obj, sd->klass, sd->group,
|
||||
elm_widget_style_get(obj));
|
||||
}
|
||||
|
||||
ret = _visuals_refresh(obj, sd);
|
||||
if (ret)
|
||||
evas_object_smart_callback_call(obj, SIG_THEME_CHANGED, NULL);
|
||||
|
||||
evas_object_smart_callback_call(obj, SIG_THEME_CHANGED, NULL);
|
||||
ret = _visuals_refresh(obj, sd) && ret;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -852,7 +856,11 @@ _elm_layout_efl_file_file_set(Eo *obj, Elm_Layout_Smart_Data *sd, const char *fi
|
|||
int_ret =
|
||||
edje_object_file_set(wd->resize_obj, file, group);
|
||||
|
||||
if (int_ret) _visuals_refresh(obj, sd);
|
||||
if (int_ret)
|
||||
{
|
||||
sd->file_set = EINA_TRUE;
|
||||
_visuals_refresh(obj, sd);
|
||||
}
|
||||
else
|
||||
ERR("failed to set edje file '%s', group '%s': %s",
|
||||
file, group,
|
||||
|
@ -874,6 +882,7 @@ _elm_layout_theme_set(Eo *obj, Elm_Layout_Smart_Data *sd, const char *klass, con
|
|||
{
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
|
||||
|
||||
if (sd->file_set) sd->file_set = EINA_FALSE;
|
||||
eina_stringshare_replace(&(sd->klass), klass);
|
||||
eina_stringshare_replace(&(sd->group), group);
|
||||
eina_stringshare_replace(&(wd->style), style);
|
||||
|
|
|
@ -293,7 +293,6 @@ _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char *clas, const char *grou
|
|||
|
||||
if ((!clas) || (!group) || (!style)) return EINA_FALSE;
|
||||
if (!th) th = &(theme_default);
|
||||
|
||||
snprintf(buf2, sizeof(buf2), "elm/%s/%s/%s", clas, group, style);
|
||||
if (!eina_hash_find(th->cache_style_load_failed, buf2))
|
||||
{
|
||||
|
|
|
@ -84,6 +84,7 @@ typedef struct _Elm_Layout_Smart_Data
|
|||
Eina_Bool restricted_calc_h : 1;
|
||||
Eina_Bool can_access : 1; /**< This is true when all text(including textblock) parts can be accessible by accessibility. */
|
||||
Eina_Bool destructed_is : 1; /**< This flag indicates if Elm_Layout destructor was called */
|
||||
Eina_Bool file_set : 1; /**< This flag indicates if Elm_Layout source file is set */
|
||||
} Elm_Layout_Smart_Data;
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue