hermet pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=6160e8bcd6d8ad38574bbde9445c6be2cd6bb956

commit 6160e8bcd6d8ad38574bbde9445c6be2cd6bb956
Author: Jee-Yong Um <jc9...@samsung.com>
Date:   Wed Jan 20 21:29:12 2016 +0900

    elm_hoversel: fix calculation to make items fit to dropdown box
    
    Summary:
    While applying scroller on hoversel, several lines for item size
    calculation were added, but they failed to have item get proper size.
    Now redundant codes are removed and some are fixed, and hoversel will
    be shown more well-ordered.
    
    Test Plan: elementary_test hoversel
    
    Reviewers: jpeg, raster, cedric
    
    Differential Revision: https://phab.enlightenment.org/D3589
---
 data/themes/edc/elm/hover.edc | 10 +++++++---
 src/lib/elc_hoversel.c        | 45 +++++++++++++------------------------------
 2 files changed, 20 insertions(+), 35 deletions(-)

diff --git a/data/themes/edc/elm/hover.edc b/data/themes/edc/elm/hover.edc
index cce316a..74757f8 100644
--- a/data/themes/edc/elm/hover.edc
+++ b/data/themes/edc/elm/hover.edc
@@ -607,7 +607,9 @@ group { name: "elm/hover/base/hoversel_vertical/default";
             rel1.offset: 0 -1;
             rel2.to: "elm.swallow.slot.middle";
             rel2.relative: 1.0 0.0;
-            rel2.offset: -1 -1;
+            /* set negative offset along x axis not to make
+               "select_line" part exceed parent's width */
+            rel2.offset: -9 -1;
          }
          description { state: "visible" 0.0;
             inherit: "default" 0.0;
@@ -636,10 +638,12 @@ group { name: "elm/hover/base/hoversel_vertical/default";
             align: 0.0 1.0;
             rel1.to: "elm.swallow.slot.middle";
             rel1.relative: 0.0 1.0;
-            rel1.offset: 0 2;
+            rel1.offset: 0 0;
             rel2.to: "elm.swallow.slot.middle";
             rel2.relative: 1.0 1.0;
-            rel2.offset: -1 2;
+            /* set negative offset along x axis not to make
+               "select_line" part exceed parent's width */
+            rel2.offset: -9 2;
          }
          description { state: "visible" 0.0;
             inherit: "default" 0.0;
diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c
index 175e1fb..eaa760b 100644
--- a/src/lib/elc_hoversel.c
+++ b/src/lib/elc_hoversel.c
@@ -202,9 +202,13 @@ _create_scroller(Evas_Object *obj, Elm_Hoversel_Data *sd)
 {
    //table
    sd->tbl = elm_table_add(obj);
+   evas_object_size_hint_align_set(sd->tbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   evas_object_size_hint_weight_set(sd->tbl, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
 
    //spacer
    sd->spacer = evas_object_rectangle_add(evas_object_evas_get(obj));
+   evas_object_size_hint_align_set(sd->spacer, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   evas_object_size_hint_weight_set(sd->spacer, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
    evas_object_color_set(sd->spacer, 0, 0, 0, 0);
    elm_table_pack(sd->tbl, sd->spacer, 0, 0, 1, 1);
 
@@ -232,44 +236,17 @@ _create_scroller(Evas_Object *obj, Elm_Hoversel_Data *sd)
 static void
 _resizing_eval(Evas_Object *obj, Elm_Hoversel_Data *sd)
 {
-   Evas_Object *bx = NULL;
    const char *max_size_str;
    int max_size = 0;
    char buf[128];
    Evas_Coord box_w = -1, box_h = -1;
-   Evas_Coord x, y, w, h, xx, yy, ww, hh, vw = 0, vh = 0;
-   double align_x;
-   Eina_List *l;
-   Evas_Object *it;
-   Evas_Coord obj_x, obj_y, obj_w, obj_h, it_w, it_h;
-
-   if (sd->scr)
-     bx = elm_object_content_get(sd->scr);
-
-   if ((!sd->expanded) || (!bx)) return;
-
-   edje_object_size_min_calc(elm_layout_edje_get(sd->scr), &vw, &vh);
-   evas_object_geometry_get(obj, &obj_x, &obj_y, &obj_w, &obj_h);
-
-   evas_object_size_hint_align_get(obj, &align_x, NULL);
-   if (!sd->horizontal && align_x == EVAS_HINT_FILL)
-     {
-        l = elm_box_children_get(bx);
-        EINA_LIST_FREE(l, it)
-          {
-             edje_object_size_min_calc(elm_layout_edje_get(it), &it_w, &it_h);
-             if ((obj_w - vw) > it_w)
-               evas_object_size_hint_min_set(it, (obj_w - vw), it_h);
-             else
-               evas_object_size_hint_min_set(it, it_w, it_h);
-          }
-     }
+   Evas_Coord x, y, w, h, xx, yy, ww, hh;
+   Evas_Coord obj_x, obj_y, obj_w;
 
-   elm_box_recalculate(bx);
-   evas_object_size_hint_min_get(bx, &box_w, &box_h);
+   if ((!sd->expanded) || (!sd->bx)) return;
 
-   box_w += vw;
-   box_h += vh;
+   elm_box_recalculate(sd->bx);
+   evas_object_size_hint_min_get(sd->bx, &box_w, &box_h);
 
    max_size_str = elm_layout_data_get(sd->hover, "max_size");
    if (max_size_str)
@@ -311,6 +288,8 @@ _resizing_eval(Evas_Object *obj, Elm_Hoversel_Data *sd)
    xx += x;
    yy += y;
 
+   evas_object_geometry_get(obj, &obj_x, &obj_y, &obj_w, NULL);
+
    if (sd->horizontal)
      {
         if (xx < obj_x)
@@ -445,6 +424,8 @@ _activate(Evas_Object *obj)
    sd->bx = elm_box_add(sd->hover);
    elm_box_homogeneous_set(sd->bx, EINA_TRUE);
    elm_box_horizontal_set(sd->bx, sd->horizontal);
+   evas_object_size_hint_align_set(sd->bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   evas_object_size_hint_weight_set(sd->bx, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
 
    EINA_LIST_FOREACH(sd->items, l, eo_item)
      {

-- 


Reply via email to