ms = ((double)icon_size * scale);
evas_object_size_hint_min_set(it->icon, ms, ms);
evas_object_size_hint_max_set(it->icon, ms, ms);
- edje_object_part_swallow(view, "elm.swallow.icon",
- it->icon);
+ edje_object_part_swallow(view, "elm.swallow.icon", it->icon);
}
edje_object_part_text_set(view, "elm.text", it->label);
}
_sizing_eval(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
- Evas_Coord minw = -1, minh = -1, minw_bx, minh_bx;
+ Evas_Coord minw = -1, minh = -1, minw_bx = -1, minh_bx = -1;
Evas_Coord vw = 0, vh = 0;
Evas_Coord w, h;
if (!wd) return;
+ evas_object_smart_need_recalculate_set(wd->bx, EINA_TRUE);
evas_object_smart_calculate(wd->bx);
edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr),
&minw, &minh);
if (h < minh) h = minh;
evas_object_resize(wd->scr, w, h);
- evas_object_size_hint_min_get(wd->bx, &minw, &minh);
- minw_bx = minw;
- minh_bx = minh;
- if (wd->vertical && (h > minh)) minh = h;
- if ((!wd->vertical) && (w > minw)) minw = w;
- evas_object_resize(wd->bx, minw, minh);
+ evas_object_size_hint_min_get(wd->bx, &minw_bx, &minh_bx);
+// if (wd->vertical && (h > minh)) minh = h;
+// if ((!wd->vertical) && (w > minw)) minw = w;
+ evas_object_resize(wd->bx, minw_bx, minh_bx);
elm_smart_scroller_child_viewport_size_get(wd->scr, &vw, &vh);
if (wd->shrink_mode == ELM_TOOLBAR_SHRINK_NONE)
{
- if (wd->vertical) minh = minh_bx + (h - vh);
- else minw = minw_bx + (w - vw);
+ if (wd->vertical)
+ {
+ minw = minw_bx + (w - vw);
+ minh = minh_bx + (h - vh);
+ }
+ else
+ {
+ minw = minw_bx + (w - vw);
+ minh = minh_bx + (h - vh);
+ }
}
else
{
- if (wd->vertical) minh = h - vh;
- else minw = w - vw;
+ if (wd->vertical)
+ {
+ minw = minw_bx + (w - vw);
+ minh = h - vh;
+ }
+ else
+ {
+ minw = w - vw;
+ minh = minh_bx + (h - vh);
+ }
+// if (wd->vertical) minh = h - vh;
+// else minw = w - vw;
+// minh = minh + (h - vh);
}
- minh = minh + (h - vh);
evas_object_size_hint_min_set(obj, minw, minh);
evas_object_size_hint_max_set(obj, -1, -1);
}
{
Elm_Toolbar_Item *it;
Eina_List *sorted = NULL;
- Evas_Coord ciw;
+ Evas_Coord ciw = 0, cih = 0;
EINA_INLIST_FOREACH(wd->items, it)
{
if (wd->more_item)
{
- evas_object_geometry_get(wd->VIEW(more_item), NULL, NULL, &ciw, NULL);
- *iw += ciw;
+ evas_object_geometry_get(wd->VIEW(more_item), NULL, NULL, &ciw, &cih);
+ if (wd->vertical) *iw += cih;
+ else *iw += ciw;
}
EINA_LIST_FREE(sorted, it)
{
- evas_object_geometry_get(VIEW(it), NULL, NULL, &ciw, NULL);
- *iw += ciw;
+ evas_object_geometry_get(VIEW(it), NULL, NULL, &ciw, &cih);
+ if (wd->vertical) *iw += cih;
+ else *iw += ciw;
it->prio.visible = (*iw <= vw);
}
}
static void
_resize_job(void *data)
{
- Widget_Data *wd = elm_widget_data_get(data);
- Evas_Coord mw, mh, vw, vh, w, h;
+ Evas_Object *obj = (Evas_Object *)data;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Evas_Coord mw, mh, vw = 0, vh = 0, w = 0, h = 0;
Elm_Toolbar_Item *it;
- Evas_Object *obj = (Evas_Object *) data;
if (!wd) return;
wd->resize_job = NULL;
evas_object_geometry_get(wd->bx, NULL, NULL, &w, &h);
if (wd->shrink_mode == ELM_TOOLBAR_SHRINK_MENU)
{
- Evas_Coord iw = 0, more_w;
+ Evas_Coord iw = 0, ih = 0, more_w = 0, more_h = 0;
- evas_object_resize(wd->bx, vw, h);
- _fix_items_visibility(wd, &iw, vw);
- evas_object_geometry_get(wd->VIEW(more_item), NULL, NULL, &more_w, NULL);
- if (iw - more_w <= vw)
- iw -= more_w;
+ if (wd->vertical)
+ {
+ evas_object_resize(wd->bx, w, vh);
+ _fix_items_visibility(wd, &ih, vh);
+ }
+ else
+ {
+ evas_object_resize(wd->bx, vw, h);
+ _fix_items_visibility(wd, &iw, vw);
+ }
+ evas_object_geometry_get(wd->VIEW(more_item), NULL, NULL,
+ &more_w, &more_h);
+ if (wd->vertical)
+ {
+ if ((ih - more_h) <= vh) ih -= more_h;
+ }
+ else
+ {
+ if ((iw - more_w) <= vw) iw -= more_w;
+ }
/* All items are removed from the box object, since removing individual
* items won't trigger a resize. Items are be readded below. */
evas_object_box_remove_all(wd->bx, EINA_FALSE);
- if (iw > vw)
+ if (((wd->vertical) && (ih > vh)) ||
+ ((!wd->vertical) && (iw > vw)))
{
Evas_Object *menu;
_item_menu_destroy(wd->more_item);
_item_menu_create(wd, wd->more_item);
- menu =
- elm_toolbar_item_menu_get((Elm_Object_Item *) wd->more_item);
-
+ menu = elm_toolbar_item_menu_get((Elm_Object_Item *)wd->more_item);
EINA_INLIST_FOREACH(wd->items, it)
{
if (!it->prio.visible)
else
{
Elm_Object_Item *menu_it;
- menu_it = elm_menu_item_add(menu, NULL,
- it->icon_str, it->label,
- _elm_toolbar_item_menu_cb, it);
- elm_object_item_disabled_set(menu_it,
- elm_widget_item_disabled_get(it));
+ menu_it = elm_menu_item_add
+ (menu, NULL, it->icon_str, it->label,
+ _elm_toolbar_item_menu_cb, it);
+ elm_object_item_disabled_set
+ (menu_it, elm_widget_item_disabled_get(it));
if (it->o_menu)
elm_menu_clone(it->o_menu, menu, menu_it);
}
evas_object_show(VIEW(it));
}
}
-
evas_object_box_append(wd->bx, wd->VIEW(more_item));
evas_object_show(wd->VIEW(more_item));
}
}
else if (wd->shrink_mode == ELM_TOOLBAR_SHRINK_HIDE)
{
- Evas_Coord iw = 0;
+ Evas_Coord iw = 0, ih = 0;
- evas_object_resize(wd->bx, vw, h);
- _fix_items_visibility(wd, &iw, vw);
+ if (wd->vertical)
+ {
+ evas_object_resize(wd->bx, w, vh);
+ _fix_items_visibility(wd, &ih, vh);
+ }
+ else
+ {
+ evas_object_resize(wd->bx, vw, h);
+ _fix_items_visibility(wd, &iw, vw);
+ }
evas_object_box_remove_all(wd->bx, EINA_FALSE);
- if (iw > vw)
+ if (((wd->vertical) && (ih > vh)) ||
+ ((!wd->vertical) && (iw > vw)))
{
EINA_INLIST_FOREACH(wd->items, it)
{
}
else
{
- if ((vw >= mw) && (w != vw)) evas_object_resize(wd->bx, vw, h);
+ if (wd->vertical)
+ {
+ if ((vh >= mh) && (h != vh)) evas_object_resize(wd->bx, w, vh);
+ }
+ else
+ {
+ if ((vw >= mw) && (w != vw)) evas_object_resize(wd->bx, vw, h);
+ }
EINA_INLIST_FOREACH(wd->items, it)
{
if (it->selected)
Evas_Object *obj = (Evas_Object *) data;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
- _els_box_layout(o, priv, !wd->vertical, wd->homogeneous, elm_widget_mirrored_get(obj));
+ _els_box_layout(o, priv, !wd->vertical, wd->homogeneous,
+ elm_widget_mirrored_get(obj));
}
static char *
evas_object_size_hint_align_set(VIEW(it), 0.5, EVAS_HINT_FILL);
}
evas_object_size_hint_min_set(VIEW(it), mw, mh);
+ evas_object_size_hint_max_set(VIEW(it), -1, -1);
evas_object_event_callback_add(VIEW(it), EVAS_CALLBACK_RESIZE,
_resize_item, obj);
if ((!wd->items) && wd->always_select) _item_select(it);
evas_object_size_hint_min_set(VIEW(item), mw, mh);
EINA_LIST_FOREACH(item->states, l, it_state)
- if (it_state->icon == old_icon)
- return;
+ {
+ if (it_state->icon == old_icon) return;
+ }
evas_object_del(old_icon);
}
if (shrink_mode == ELM_TOOLBAR_SHRINK_MENU)
{
- elm_smart_scroller_policy_set(wd->scr, ELM_SMART_SCROLLER_POLICY_OFF, ELM_SMART_SCROLLER_POLICY_OFF);
-
- wd->more_item = _item_new(obj, "more_menu", "More",
- NULL, NULL);
+ elm_smart_scroller_policy_set(wd->scr, ELM_SMART_SCROLLER_POLICY_OFF,
+ ELM_SMART_SCROLLER_POLICY_OFF);
+ wd->more_item = _item_new(obj, "more_menu", "More", NULL, NULL);
}
else if (shrink_mode == ELM_TOOLBAR_SHRINK_HIDE)
elm_smart_scroller_policy_set(wd->scr, ELM_SMART_SCROLLER_POLICY_OFF,
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
- if (wd->align != align)
- evas_object_size_hint_align_set(wd->bx, align, 0.5);
+ if (wd->vertical)
+ {
+ if (wd->align != align)
+ evas_object_size_hint_align_set(wd->bx, 0.5, align);
+ }
+ else
+ {
+ if (wd->align != align)
+ evas_object_size_hint_align_set(wd->bx, align, 0.5);
+ }
wd->align = align;
}
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
wd->vertical = !horizontal;
+ if (wd->vertical)
+ evas_object_size_hint_align_set(wd->bx, 0.5, wd->align);
+ else
+ evas_object_size_hint_align_set(wd->bx, wd->align, 0.5);
_sizing_eval(obj);
}