diff options
author | Mike Blumenkrantz <zmike@samsung.com> | 2019-10-28 12:53:26 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2019-10-28 12:53:26 -0400 |
commit | 71b546efba025dae75faef7bc31be7e228399769 (patch) | |
tree | 362a5f10d3e6fa66cc0d927c1ab5c57e513302a5 | |
parent | 24b032f7fae932ab531e5d16871f0d55378c2ecb (diff) | |
download | efl-71b546efba025dae75faef7bc31be7e228399769.tar.gz |
Revert "elm/genlist: redo focus adapter management on item blocks"
This reverts commit 3b290bd22f2bc64f2205f8e087b0451fe060fed1.
-rw-r--r-- | src/lib/elementary/elm_genlist.c | 57 |
1 files changed, 29 insertions, 28 deletions
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 859ab809ea..13e87fa5c6 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -747,8 +747,19 @@ _item_block_unrealize(Item_Block *itb) } if (!dragging) { + Eina_List *n; + itb->realized = EINA_FALSE; itb->want_unrealize = EINA_TRUE; + + efl_ui_focus_manager_calc_unregister(itb->sd->obj, itb->adapter); + efl_del(itb->adapter); + itb->adapter = NULL; + + EINA_LIST_FOREACH(itb->items, n, it) + { + efl_ui_focus_manager_calc_unregister(itb->sd->obj, EO_OBJ(it)); + } } else itb->want_unrealize = EINA_FALSE; @@ -1841,7 +1852,6 @@ _item_realize(Elm_Gen_Item *it, const int index, Eina_Bool calc) return; } - efl_ui_focus_manager_calc_register_logical(it->item->block->sd->obj, EO_OBJ(it), it->item->block->adapter, NULL); if (sd->tree_effect_enabled || (!_item_cache_find(it))) { @@ -2540,10 +2550,27 @@ _flush_block_order(Elm_Genlist_Data *sd) static void _item_block_realize(Item_Block *itb) { + Elm_Gen_Item *it; + Eina_List *n; + if (itb->realized) return; itb->realized = EINA_TRUE; itb->want_unrealize = EINA_FALSE; + + if (!itb->adapter) + { + itb->adapter = efl_add(EFL_UI_FOCUS_COMPOSITION_ADAPTER_CLASS, itb->sd->obj); + efl_ui_focus_composition_adapter_focus_manager_parent_set(itb->adapter, itb->sd->obj); + efl_ui_focus_composition_adapter_focus_manager_object_set(itb->adapter, itb->sd->obj); + efl_ui_focus_manager_calc_register_logical(itb->sd->obj, itb->adapter, itb->sd->obj, NULL); + _flush_block_order(itb->sd); + } + + EINA_LIST_FOREACH(itb->items, n, it) + { + efl_ui_focus_manager_calc_register_logical(itb->sd->obj, EO_OBJ(it), itb->adapter, NULL); + } } static Eina_Bool @@ -3686,10 +3713,6 @@ _item_block_del(Elm_Gen_Item *it) _item_block_position_update(il->next, itb->position); sd->blocks = eina_inlist_remove(sd->blocks, il); } - - efl_ui_focus_manager_calc_unregister(itb->sd->obj, itb->adapter); - efl_del(itb->adapter); - itb->adapter = NULL; free(itb); if (itbn) itbn->changed = EINA_TRUE; } @@ -3715,10 +3738,6 @@ _item_block_del(Elm_Gen_Item *it) (EINA_INLIST_GET(itb)->next, itb->position); sd->blocks = eina_inlist_remove (sd->blocks, EINA_INLIST_GET(itb)); - - efl_ui_focus_manager_calc_unregister(itb->sd->obj, itb->adapter); - efl_del(itb->adapter); - itb->adapter = NULL; free(itb); block_changed = EINA_TRUE; } @@ -3733,10 +3752,6 @@ _item_block_del(Elm_Gen_Item *it) (EINA_INLIST_GET(itbn)->next, itbn->position); sd->blocks = eina_inlist_remove(sd->blocks, EINA_INLIST_GET(itbn)); - - efl_ui_focus_manager_calc_unregister(itbn->sd->obj, itbn->adapter); - efl_del(itbn->adapter); - itbn->adapter = NULL; free(itbn); block_changed = EINA_TRUE; } @@ -4411,17 +4426,6 @@ _item_mouse_down_cb(void *data, (WIDGET(it), "pressed", eo_it); } -static void -_item_block_focus_register(Item_Block *itb) -{ - if (itb->adapter) return; - itb->adapter = efl_add(EFL_UI_FOCUS_COMPOSITION_ADAPTER_CLASS, itb->sd->obj); - efl_ui_focus_composition_adapter_focus_manager_parent_set(itb->adapter, itb->sd->obj); - efl_ui_focus_composition_adapter_focus_manager_object_set(itb->adapter, itb->sd->obj); - efl_ui_focus_manager_calc_register_logical(itb->sd->obj, itb->adapter, itb->sd->obj, NULL); - _flush_block_order(itb->sd); -} - static Item_Block * _item_block_new(Elm_Genlist_Data *sd, Eina_Bool prepend) @@ -4450,7 +4454,7 @@ _item_block_new(Elm_Genlist_Data *sd, itb->position = 0; } } - _item_block_focus_register(itb); + return itb; } @@ -4497,7 +4501,6 @@ newblock: itb = calloc(1, sizeof(Item_Block)); if (!itb) return EINA_FALSE; itb->sd = sd; - _item_block_focus_register(itb); if (!it->item->rel->item->block) { sd->blocks = @@ -4737,7 +4740,6 @@ newblock: itb2 = calloc(1, sizeof(Item_Block)); if (!itb2) return EINA_FALSE; itb2->sd = sd; - _item_block_focus_register(itb2); sd->blocks = eina_inlist_append_relative(sd->blocks, EINA_INLIST_GET(itb2), EINA_INLIST_GET(itb)); @@ -5380,7 +5382,6 @@ _item_unrealize(Elm_Gen_Item *it) evas_object_del(c); } } - efl_ui_focus_manager_calc_unregister(it->item->block->sd->obj, EO_OBJ(it)); it->states = NULL; it->realized = EINA_FALSE; |