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
This commit is contained in:
parent
2a1f4ada6e
commit
43f646f642
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
Evas_Coord x, y, w, h, xx, yy, ww, hh;
|
||||
Evas_Coord obj_x, obj_y, obj_w;
|
||||
|
||||
if (sd->scr)
|
||||
bx = elm_object_content_get(sd->scr);
|
||||
if ((!sd->expanded) || (!sd->bx)) return;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
elm_box_recalculate(bx);
|
||||
evas_object_size_hint_min_get(bx, &box_w, &box_h);
|
||||
|
||||
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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue