- Changed wrong name alpha_bg to event_block_rect.
- Added more comments to the smart data variable.
- Changed wrong function name _tray_alpha_bg_create to
_event_block_rect_update.
Added one more internal variable to reduce unnecessary pointer
redirection too much.
Elm_Genlist_Smart_Data *sd is used many times in those functions but it
was always redirected from psd->wsd. I just cut down the step and made
the code more readable and consistent with other lines of code.
psd->wsd --> sd
Summary:
Implemented the following function
1. _item_unfocused
2. _item_focused
3. _item_focus_up
4. _item_focus_down
5. _item_focus_left : Currently this function return EINA_FALSE. It means focus will move out of genlist to the another left widget
6. _item_focus_right : Currently this function return EINA_FALSE. It means focus will move out of genlist to the right widget
7. _item_focus_set_hook
8. _item_focus_get_hook
9. _elm_genlist_focus_highlight_geometry_get
10. _elm_genlist_focused_item_get
11. Changes in the smart_event, smart_on_focus, pan_smart_calculate, mouse up callback.
Currently selected/focus logic are both present in the smart_event function and its
will be separate out.
Reviewers: seoz, woohyun
CC: singh.amitesh
Differential Revision: https://phab.enlightenment.org/D558
Conflicts:
src/lib/elm_genlist.c
_list/genlist_item_focus_set --> _list/genlist_item_content_focus_set.
These internal functions set the focus to the item's content objects,
not the item itself. So the name was wrong and very confusing.
Call the smart callback in the widget infra so that each widget don't need to hook the smart_translate only for the smart call.
This makes reducing duplicated code and supporting language,chagned from all widgets.
ecore_animator_del, and ecore_job_del.
As all efl public free apis get null as valid parameter, we do not need
to check null. I also removed some null check for other free apis which
were right next to timer/animator/job del. After this job code got
cleaner.
There are elm_widget_theme/theme_set/theme_get functions.
In Eolian these functions will be described as "theme" method and
"theme" property. There is clash here.
So add suffix "_apply" to Eo API for "elm_widget_theme".
Being annoyed by different types of eina critical macros - CRI, CRIT,
CRITICAL -, I concluded to unify them to one. Discussed on IRC and
finally, CRI was chosen to meet the consistency with other macros -
ERR, WRN, INF, DBG - in terms of the number of characters.
If there is any missing bits, please let me know.
not backporting because not sure if correct, but definitely a bug
also there's a similar issue where objects (I'm looking at you, elm_list) don't size until the first render, which causes the initial genlist calc sizes to be 100% wrong every time
Scenario:
1. Create elm_genlist.
2. Add some items to it.
3. Do not resize the genlist and leave it with width == 0.
PROPOSAL:
1. When the element is queued for recalculation check current width of
widget. If it is equal to 0 do not add idle enterer.
2. In smart callback on resize check if queue of items that need
recalculation is not empty and new width is not 0. In this situation
add idle enterer.
Summary: Changes in the _item_realize to decorate the item T576 test_genlist10
Reviewers: seoz, singh.amitesh
Differential Revision: https://phab.enlightenment.org/D358
If we're walking an item and it's deleted, the memory won't go away
immediately in _item_del_pre_hook() as would in _item_del(), then it's
not enough to remove ourselves from the reverse-relative list of the
item we were relative to, we also need to clean our own relative
pointer so we won't touch it later when the item is not being walked
anymore and _item_del() is called.
I was getting this annoying error with espionage application, opening
an interface of an object and then closing the window or selecting
another bus name (whatever would call elm_genlist_clear()).
During the clear process genlist will flag the next item as "walking"
so it's not gone when the current item dies (would happen if next item
is a subitem). The item would run _item_del_pre_hook() but not
_item_del(), but on the next loop iteration the next item would be the
current, then not walking anymore and during _item_del() it would
access it->item->rel which would point to the now-dead item.
Summary:
Some applications like file viewer allow multiple selection only with
Control key was pressed.
Reviewers: seoz, raster
Reviewed By: raster
Differential Revision: https://phab.enlightenment.org/D251
Conflicts:
ChangeLog
NEWS
Genlist will now emit the following signals to item view related to
their position in the whole list:
- elm,state,list,first: first item of the whole list
- elm,state,list,last: last item of the whole list
- elm,state,list,middle: any item that is not first or last.
- elm,state,list,single: when the item is the only element of list.
And the following related to a group (considering its given 'parent'):
- elm,state,group,first: first item of the group
- elm,state,group,last: last item of the group
- elm,state,group,middle: any item that is not first or last.
- elm,state,group,single: when the item is the only element of group.
Unlike odd/even the signals have an extra namespace "list" or "group"
to avoid conflicts with applications that may have declared these
signals themselves for other purposes.
With this patch one can implement easily something like this:
https://developer.apple.com/library/ios/documentation/userexperience/conceptual/tableview_iphone/Art/tv_grouped_style.jpg
stacking become a lot more complex when re-order mode was added, group
headers and more, so simple raise/lower wasn't enough, so this adds 2
stacking markers (rectangles) and objects are stacked above or below
these 2 markers. that basically provides 4 possible stacking slots
that are easy to address, and if you also still raise/lower you get 6
slots. use these markers for stacking so items go into a fixed
stacking layer when they stack around.
I splited ELM_SAFE_FREE refactoring patches. One commit per each file as recommended.
For the detail, please refer 3072dab12f12fe83fb5a628d15efd5cded11787f.
There are pros and cons but this
1. reduces human mistakes.
2. enhances readability.
3. enhances code quality.
4. removes future bug.
5. was adopted from enlightenment.
This is not all. I will work on enhancing elementary more and more.
Summary:
This patch applies automatic focus feature to elm_genlist and elm_list
containers.
Currently (prior to this patch), focusable widgets inside list items of both
containers receive focus by an explicit mouse click over them, and lose focus
when focus goes to someone else in the window.
This change also adds the ability to:
- focus by default on the first-from-right focusable widget upon items selection
- lose the focus when another item is selected (focused or not)
- move focus between focusable widgets inside the same item by left and right
arrow keys accordingly (up and down keys when elm_list is in horizontal mode)
Focus is supported for horizontal and vertical lists.
Tests have been added for genlists and lists to check focus feature.
This patch broke at least two stuffs:
1. item movement with key arrow
now up/down arrow scrolls genlist now move to upper/lower item.
2. item del routine.
item del callbacks are called twice LOL.
this also broke apps that use elm_fileselector_button which uses elm_genlist internally.
Once these are fixed and tested more, I will re-commit this.
This reverts commit cea8e755dbf9b062bb1e6d7a89fbf4c590b8f6b3.
flags.
This flags was used for deferring deletion of genlist items.
After deferred, items can be cleanup when _item_select() is called.
This flags was used for preventing crash when subitems are deleted right
after one item is deleted.
But this made genlist code too complicated and could hide internal
issues. One of the issues is incorrect use of EINA_INSTLIST_FOREACH (or
forloop). Because sub items can be deleted when one item is deleted, I
used whlie loop and EINA_INLIST_CONTAINER_GET(sd->items->last, xx) and
not defer the deletion. This has no problem evenif inlist sd->items is
changed inside the while-loop.
1. Do not need to print the same error message from all the widget codes.
2. Even though elm_widget_sub_object_add() can be used internally, there should be no error message at all.
Elm devs should fix it beforehand.
So it looks ok to print the error message in elm_widget_sub_object_add() to force elm devs to fix it.
3. Got additional code cleanups.