elm_toolbar: use the correct flag to detect wether a item is visible

fix T6806
This commit is contained in:
Marcel Hollerbach 2018-04-02 11:22:51 +02:00
parent 03efb59da9
commit 36d9fdc770
1 changed files with 15 additions and 9 deletions

View File

@ -83,7 +83,8 @@ _toolbar_item_prio_compare_cb(const void *i1,
} }
static void static void
_items_visibility_fix(Elm_Toolbar_Data *sd, _items_visibility_fix(Elm_Toolbar *obj,
Elm_Toolbar_Data *sd,
Evas_Coord *iw, Evas_Coord *iw,
Evas_Coord vw, Evas_Coord vw,
Eina_Bool *more) Eina_Bool *more)
@ -139,6 +140,7 @@ _items_visibility_fix(Elm_Toolbar_Data *sd,
*more = EINA_TRUE; *more = EINA_TRUE;
} }
} }
efl_ui_focus_composition_dirty(obj);
} }
static void static void
@ -381,12 +383,12 @@ _resize_job(void *data)
if (!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE)) if (!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE))
{ {
h = vh; h = vh;
_items_visibility_fix(sd, &ih, vh, &more); _items_visibility_fix(obj, sd, &ih, vh, &more);
} }
else else
{ {
w = vw; w = vw;
_items_visibility_fix(sd, &iw, vw, &more); _items_visibility_fix(obj, sd, &iw, vw, &more);
} }
evas_object_geometry_get evas_object_geometry_get
(sd->VIEW(more_item), NULL, NULL, &more_w, &more_h); (sd->VIEW(more_item), NULL, NULL, &more_w, &more_h);
@ -462,12 +464,12 @@ _resize_job(void *data)
if (!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE)) if (!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE))
{ {
h = vh; h = vh;
_items_visibility_fix(sd, &ih, vh, &more); _items_visibility_fix(obj, sd, &ih, vh, &more);
} }
else else
{ {
w = vw; w = vw;
_items_visibility_fix(sd, &iw, vw, &more); _items_visibility_fix(obj, sd, &iw, vw, &more);
} }
evas_object_box_remove_all(sd->bx, EINA_FALSE); evas_object_box_remove_all(sd->bx, EINA_FALSE);
if ((!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE) && (ih > vh)) || if ((!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE) && (ih > vh)) ||
@ -505,9 +507,9 @@ _resize_job(void *data)
w = (vw >= mw) ? vw : mw; w = (vw >= mw) ? vw : mw;
if (!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE)) if (!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE))
_items_visibility_fix(sd, &ih, vh, &more); _items_visibility_fix(obj, sd, &ih, vh, &more);
else else
_items_visibility_fix(sd, &iw, vw, &more); _items_visibility_fix(obj, sd, &iw, vw, &more);
evas_object_box_remove_all(sd->bx, EINA_FALSE); evas_object_box_remove_all(sd->bx, EINA_FALSE);
evas_object_box_remove_all(sd->bx_more, EINA_FALSE); evas_object_box_remove_all(sd->bx_more, EINA_FALSE);
@ -2464,6 +2466,8 @@ _item_new(Evas_Object *obj,
edje_object_message_signal_process(elm_layout_edje_get(VIEW(it))); edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
efl_ui_focus_composition_dirty(obj);
evas_object_event_callback_add evas_object_event_callback_add
(VIEW(it), EVAS_CALLBACK_RESIZE, _item_resize, obj); (VIEW(it), EVAS_CALLBACK_RESIZE, _item_resize, obj);
if ((!sd->items) && (sd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS)) if ((!sd->items) && (sd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS))
@ -4057,7 +4061,7 @@ _part_of_chain(Elm_Toolbar_Item_Data *pd)
if (elm_wdg_item_disabled_get(pd->base->eo_obj)) if (elm_wdg_item_disabled_get(pd->base->eo_obj))
want = EINA_FALSE; want = EINA_FALSE;
if (!evas_object_visible_get(VIEW(pd))) if (!pd->prio.visible)
want = EINA_FALSE; want = EINA_FALSE;
if (pd->separator) if (pd->separator)
@ -4071,14 +4075,16 @@ _elm_toolbar_efl_ui_focus_composition_prepare(Eo *obj, Elm_Toolbar_Data *pd)
{ {
Elm_Toolbar_Item_Data *it; Elm_Toolbar_Item_Data *it;
Eina_List *order = NULL; Eina_List *order = NULL;
Eina_Bool require_more_items = EINA_FALSE;
EINA_INLIST_FOREACH(pd->items, it) EINA_INLIST_FOREACH(pd->items, it)
{ {
if (_part_of_chain(it)) if (_part_of_chain(it))
order = eina_list_append(order, EO_OBJ(it)); order = eina_list_append(order, EO_OBJ(it));
if (!it->prio.visible) require_more_items = EINA_TRUE;
} }
if (pd->more_item) if (require_more_items)
{ {
if (_part_of_chain(pd->more_item)) if (_part_of_chain(pd->more_item))
order = eina_list_append(order, EO_OBJ(pd->more_item)); order = eina_list_append(order, EO_OBJ(pd->more_item));