Page MenuHomePhabricator

Collection_View Tracking ticket
Open, HighPublic


A ticket for managing development of collection_view.

Overall missing features:

  • Selection managing
  • Focus

Overall bugs on devs/bu5hm4n/cv-finalize:

  • Edje sometimes tells 0x0 as a size, that is a bug, or we need to listen to it, and fallback to the item base size for that (@zmike)
  • When adding a request with need_entity to a inflight request without need_entity, no entity is requested (Hard to reproduce)


Differential Revisions
D9960: elementary: add Efl.Ui.Grid_View by leveraging MVVM and Collection/Position_Manager infrastructure.
D9959: elementary: migrate Efl.Ui.List_View to use Efl.Ui.Collection_View.
D9958: elementary: introduce Efl.Ui.CollectionView a generic listing View.
D9957: elementary: add an interface for asynchronous multi selection.
D9956: elementary: factorize all events emitted by a Efl.Ui.Collection into their own interface.
D9955: efl: make Efl.Ui.Factory.release work in batches.
D9954: elementary: rework Efl.Ui.Factory to have another additional stage during releasing of items.
D9953: efl: simplify logic for widget created by factory.
D9952: efl: split Efl.Ui.Factory.create stage into constructing and building
D9951: elementary: Efl.Ui.Layout_Factory bind property during widget creation.
D9950: elementary: Efl.Ui.Image_Factory bind property also during widget creation.
D9949: elementary: Efl.Ui.Widget_Factory bind widget property before finalizing the widget.
D9948: elementary: leverage sizing information from model if available to avoid unecessary calc.
D9947: efl_ui_position_manager: a way to announce new entities
D9946: elementary: properly shutdown and cleanup Efl.Ui.Position_Manager.
D9945: elementary: fix double eina_value_free in
D9944: ecore: remove unused variable after code migration. Fix warning.
D9943: eina: prevent leak of Eina_Value internal allocation.
D9942: eina: add code to help debug leaking Eina_Value.
D9941: eina: add eina_mempool_iterator_new to slowly iterate every allocated pointer in a mempool.
D9940: eina: turn on Eina_Mempool tests for OneBig too.
D9939: eina: fix free support in eina OneBig mempool.
D9938: eina: fix eina_mempool_from to not report pointer that have never been allocated as allocated.
bu5hm4n created this task.Aug 26 2019, 5:17 AM
bu5hm4n triaged this task as High priority.

So - i have updated

I have done something a bit radical, i disabled the complete viewport logic. That helped me finding various problems. The version in there is now able to create the views correctly add them correctly. A sizing bug is still in there which is fixed with a ugly hack, i think i need the help of mike there. @cedric would it be okay, if i bugfix this version more, and try to finize this, *without* viewport, but only the cache, so we have a running basic version, where we can implement the selection and so on ?

Open questions for the above version:

  • Is it okay if i add some sort of idler that frees all the not displayed items after some time ? (we have creation right now implemented, but not removal ... :( ) @cedric
cedric added a comment.Sep 2 2019, 9:17 PM

Yes, going with a simpler version should help. I was planning to run an idler for removing things from the cache with some time constraint to not completely clog the main loop during a cleanup cycle, but all of that can be done later.

Okay, let me try to push hard into that direction. I will add my personal tasks to this tasks.

bu5hm4n updated the task description. (Show Details)Sep 2 2019, 11:35 PM

check out devs/bu5hm4n/cv-finalize

I have seperated there all the fixes that are required in other domains from collection view, and documented them a bit. The factory problem also has its fix now, however, that cannot be merged until the rest of cedrics commit in this branch are going into review. With the state that is currently in this branch, we have:

  • working creation of items and models
  • working deletion of elements that are not on the screen
  • grid works

Most of the problems from above are still there.

bu5hm4n updated the task description. (Show Details)Sep 3 2019, 6:08 AM
zmike added a comment.Sep 3 2019, 7:29 AM

See my comment in the subtask regarding the 0x0 sizing. afaik @cedric was doing this intentionally so the sizing could be completely disabled (e.g., manually unsetting need_recalc) if the parent model provided sizing info. I didn't do any work to hook up using size calcs, but it isn't particularly difficult if we want to add it.

Oh okay, I see. Thank you!

zmike added a comment.Sep 3 2019, 12:09 PM

A perf note from another ticket I just saw: if the item is a layout object then probably we also want to do efl_canvas_layout_animation_set(item, false) (and even efl_object_freeze) any time the item object is not expected to be visible to block callbacks and improve performance.

zmike added a comment.Sep 5 2019, 11:51 AM

There's something strange going on when I scroll up quickly; it's like it starts trying to do the bounce animation before reaching the top of the scroller...

I have tested the collection view now for several hours, it is working quite okayish. Here an there are bugs, but overall it looks and works nice!

  • efl_ui_list_view_example_3
    • bringing in a new item does not get visible / positioned correctly.
    • Deleting a element does not work
    • Select a item, click Select None item selection is kind of borked.
  • efl_ui_list_view_example_2
    • dead locks for me because it is trying to open a file which is a named pipe. We should check for the file type there ?
  • efl_ui_list_view_example_1
    • Drag the mover in the dragbar very fast to the bottom. You will see that no items are placed anymore.

In general the scroller buttom scrollbar is displayed even if it is disabled, this is weird.

I think we should keep this task for tracking mvvm related work after 1.23 released, so remove 1.23 tag as I see we finished all 1.23 related task on this.