Sorry for pushing this. Violates our commit guidelines. :(

I haven't noticed that for some reason.

--
Tom.

On 09/06/15 14:07, Shinwoo Kim wrote:
> tasn pushed a commit to branch master.
>
> http://git.enlightenment.org/core/elementary.git/commit/?id=0e126b7091edcd9bd905fdbbe5b4f7d04f569586
>
> commit 0e126b7091edcd9bd905fdbbe5b4f7d04f569586
> Author: Shinwoo Kim <cinoo....@samsung.com>
> Date:   Tue Jun 9 14:05:58 2015 +0100
>
>      [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
> ---
>   src/lib/elm_layout.c        | 21 +++++++++++++++------
>   src/lib/elm_theme.c         |  1 -
>   src/lib/elm_widget_layout.h |  1 +
>   3 files changed, 16 insertions(+), 7 deletions(-)
>
> diff --git a/src/lib/elm_layout.c b/src/lib/elm_layout.c
> index 991112b..f49d158 100644
> --- a/src/lib/elm_layout.c
> +++ b/src/lib/elm_layout.c
> @@ -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);
> diff --git a/src/lib/elm_theme.c b/src/lib/elm_theme.c
> index e2db509..8fa383e 100644
> --- a/src/lib/elm_theme.c
> +++ b/src/lib/elm_theme.c
> @@ -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))
>        {
> diff --git a/src/lib/elm_widget_layout.h b/src/lib/elm_widget_layout.h
> index f109da6..0e0871c 100644
> --- a/src/lib/elm_widget_layout.h
> +++ b/src/lib/elm_widget_layout.h
> @@ -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;
>
>   /**
>


------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to