Please see comments on https://phab.enlightenment.org/D3481 for related
breakage.

On Sun, Jan 3, 2016 at 8:46 PM Youngbok Shin <[email protected]>
wrote:

> jaehwan pushed a commit to branch master.
>
>
> http://git.enlightenment.org/core/elementary.git/commit/?id=d1867909117123f74ac6a3561296a7bd57e5c22f
>
> commit d1867909117123f74ac6a3561296a7bd57e5c22f
> Author: Youngbok Shin <[email protected]>
> Date:   Mon Jan 4 09:31:29 2016 +0900
>
>     toolbar: Send a signal when shrink mode is changed.
>
>     Summary:
>     It is useful for changing item's state according to shrink mode.
>     @feature
>
>     Test Plan:
>     It includes a use case for the patch in toolbar default theme.
>     Run "elementary_test -to toolbar2".
>
>     Reviewers: jaehwan, woohyun, cedric, raster
>
>     Subscribers: eagleeye
>
>     Differential Revision: https://phab.enlightenment.org/D3481
> ---
>  data/themes/edc/elm/toolbar.edc | 90
> ++++++++++++++++++++++++++++++++++++++---
>  src/lib/elm_toolbar.c           | 31 ++++++++++++++
>  src/lib/elm_toolbar.eo          |  8 ++++
>  3 files changed, 123 insertions(+), 6 deletions(-)
>
> diff --git a/data/themes/edc/elm/toolbar.edc
> b/data/themes/edc/elm/toolbar.edc
> index d932ff2..f6cb533 100644
> --- a/data/themes/edc/elm/toolbar.edc
> +++ b/data/themes/edc/elm/toolbar.edc
> @@ -379,6 +379,8 @@ group { name: "elm/toolbar/item/default";
>  #define DISABLE  4
>     script {
>        public btmode;
> +      public vertical = 0;
> +      public scroll = 0;
>        public eval_mode(m) {
>           new m1 = m & MASK;
>           new d = m & DISABLE;
> @@ -432,6 +434,44 @@ group { name: "elm/toolbar/item/default";
>              }
>           }
>        }
> +
> +      public enable_scroll() {
> +         set_int(scroll, 1);
> +
> +         if (get_int(vertical))
> +            set_state(PART:"base", "vert_scroll", 0.0);
> +         else
> +            set_state(PART:"base", "scroll", 0.0);
> +      }
> +
> +      public disable_scroll() {
> +         set_int(scroll, 0);
> +
> +         if (get_int(vertical))
> +            set_state(PART:"base", "vert", 0.0);
> +         else
> +            set_state(PART:"base", "default", 0.0);
> +      }
> +
> +      public enable_vertical() {
> +         set_int(vertical, 1);
> +
> +         if (get_int(scroll))
> +            set_state(PART:"base", "vert_scroll", 0.0);
> +         else
> +            set_state(PART:"base", "vert", 0.0);
> +         set_state(PART:"bend_clip", "vert", 0.0);
> +      }
> +
> +      public disable_vertical() {
> +         set_int(vertical, 0);
> +
> +         if (get_int(scroll))
> +            set_state(PART:"base", "scroll", 0.0);
> +         else
> +            set_state(PART:"base", "default", 0.0);
> +         set_state(PART:"bend_clip", "default", 0.0);
> +      }
>     }
>     parts {
>        part { name: "base"; type: SPACER;
> @@ -441,6 +481,14 @@ group { name: "elm/toolbar/item/default";
>              rel1.offset: -1 0;
>              rel2.offset: 0 -1;
>           }
> +         description { state: "scroll" 0.0;
> +            inherit: "default" 0.0;
> +            min: 80 0;
> +         }
> +         description { state: "vert_scroll" 0.0;
> +            inherit: "vert" 0.0;
> +            min: 0 80;
> +         }
>        }
>        part { name: "shadow1"; mouse_events: 0;
>           description { state: "default" 0.0;
> @@ -810,15 +858,45 @@ group { name: "elm/toolbar/item/default";
>     programs {
>        program {
>           signal: "elm,orient,horizontal"; source: "elm";
> -         action: STATE_SET "default" 0.0;
> -         target: "base";
> -         target: "bend_clip";
> +         script {
> +            disable_vertical();
> +         }
>        }
>        program {
>           signal: "elm,orient,vertical"; source: "elm";
> -         action: STATE_SET "vert" 0.0;
> -         target: "base";
> -         target: "bend_clip";
> +         script {
> +            enable_vertical();
> +         }
> +      }
> +      program {
> +         signal: "elm,state,shrink,scroll"; source: "elm";
> +         script {
> +            enable_scroll();
> +         }
> +      }
> +      program {
> +         signal: "elm,state,shrink,none"; source: "elm";
> +         script {
> +            disable_scroll()
> +         }
> +      }
> +      program {
> +         signal: "elm,state,shrink,hide"; source: "elm";
> +         script {
> +            disable_scroll()
> +         }
> +      }
> +      program {
> +         signal: "elm,state,shrink,menu"; source: "elm";
> +         script {
> +            disable_scroll()
> +         }
> +      }
> +      program {
> +         signal: "elm,state,shrink,expand"; source: "elm";
> +         script {
> +            disable_scroll()
> +         }
>        }
>
>        program { name: "st0";
> diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
> index d5aaa50..a899bb9 100644
> --- a/src/lib/elm_toolbar.c
> +++ b/src/lib/elm_toolbar.c
> @@ -1224,6 +1224,31 @@ _item_del(Elm_Toolbar_Item_Data *it)
>  }
>
>  static void
> +_item_shrink_signal_emit(Evas_Object *view, Elm_Toolbar_Shrink_Mode
> shrink_mode)
> +{
> +   switch (shrink_mode)
> +     {
> +      case ELM_TOOLBAR_SHRINK_HIDE:
> +         elm_layout_signal_emit(view, "elm,state,shrink,hide", "elm");
> +         break;
> +      case ELM_TOOLBAR_SHRINK_SCROLL:
> +         elm_layout_signal_emit(view, "elm,state,shrink,scroll", "elm");
> +         break;
> +      case ELM_TOOLBAR_SHRINK_MENU:
> +         elm_layout_signal_emit(view, "elm,state,shrink,menu", "elm");
> +         break;
> +      case ELM_TOOLBAR_SHRINK_EXPAND:
> +         elm_layout_signal_emit(view, "elm,state,shrink,expand", "elm");
> +         break;
> +      case ELM_TOOLBAR_SHRINK_NONE:
> +      case ELM_TOOLBAR_SHRINK_LAST:
> +      default:
> +         elm_layout_signal_emit(view, "elm,state,shrink,default", "elm");
> +         break;
> +     }
> +}
> +
> +static void
>  _item_theme_hook(Evas_Object *obj,
>                   Elm_Toolbar_Item_Data *it,
>                   double scale,
> @@ -1286,6 +1311,8 @@ _item_theme_hook(Evas_Object *obj,
>            }
>       }
>
> +   _item_shrink_signal_emit(view, sd->shrink_mode);
> +
>     if (sd->vertical)
>       elm_layout_signal_emit(view, "elm,orient,vertical", "elm");
>     else
> @@ -3326,6 +3353,7 @@ _elm_toolbar_item_separator_get(Eo *eo_item
> EINA_UNUSED, Elm_Toolbar_Item_Data *
>  EOLIAN static void
>  _elm_toolbar_shrink_mode_set(Eo *obj, Elm_Toolbar_Data *sd,
> Elm_Toolbar_Shrink_Mode shrink_mode)
>  {
> +   Elm_Toolbar_Item_Data *it;
>     Eina_Bool bounce;
>
>     if (sd->shrink_mode == shrink_mode) return;
> @@ -3366,6 +3394,9 @@ _elm_toolbar_shrink_mode_set(Eo *obj,
> Elm_Toolbar_Data *sd, Elm_Toolbar_Shrink_M
>        eo_do(obj, elm_interface_scrollable_policy_set
>              (ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF));
>
> +   EINA_INLIST_FOREACH(sd->items, it)
> +      _item_shrink_signal_emit(VIEW(it), sd->shrink_mode);
> +
>     evas_object_smart_need_recalculate_set(obj, EINA_TRUE);
>  }
>
> diff --git a/src/lib/elm_toolbar.eo b/src/lib/elm_toolbar.eo
> index 25e6034..7d27c15 100644
> --- a/src/lib/elm_toolbar.eo
> +++ b/src/lib/elm_toolbar.eo
> @@ -125,6 +125,14 @@ class Elm.Toolbar (Elm.Widget,
> Elm_Interface_Scrollable,
>             aggregate items which didn't fit with the
> #ELM_TOOLBAR_SHRINK_MENU
>             mode.
>
> +           If shrink mode is changed, Toolbar will send one of the
> following
> +           signal to each item for informing the current shrink mode.
> +             "elm,state,shrink,default"
> +             "elm,state,shrink,hide"
> +             "elm,state,shrink,scroll"
> +             "elm,state,shrink,menu"
> +             "elm,state,shrink,expand"
> +
>             Warning: This function's behavior will clash with those of
>             elm_scroller_policy_set(), so use either one of them, but not
> both.]]
>           set {
>
> --
>
>
>
------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to