Page MenuHomePhabricator

Efl usage while writing real applications
Open, NormalPublic




  • The event handling is a problem. A item is internally just selected after the mouse down, if someone does a mouse down on a item which is not selected before, and starts to drag, the item is not selected even if the drag event is started.
  • Theme problem, if you have a none-gray background it looks suuuuuper ugly, all the backgrounds of the items should be transparent, not gray
  • The usecase of have a string as root item with several child items is common, but complex, you have to add a item class which just returns the text_get.


  • There is no visual indicator which tells the user "Hey you can drop things here" I had to add code which adds a item to the genlist which indicates things can be dropped here. ideal would be a string i can set somewhere so if a user hovers over a gengrid automatically a string saying "Add to bookmarks" shows up
  • DND is started even if there is a entry in a item which has focus ... (T2661)
  • Entry are a drop area by default, and i am not able to remove the drop area from it.
  • I had to write a hover event myself, it would be very usefull if a drop area could just emit a event like "hover" which is called after a item hovered over a element for lets say 1 sec.


I am happy with it, just one minor thing. Its possible to embed widgets in the items (GREAT) but you cannot interact with them, so for example add a slider into the menu, try to change the value, not working menu is instant closing.

Missing Helpers

There are missing helpers which could be usefull to compose a ui

  • Dialog utility, just a class where you can call one function set some message, icon. and show it.
  • Search utility, there could be some container which users keystrokes which arent taken by the child to start a panel for searching (like efm in e does) so giving the app feature of a searchable list is less of a pain, you would just do that, attach to a callback where you can search, and you are done, api on the genlist/gengrid side is there.
  • Selection utility, a utility which gives you a rect selection if the mouse down is not taken by the child.
  • No shortcut utility, you always have to add a event handler which checks ev->key, which is a overhead, and not so nice code wise.


  • Theme lookup is very slow, i had to build my own cache which just saves the name and the icon, all of the icons for a fixed size.
  • The mime type getters are sometimes a bit strange, why not present one which gives the most strict mimetype ?

Using elm by inheritence

The biggest problem in writing custom widgets while overriding elm.widget is the lack of documentation, there is no to less documentation on elm.widget, so you never really know when a call is done, or what it should do ...

This was a downwrite of the most major ones, i will append more items once more come up to mind.

If something comes up to peoples mind, add stuff! :)



  • Genlist/Gengrid- Ephoto implements single click and double click events on each item to separate just highlighting or selecting an item. A good use case for this need is a genlist tree. You want one click on a tree item to display info, and you want a double click to expand the tree. Another use case is in a gengrid where you want one click to just highlight the item and show info and you want a double click to open item.
  • DND-As bushman said, it isn't exactly obvious that you can drop. Ephoto currently uses a mouse move callback to grab the current item the cursor is over and highlight it while dragging to achieve the effect of a drop spot.
  • There needs to be a tab widget. Toolbar is not sufficient. See Ephoto's config panel. It uses segment control and naviframe to create a tab like widget.
  • Fileselector needs to be reworked -- It is the reason Ephoto and most apps I have seen have to write their own fileselector.
  • Focus in its current state makes it very difficult to present a smooth navigation experience when using a keyboard within app.


  • This has been touched on so I'm not going into detail, but Ephoto uses a slightly modified version of e's thumbnailer instead of ethumb because of how slow ethumb is and how often it hangs.


  • Icon lookup is so slow that it makes using icon themes within apps painful


  • We have a lot of useful utilities within these two libraries. As I was having to write a random number algorithm within Ephoto, it occurred to me that there should probably be some expansion on rand within eina or ecore.


  • I have found that using programs that need a script and a transition is way harder than it should be. You shouldn't have to say script{ if (state = foo) run_this_program(); } and then have a function run_this_program { set_state_animate(foo) } just to check a variable and transition the program.

There should probably be more helper functions as @bu5hm4n mentioned... One that comes to mine would be a config utility via elm where it manages the eet api as well as provides a dialog with said options.

I will add more as they come to mind.



  • Icons in menu items can only be set using standard names, there should be a way to set some custom icons. (this was possible in efl<1.18 doing a theme extension, but it does not work anymore)
  • Items cannot have an "end" icon.
  • Menu is unusable if it's bigger than the window, some sort of scrolling must be implemented.
  • Menu is not usable with keyboard.

Related Objects

bu5hm4n created this task.Aug 2 2016, 12:07 PM
stephenmhouston renamed this task from Efl usage while writing jesus to Efl usage while writing Jesus / Ephoto.Aug 2 2016, 3:12 PM
stephenmhouston updated the task description. (Show Details)
stephenmhouston updated the task description. (Show Details)
stephenmhouston updated the task description. (Show Details)
jpeg added a subscriber: jpeg.Aug 3 2016, 3:22 AM
DaveMDS updated the task description. (Show Details)Sep 24 2016, 1:01 AM
DaveMDS updated the task description. (Show Details)
DaveMDS renamed this task from Efl usage while writing Jesus / Ephoto to Efl usage while writing real applications.
zmike edited projects, added Restricted Project; removed efl.Jun 11 2018, 6:59 AM
segfaultxavi edited projects, added efl; removed Restricted Project.Jun 11 2018, 8:00 AM
zmike added a project: Restricted Project.Jul 24 2018, 10:06 AM
zmike added a parent task: T7142: efl 2.0 considerations.