okra pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=9b211b80c37a9a672d3ca58dc4190518f3c494d4

commit 9b211b80c37a9a672d3ca58dc4190518f3c494d4
Author: Stephen 'Okra' Houston <[email protected]>
Date:   Wed Mar 8 18:21:15 2017 -0600

    Luncher: Begin work to handle engage sizing correctly.
---
 src/modules/luncher/bar.c     | 95 ++++++++++++++++++++++++++++++++++++++++++-
 src/modules/luncher/luncher.h |  3 ++
 2 files changed, 96 insertions(+), 2 deletions(-)

diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
index 21c4100..9f6514d 100644
--- a/src/modules/luncher/bar.c
+++ b/src/modules/luncher/bar.c
@@ -263,6 +263,8 @@ _bar_icon_del(Instance *inst, Icon *ic)
    if (ic->preview)
      _bar_icon_preview_hide(ic);
    _bar_aspect(inst);
+   evas_object_del(ic->o_spacera);
+   evas_object_del(ic->o_spacerb);
    evas_object_del(ic->o_icon);
    evas_object_del(ic->o_overlay);
    evas_object_del(ic->o_layout);
@@ -915,7 +917,6 @@ _bar_icon_mouse_in(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *even
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
    if (_bar_check_modifiers(ev->modifiers)) return;
 
-   evas_object_raise(ic->o_layout);
    elm_object_tooltip_show(obj);
    ic->active = EINA_TRUE;
 
@@ -1057,6 +1058,70 @@ _bar_icon_file_set(Icon *ic, Efreet_Desktop *desktop, 
E_Client *non_desktop_clie
    elm_image_file_set(ic->o_overlay, path, k);
 }
 
+static void
+_bar_icon_resized(void *data, Evas_Object *obj EINA_UNUSED, const char 
*emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   Instance *inst = data;
+   Icon *ic = NULL;
+   Eina_List *l = NULL;
+   float tot = 0.0;
+
+   if (!inst->effect) return;
+   switch (e_gadget_site_orient_get(e_gadget_site_get(inst->o_main)))
+     {
+      case E_GADGET_SITE_ORIENT_VERTICAL:
+        EINA_LIST_FOREACH(inst->icons, l, ic)
+          {
+             tot += ic->scale;
+          }
+        evas_object_size_hint_aspect_set(inst->o_main, 
EVAS_ASPECT_CONTROL_BOTH, 1, eina_list_count(inst->icons)+tot);
+        break;
+      default:
+        EINA_LIST_FOREACH(inst->icons, l, ic)
+          tot += (ic->scale - 1.0);
+        evas_object_size_hint_aspect_set(inst->o_main, 
EVAS_ASPECT_CONTROL_BOTH, ceil(eina_list_count(inst->icons)+tot), 1);
+     }
+}
+
+static void
+_bar_icon_scale_message(void *data, Evas_Object *obj EINA_UNUSED, 
Edje_Message_Type type EINA_UNUSED, int id EINA_UNUSED, void *msg)
+{
+   Edje_Message_String_Float_Set *mmsg = msg;
+   Evas_Coord add = 0;
+   Icon *ic = data;
+   float total;
+
+
+   ic->scale = mmsg->val[0];
+
+   if (ic->scale > 1.0)
+     {
+        total = (ic->inst->size * ic->scale) - ic->inst->size;
+        add = ceil(ceil(total)/2);
+        switch (e_gadget_site_orient_get(e_gadget_site_get(ic->inst->o_main)))
+          {
+             case E_GADGET_SITE_ORIENT_VERTICAL:
+                evas_object_resize(ic->o_spacerb, ic->inst->size, add);
+                evas_object_size_hint_min_set(ic->o_spacerb, ic->inst->size, 
add);
+                evas_object_resize(ic->o_spacera, ic->inst->size, add);
+                evas_object_size_hint_min_set(ic->o_spacera, ic->inst->size, 
add);
+                break;
+             default:
+                evas_object_resize(ic->o_spacerb, add, ic->inst->size);
+                evas_object_size_hint_min_set(ic->o_spacerb, add, 
ic->inst->size);
+                evas_object_resize(ic->o_spacera, add, ic->inst->size);
+                evas_object_size_hint_min_set(ic->o_spacera, add, 
ic->inst->size);
+          }
+     }
+   else
+     {
+        evas_object_resize(ic->o_spacerb, 0, 0);
+        evas_object_resize(ic->o_spacera, 0, 0);
+        evas_object_size_hint_min_set(ic->o_spacerb, 0, 0);
+        evas_object_size_hint_min_set(ic->o_spacera, 0, 0);
+     }
+}
+
 static Icon *
 _bar_icon_add(Instance *inst, Efreet_Desktop *desktop, E_Client 
*non_desktop_client)
 {
@@ -1079,16 +1144,31 @@ _bar_icon_add(Instance *inst, Efreet_Desktop *desktop, 
E_Client *non_desktop_cli
    ic->starting = EINA_FALSE;
    ic->preview_dismissed = EINA_FALSE;
    ic->exec = NULL;
+   ic->scale = 0.0;
 
    ic->o_layout = elm_layout_add(inst->o_icon_con);
    e_theme_edje_object_set(ic->o_layout, "e/gadget/luncher/icon",
        "e/gadget/luncher/icon");
    E_EXPAND(ic->o_layout);
    E_FILL(ic->o_layout);
-//   edje_object_signal_callback_add(elm_layout_edje_get(ic->o_layout), 
"e,state,resized", "e", _bar_icon_resized, inst);
+   edje_object_message_handler_set(elm_layout_edje_get(ic->o_layout), 
_bar_icon_scale_message, ic);
+   edje_object_signal_callback_add(elm_layout_edje_get(ic->o_layout), 
"e,state,resized", "e", _bar_icon_resized, inst);
    elm_box_pack_end(inst->o_icon_con, ic->o_layout);
    evas_object_show(ic->o_layout);
 
+   ic->o_spacerb = 
evas_object_rectangle_add(evas_object_evas_get(ic->inst->o_icon_con));
+   ic->o_spacera = 
evas_object_rectangle_add(evas_object_evas_get(ic->inst->o_icon_con));
+   evas_object_color_set(ic->o_spacerb, 0, 0, 0, 0);
+   evas_object_color_set(ic->o_spacera, 0, 0, 0, 0);
+   evas_object_resize(ic->o_spacerb, 0, 0);
+   evas_object_resize(ic->o_spacera, 0, 0);
+   evas_object_size_hint_min_set(ic->o_spacerb, 0, 0);
+   evas_object_size_hint_min_set(ic->o_spacera, 0, 0);
+   elm_box_pack_before(ic->inst->o_icon_con, ic->o_spacerb, ic->o_layout);
+   elm_box_pack_after(ic->inst->o_icon_con, ic->o_spacera, ic->o_layout);
+   evas_object_show(ic->o_spacerb);
+   evas_object_show(ic->o_spacera);
+
    snprintf(ori, sizeof(ori), "e,state,off,%s", _bar_location_get(inst));
    elm_layout_signal_emit(ic->o_layout, ori, "e");
    msg = alloca(sizeof(Edje_Message_String));
@@ -1630,6 +1710,12 @@ _bar_mouse_move(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UNUSED, v
         Evas_Coord x, y, w, h;
 
         evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h);
+        evas_object_resize(ic->o_spacerb, 0, 0);
+        evas_object_resize(ic->o_spacera, 0, 0);
+        evas_object_size_hint_min_set(ic->o_spacerb, 0, 0);
+        evas_object_size_hint_min_set(ic->o_spacera, 0, 0);
+        if (!E_INSIDE(px, py, x, y, w, h))
+          _bar_icon_mouse_out(ic, NULL, ic->o_icon, NULL);
         msg = alloca(sizeof(Edje_Message_Int_Set) + (7 * sizeof(int)));
         msg->count = 7;
         msg->val[0] = px;
@@ -1660,6 +1746,11 @@ _bar_mouse_out(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UNUSED, vo
      {
         elm_layout_signal_emit(ic->o_layout, "e,state,default", "e");
         elm_layout_signal_emit(ic->o_layout, "e,state,unfocused", "e");
+        evas_object_resize(ic->o_spacerb, 0, 0);
+        evas_object_resize(ic->o_spacera, 0, 0);
+        evas_object_size_hint_min_set(ic->o_spacerb, 0, 0);
+        evas_object_size_hint_min_set(ic->o_spacera, 0, 0);
+        _bar_icon_mouse_out(ic, NULL, ic->o_icon, NULL);
      }
    inst->effect = EINA_FALSE;
    _bar_aspect(inst);
diff --git a/src/modules/luncher/luncher.h b/src/modules/luncher/luncher.h
index b31665e..bdda494 100644
--- a/src/modules/luncher/luncher.h
+++ b/src/modules/luncher/luncher.h
@@ -72,6 +72,8 @@ struct _Icon
    Evas_Object      *o_layout;
    Evas_Object      *o_icon;
    Evas_Object      *o_overlay;
+   Evas_Object      *o_spacerb;
+   Evas_Object      *o_spacera;
    Evas_Object      *preview;
    Evas_Object      *preview_box;
    Evas_Object      *preview_scroller;
@@ -88,6 +90,7 @@ struct _Icon
    Eina_Bool         active;
    Eina_Bool         starting;
    Eina_Bool         preview_dismissed;
+   float             scale;
    struct
    {
       unsigned char start : 1;

-- 


Reply via email to