bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=36d9fdc77046587feaac3d89aea9bcf937837638

commit 36d9fdc77046587feaac3d89aea9bcf937837638
Author: Marcel Hollerbach <[email protected]>
Date:   Mon Apr 2 11:22:51 2018 +0200

    elm_toolbar: use the correct flag to detect wether a item is visible
    
    fix T6806
---
 src/lib/elementary/elm_toolbar.c | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c
index 64ac37d448..94d8c6f670 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -83,7 +83,8 @@ _toolbar_item_prio_compare_cb(const void *i1,
 }
 
 static void
-_items_visibility_fix(Elm_Toolbar_Data *sd,
+_items_visibility_fix(Elm_Toolbar *obj,
+                      Elm_Toolbar_Data *sd,
                       Evas_Coord *iw,
                       Evas_Coord vw,
                       Eina_Bool *more)
@@ -139,6 +140,7 @@ _items_visibility_fix(Elm_Toolbar_Data *sd,
              *more = EINA_TRUE;
           }
      }
+   efl_ui_focus_composition_dirty(obj);
 }
 
 static void
@@ -381,12 +383,12 @@ _resize_job(void *data)
         if (!efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE))
           {
              h = vh;
-             _items_visibility_fix(sd, &ih, vh, &more);
+             _items_visibility_fix(obj, sd, &ih, vh, &more);
           }
         else
           {
              w = vw;
-             _items_visibility_fix(sd, &iw, vw, &more);
+             _items_visibility_fix(obj, sd, &iw, vw, &more);
           }
         evas_object_geometry_get
           (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))
           {
              h = vh;
-             _items_visibility_fix(sd, &ih, vh, &more);
+             _items_visibility_fix(obj, sd, &ih, vh, &more);
           }
         else
           {
              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);
         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;
 
         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
-          _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_more, EINA_FALSE);
@@ -2464,6 +2466,8 @@ _item_new(Evas_Object *obj,
 
    edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
 
+   efl_ui_focus_composition_dirty(obj);
+
    evas_object_event_callback_add
      (VIEW(it), EVAS_CALLBACK_RESIZE, _item_resize, obj);
    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))
      want = EINA_FALSE;
 
-   if (!evas_object_visible_get(VIEW(pd)))
+   if (!pd->prio.visible)
      want = EINA_FALSE;
 
    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;
    Eina_List *order = NULL;
+   Eina_Bool require_more_items = EINA_FALSE;
 
    EINA_INLIST_FOREACH(pd->items, it)
      {
        if (_part_of_chain(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))
           order = eina_list_append(order, EO_OBJ(pd->more_item));

-- 


Reply via email to