Merge remote-tracking branch 'opensource/master' into tizen
authorJaehwan Kim <jae.hwan.kim@samsung.com>
Mon, 2 Nov 2015 11:32:14 +0000 (20:32 +0900)
committerJaehwan Kim <jae.hwan.kim@samsung.com>
Mon, 2 Nov 2015 11:32:14 +0000 (20:32 +0900)
Conflicts:
AUTHORS
NEWS
config/default/base.src.in
config/mobile/base.src.in
config/standard/base.src.in
configure.ac
data/themes/edc/comp.edc
data/themes/edc/elm/button.edc
data/themes/edc/elm/scroller.edc
data/themes/edc/elm/spinner.edc
src/bin/test_focus_policy.c
src/bin/test_gengrid.c
src/bin/test_popup.c
src/bin/test_scroller.c
src/bin/test_win_keygrab.c
src/lib/Elementary.h.in
src/lib/Makefile.am
src/lib/elc_popup.c
src/lib/elm_atspi_bridge.c
src/lib/elm_cnp.c
src/lib/elm_conform.c
src/lib/elm_datetime.c
src/lib/elm_entry.c
src/lib/elm_entry.eo
src/lib/elm_focus.h
src/lib/elm_gen_common.h
src/lib/elm_gengrid.c
src/lib/elm_gengrid.eo
src/lib/elm_gengrid_item.eo
src/lib/elm_genlist.c
src/lib/elm_genlist.eo
src/lib/elm_genlist_item.eo
src/lib/elm_interface_atspi_accessible.c
src/lib/elm_interface_atspi_accessible.eo
src/lib/elm_interface_atspi_accessible.h
src/lib/elm_interface_scrollable.c
src/lib/elm_interface_scrollable.eo
src/lib/elm_interfaces.h
src/lib/elm_layout.c
src/lib/elm_list.c
src/lib/elm_list.eo
src/lib/elm_list_item.eo
src/lib/elm_macros.h
src/lib/elm_main.c
src/lib/elm_photocam.c
src/lib/elm_photocam.eo
src/lib/elm_radio.c
src/lib/elm_radio.eo
src/lib/elm_scroller.c
src/lib/elm_scroller.eo
src/lib/elm_scroller_legacy.h
src/lib/elm_segment_control_item.eo
src/lib/elm_spinner.c
src/lib/elm_spinner.eo
src/lib/elm_toolbar.c
src/lib/elm_toolbar.eo
src/lib/elm_toolbar_item.eo
src/lib/elm_transit.c
src/lib/elm_transit.h
src/lib/elm_widget.c
src/lib/elm_widget.eo
src/lib/elm_widget.h
src/lib/elm_widget_item.eo
src/lib/elm_win.c
src/lib/elm_win.eo
src/lib/elm_win_common.h
src/tests/elm_test_genlist.c

Change-Id: I01acb2d4daaeee7c2faa89005abc88f2a1178d9f

79 files changed:
1  2 
AUTHORS
NEWS
config/default/base.src.in
config/mobile/base.src.in
config/standard/base.src.in
configure.ac
data/themes/edc/comp.edc
data/themes/edc/elm/border.edc
data/themes/edc/elm/button.edc
data/themes/edc/elm/scroller.edc
data/themes/edc/elm/spinner.edc
src/bin/test_focus_policy.c
src/bin/test_gengrid.c
src/bin/test_popup.c
src/bin/test_scroller.c
src/bin/test_win_keygrab.c
src/examples/Makefile.am
src/lib/Elementary.h.in
src/lib/Makefile.am
src/lib/elc_popup.c
src/lib/elm_atspi_bridge.c
src/lib/elm_button.c
src/lib/elm_check.c
src/lib/elm_cnp.c
src/lib/elm_config.c
src/lib/elm_config.h
src/lib/elm_conform.c
src/lib/elm_datetime.c
src/lib/elm_entry.c
src/lib/elm_entry.eo
src/lib/elm_focus.h
src/lib/elm_gen_common.h
src/lib/elm_gengrid.c
src/lib/elm_gengrid.eo
src/lib/elm_gengrid_item.eo
src/lib/elm_genlist.c
src/lib/elm_genlist.eo
src/lib/elm_genlist_item.eo
src/lib/elm_interface_atspi_accessible.c
src/lib/elm_interface_atspi_accessible.eo
src/lib/elm_interface_atspi_accessible.h
src/lib/elm_interface_scrollable.c
src/lib/elm_interface_scrollable.eo
src/lib/elm_interfaces.h
src/lib/elm_layout.c
src/lib/elm_list.c
src/lib/elm_list.eo
src/lib/elm_list_item.eo
src/lib/elm_macros.h
src/lib/elm_main.c
src/lib/elm_photocam.c
src/lib/elm_photocam.eo
src/lib/elm_priv.h
src/lib/elm_progressbar.c
src/lib/elm_radio.c
src/lib/elm_radio.eo
src/lib/elm_scroller.c
src/lib/elm_scroller.eo
src/lib/elm_scroller_legacy.h
src/lib/elm_segment_control_item.eo
src/lib/elm_slider.c
src/lib/elm_spinner.c
src/lib/elm_spinner.eo
src/lib/elm_toolbar.c
src/lib/elm_toolbar.eo
src/lib/elm_toolbar_item.eo
src/lib/elm_transit.c
src/lib/elm_transit.h
src/lib/elm_widget.c
src/lib/elm_widget.eo
src/lib/elm_widget.h
src/lib/elm_widget_entry.h
src/lib/elm_widget_item.eo
src/lib/elm_widget_photocam.h
src/lib/elm_win.c
src/lib/elm_win.eo
src/lib/elm_win.h
src/lib/elm_win_common.h
src/tests/elm_test_genlist.c

diff --cc AUTHORS
index 404439a7674e3e7029c225251e0ca9687ad19126,eefcd813315acd151e55648e6362bc48e00b99ce..4b1c6fedc4cd2d462dbaa9195e6626bb28f1b72e
+++ b/AUTHORS
@@@ -165,3 -165,4 +165,7 @@@ Ji-In Moon <jiin.moon@samsung.com
  Subodh Kumar <s7158.kumar@samsung.com>
  Kumar Navneet <k.navneet@samsung.com>
  Godly T Alias <godly.talias@samsung.com>
++<<<<<<< HEAD
++=======
+ Shashank Pandey <shashank.p@samsung.com> <shashank0990@gmail.com>
++>>>>>>> opensource/master
diff --cc NEWS
index b0eee3a5fde98aa98f6ea73a3d986ab091600ff6,3f469b944afd3324b0fc09b581e1eddc8770e963..36ca2049f233662cb44bcec662a2b411cf766590
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
  =================
++<<<<<<< HEAD
 +Elementary 1.13.1
 +=================
 +
 +Changes since 1.13.0:
 +---------------------
 +
 +Fixes:
 +
 +   * elm engine: Restore explicit use of ELM_ENGNE env var
 +   * entry: Don't unlink empty files when saving @fix T2122.
 +   * datetime: Fix elm_datetime_field_limit_set.
 +   * genlist/gengrid: Add upadating 'focus' state in item realized function.
++=======
+ Elementary 1.16.0
+ =================
+ Changes since 1.15.0:
+ ---------------------
+ Features:
+    * multibuttonentry: add horizontal, vertical padding between items.
+    * index: add index item priority APIs for support multilingual
+    * elm_config: Add flag to control pushing naviframe prev button automatically.
+    * focus: add the focus region show mode
+    * focus: item focus moves by geometry.
+    * popup: make scroller optional in popup (T2651)
+    * elm theme - add a blank focus style if you want invisible focus
+    * Label: add support for all the fancy tags already provided for entry
+    * elm - thumbscroll finger scrolling - make it far smoother
+    * focus: add the APIs to set the focus next about item.
+    * Elm_genlist: Add Item filtering support
+    * spinner: delete longpress timer when scroller enabled.
+    * focus: add the focus_direction feature about item.
+    * focus: change the focus don't stay to scroller.
+    * elc_multibuttonentry: add item disable support
+    * atspi: add translation domain for name and description.
+    * atspi: support org.a11y.atspi.Collection interface
+    * atspi: add new relationship append/remove/clear API
+    * elm run - be explicit about elm run not nesting in docs
+ Fixes:
+    * spinner: entry text makes to registered special value instead of number.
+    * multibuttonentry: item object scale set is not need when theme applied.
+    * mbe: remove unnecessary keypad hide call from multibuttonentry.
+    * popup: fix resize issue in case of custom part text set
+    * focus: add del callback always.
+    * focus/list/genlist/gengrid: fix focus highlight issues on list widgets when auto focus enable is on. (T2555)
+    * Tooltip: reset content delete callback directly after invocation
+    * elm_toolbar: fix icon_size to consider edje base scale
+    * spinner: Add to support spinner value %d format.
+    * scroller: fix the focus move bug in scroller.
+    * gengrid: extends D2418 to horizontal mode.
+    * gengird: change focus move mechanism in gengrid.
+    * elementary: Fix Copy and Paste test to actually paste clipboard text
+    * elm theme - conformant - fix to have proper min size of conformant
+    * cnp: init wayland dnd handlers upon creating the first drop target
+    * cnp: initialize Elm_Selection_Data.action for wayland drops
+    * cnp: fix wayland drop format selection
+    * cnp: pass wayland drop event size to handler, do not nul terminate drop data
+    * cnp: end wayland drag on allocation failure
+    * cnp: only nul terminate wayland drops for text type drops
+    * cnp: redo wayland drop to nul terminate for text_uri drops and free on every drop
+    * Gengrid: Set focus after item looping
+    * list: fix crash while setting nearest item in viewport (T2662)
+    * Entry: fix cursor repositioning on theme_apply (T2646)
+    * scroller: fix the misstake. change && -> ||
+    * scroller: fix memory leak on keys traversal
+    * theme: fix theme file path parsing issue on windows.
+    * elm_win: Initilize the variable 'preferred_rot' as a -1 before invoking _elm_win_xwin_update() in _elm_win_finalize_internal().
+    * gengrid: fix item focus movement in case of horizontal mode
+    * gengrid: no need to loop in case of reorder mode is enabled
+    * toolbar: fix issue of focus not coming to item on mouse click (T2697)
+    * config: revert first_item_focus_on_first_focus_in to 0 (T2662)
+    * Genlist: reset item tree expanded state when putting item in cache
+    * elm win - fix to ensure smart calc is done before show
+    * Gengrid: Fix wrong focus movement in _item_single_select_down
+    * multibuttonentry: Use elm focus for items instead of evas focus.
+    * Revert "Elm_Interface_Scrollable: Improvement in looping behavior"
+    * Elc_Naviframe: When push is in progress, block pop until push is complete.
+    * multibuttonentry: Fix mbe  clicked signal is not work.
+    * Elc_Multibuttonentry: Item resize issue on text set
+    * Genlist: Dont select first item if its DISPLAY_ONLY
+    * naviframe: fix a focus issue when deleting the first item
+    * gengrid: fix crash issue.
+    * FileSelector: fix behaviour when the file is chosen
+    * elm map - fix module load craziness loading all elm modules
+    * elm map - fix crash on badly handled zoom timeout callback
+    * FileSelector Entry: fix behaviour for events
+    * elm_image: fix image preload issue
+    * elm theme - make sure key sounds are on input channel for muting config
+    * calendar: fix signal process timing issue when view update.
+    * elm autofocus show - fix cases where focus is inside containers
+    * elm - when focus goes back in to a window dont have scrollers jump
+    * elm toolbar 0 size items fix if icon not found (T2710)
+    * multibuttonentry: Fix box item append rtl when mirror enabled.
+    * elc_multibuttonentry: Input panel should be controlled only if multibuttonentry is editable
+    * focus: remove checking the focus origin in highlight job.
+    * dnd/x11: correct coordinates in pos callback
+    * test_dnd: transfer text without markup when drag label
+    * [spinner] Notify when value is edited directly
+    * elm - fix focus set on focus in on window due to previous focus fix
+    * elm_conformant: display mode set fix
+    * gengrid: fix duplicate edje signal (elm,state,focused) to item on focus
+    * calendar: weekday update when first day of week changed.
+    * spinner: Fix internal logic about special value show instead of number.
+    * multibuttonentry: fix MBE item clear, item delete logic error.
+    * Revert "index: fix index object got a wrong min value."
+    * spinner: fix extra callback calls
+    * multibuttonentry: Fix padding to be affected by base_scale in edc.
+    * multibuttonentry: Fix MBE item box min size calc error.
+    * elc_naviframe: fix crash in strcmp, if text_set is NULL issue
+    * elm_hover: delay hover dismiss while handling edje signal
+    * elm cursors - if min size is too small then force it to be sane
+    * elm cursor - fix hotspot tracking to actually work right
+    * toolbar: Fix crash on more_item when shrink mode is set with no item.
+    * elementary: Fix calling ecore_evas_wayland_move with improper values
+    * elm_hoversel: fix to show dismiss animation
+    * toolbar: do not change align for "noicon" toolbar items (T2782)
+    * elementary: Remove unused static variable
+    * elementary: Remove unused static variable
+    * elementary: Fix passing wrong parameter
+    * elementary: Fix passing wrong parameter
+    * elementary: Remove unused variable
+    * elementary: Remove unused static varible
+    * elementary: Remove unused function
+    * elementary: Remove unused variables
+    * elementary: Remove unused static variable
+    * elementary: Remove unused static variable
+    * elementary: Fix genlist example to not free data until After it has been removed from the list (CID1327342)
+    * deskmirror: unset proxy.source_clip for urgency effects
+    * border: bring sparklebear theme up-to-date with current efl rendering
+    * elc_file_selector_button: free allocated path name
+    * elm_win: fix wrong comment.
+    * elm_cnp: DnD/X11: correct drag window position in rotation
+    * dayselector: fix warning related to argument type
+    * multibuttonentry: fix label packed many times in internal box.
+ Changes since 1.14.0:
+ ---------------------
+ Features:
+    * ctxpopup: Added item_focus_set/item_focus_get.
+    * hoversel: Added item_focus_set/item_focus_get.
+    * elm_focus: added new focus move policy and elm_object_focus_move_policy_set/get
+    * Elm: Add context,open signal in elm_entry.
+    * theme: migrate all e users of darken_rounded_square to new darken_square image
+    * elm_scroller: add wheel_disable_set API
+    * calendar: show days of prev/next month.
+    * gengrid: add item cache in gengrid for efficient realize/unrealize operation.
+    * elm_config: Add feature to control transition scale for edje
+    * win: Add autohide and ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
+    * EFL Model List View for MVC design
+    * EFL Model Form View for MVC design
+ Fixes:
+    * elementary: Remove unused variable
+    * genlist: fix to return item style correctly.
+    * label: Fix memory leak.
+    * SlideShow: Fix double invocation of ItemClass delete function (T2394)
+    * elm_object_item: fix the issue that del_cb doens't get item data as its parameter
+    * widget: more fix wrt item data.
+    * tooltip: set the correct style of label.
+    * slider: use theme of object for popup.
+    * entry: update selection handlers when entry is resized
+    * elm_win: Set initial withdrawn state from win's ecore_evas property.
+    * Immediatly change the cursor if changed from inside the widget
+    * elm_genlist: fix implementation of genlist tooltip functions
+    * fileselector button: correct window parent finding
+    * elm config - init wl if env vars indicate we should
+    * Genlist: support of ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY mode of genlist item for ELM_ITEM_SELECT_ON_FOCUS_DISABLE config variable.
+    * elm - fix profile handling if ELM_PROFILE is set - dont listen to x msg
+    * Gengrid: fix mirroring bug in gengrid widget.
+    * gengrid/genlist: decrement item counter before triggering item del callback
+    * glview: preserved changed state when altering render mode
+    * tooltip: fix positioning when tooltip is affixed to a window object
+    * interface scrollerable: modify the loop_v condition in _elm_scroll_momentum_animator() function
+    * tooltip: fix tooltip multi line text issue (T2034)
+    * fix list item mode change on elm list
+    * cnp: Add safety check for NULL pointer from _elm_util_text_to_mkup().
+    * cnp: Add safety check for NULL pointer from calloc() for anim_icon.
+    * cnp: Add safety check for NULL pointer from strdup().
+    * Dnd/X11: add dnd support for image, uri types
+    * Cnp/X11: move entry-only code in elm_cnp to entry
+    * Cnp/X11: correct object parameter in datacb
+    * entry: add dnd image handling
+    * cnp: Add safety check for NULL pointer from malloc().
+    * clock: Add safety check for NULL pointer from localtime() func.
+    * entry: emit changed,user signal when text is pasted or dropped
+    * win: only trigger del trap if win type is not FAKE
+    * win: do not use deferred ecore evas deletion for FAKE wins
+    * dayselector : add safety check for NULL pointer from _item_find()
+    * colorselector: add safety check for NULL pointer from ecore_x_image_new().
+    * genlist: fix resize of items when added after elm_genlist_clear(). (T2367)
+    * elm_colorselector: fix horiz/vertical padding to be affected by base_scale in edc
+    * elm_genlist: reset timer to NULL on cancel only.
+    * DnD: remove text/uri handling
+    * config: fix the flush file path.
+    * X11/CnP: remove X11 invocations from elm_entry (T2183)
+    * config: read flush.cfg when elm_config_all_flush is called.
+    * elm_colorselector: pixel-picker accuracy fix
+    * elm_gengrid: fix the bug that gengrid item index(position) is updated wrong value in item_update
+    * elm_interface_scrollable: fix wrong mirrored calculation
+    * elementary: Add rudimentary support for Elm Wayland apps to set border icon (T2453)
+    * Revert "theme: return false if elm_object_style_set() failed to set requested style."
+    * Genlist: use correct variable during realize
+    * elm_datetime: Fix datetime ctxpopup resize issue
+    * Elm_Interface_Scrollable: Improvement in looping behavior
+    * layout: Fix eo API error while running "Genlist 7" in elementary_test. (T2534)
+    * Entry: Add chunked append in case of _elm_entry_entry_append
+    * naviframe: Fix to work clicked callback of auto pushed button.
+    * cnp: change drag win type to ELM_WIN_DND
+    * elm_conform: remember window pointer.
+    * elm_conform: remove smart_callback when it is removed.
+    * elm - scroller - set hold flag on wheel events if used for that dir
+    * image: fix a crash, 0 divide problem.
+    * slider: compare slider values elaborately.
+    * Entry: Fix behaviour of markup filters when setting entry text. (T2561)
+    * elementary: Tweak elm wayland border focus to Fix T2575 (T2575)
+    * elementary: Update elementary wayland border theme to match E's
+    * elementary: Fix elementary wayland border opaque region calculations (T2575)
+    * elementary: Fix program signal for enable/disable of shadows
+    * elementary: Properly fix wayland opaque region setting (T2575)
+    * popup: fix title icon to show up. (T2581)
+    * Scroller: Improvement in _key_action_move() calculations.
+    * genlist : fix genlist dangling pointer crash in item select (T2553)
+    * elementary: Adjust shadow spacer on maximize (T2578)
+    * elementary: Fix T2573: Extra blank line in Genlist Dnd Test (T2573)
+    * Elm_Config: add getpwent support, fix compilation on Windows
+    * Elm_Config: fix compilation when getuid() or geteuid() are not available
+    * elementary: Fix compiler warning disgarding const qualifier
+    * elementary: Fix external variable declaration to match const char
+    * elm_gengrid: Fix condition error.
+    * Elm_Prefs: use Evil API
+    * elm_gengrid: fix missing variable initialization.
+    * multibuttonentry: delete clicked signal preventing code when mbe shrinked.
+    * entry: few times the hit_rect is not clipped properly during genlist scrolling, with entry as content.
+    * multibuttonentry: fix bug with uneditable MBE use case.
+    * multibuttonentry: update end text(item count) even mbe shrinked.
+    * Colorselector: fix wrong object for callback call function
+    * multibuttonentry: internal label object status, box pack, unpack logic clean up.
+    * interface_scrollable: don't use integer abs on floating point
+    * interface_scrollable: convert to int before using abs first
+    * elm: simulate the clicked event over the object only.
+    * hoversel: use elm_object_focus_set to set focus on subobjects.
+    * colorselector: fixed up the selected process
+    * popup: fix resize issue when action area and title area is absent. (T2623)
+ Changes since 1.13.0:
+ ---------------------
+ Features:
+    * elm scroller - add adnimated and accelerated wheel scroll
+    * elm_transit: Add elm_transit_go_in() API
+    * DnD/Wl: add cancel support
+    * DnD/Wl: support multi-layer Drag and Drop
+    * genlist: Implemented genlist expand mode and content_min_limit function
+    * elm - focus feature - add config option to automatically show/hide focus
+    * elm_slider: Added elm_slider_indicator_visible_mode_set/get.
+    * config: Reinitialize font config using evas_font_reinit() API.
+    * scroller: add loop feature.
+    * multibuttonentry: Add item long pressed callback.
+    * Elm helper: add the posix regex validator.
+    * add colorclass editor
+ Fixes:
+    * panel: Remove error message from elm_panel_add API and _theme_apply func.
+    * popup: passing right parameter to elm_layout_sizing_eval
+    * elm engine - restore explicit use of ELM_ENGNE env var
+    * genlist: select the focused item on enter key input
+    * gengrid: select the focused item on enter key input
+    * genlist: Fix elm_genlist_item_index_get.
+    * popup: removed button style setting code in theme_apply
+    * multibuttonentry: Item selected callback called twice redundantly.
+    * entry: Don't unlink empty files when saving @fix T2122.
+    * genlist/gengrid : Add upadating 'focus' state in item realized function.
+    * datetime: Fix elm_datetime_field_limit_set.
+    * elementary_test: fix build on windows
+    * elementary: Restart default cursor for wayland windows
+    * elementary: Fix issue of cursor getting unset on DRM engine
+    * layout: apply widget's states when elm_layout_file_set is called
+    * gengrid/genlist/list: focus first item if first_item_focus_on_first_focus_in is on whether focus highlight is enabled or not
+    * config: fix config name
+    * elm_win framespace toggling on fullscreen change: activate!
+    * hoversel: Enabled default mirroring in hoversel.
+    * Genlist: make reordered item selected
+    * popup: correct popup position.
+    * layout: here default content alias can be acceptable.
+    * Genlist/Gengrid : Modified to handle the focus highlight on unrealized items
+    * genlist: Send param item type instead of eo item type.
+    * widget: fix the abi break.
+    * GLView: Return false if the surface could not be created
+    * conform: Use eo_isa() to check object types.
+    * elm_win fullscreen setting on FAKE wins should just toggle the flag
+    * elm_widget: fix wrong parmeter.
+    * elm_entry: fix focus on text selection
+    * [elm_datetime] Fix to parse the POSIX locale format properly.
+    * [elm_datetime] Fix to consider second field while comparing datetime values.
+    * elm_datetime: compatibility for Windows.
+    * elm_prefs: compatibility for Windows.
+    * elm_slideshow: looking for right data directory in prefix.
+    * elm_prefs: looking for right lib directory in prefix.
+    * elm_panel: display directory from HOME on Windows.
+    * elm_fileselector: display directory from HOME on Windows.
+    * elm_diskselector: check if sd variable is null.
+    * task_switcher: add variable verification.
+    * elm_genlist: use of elm_app_data_dir_get() instead of PACKAGE_DATA_DIR.
+    * elm_naviframe: use of elm_app_data_dir_get() instead of PACKAGE_DATA_DIR.
+    * elm_naviframe: use of elm_app_data_dir_get() instead of PACKAGE_DATA_DIR.
+    * elm_map: use of elm_app_data_dir_get() instead of PACKAGE_DATA_DIR
+    * Elm_Win: Fix _elm_win_focus_prev_target_del callback added repeatly without callback del.
+    * elm image - stop repeating events by default - wrong
+    * elm_genlist: pass eo_it to eo_do_ret func, not VIEW(it)
+    * [elm_panel] Fix mirroring issue.
+    * test_naviframe: Fix content image file names.
+    * elm_image: return EINA_FALSE if the data source is NULL in elm_image_memfile_set
+    * spinner: fix entry style in non 'button_layout' mode
+    * elm_gengrid: mark cursor_engine_only in data and update state when realized
+    * atspi: add missing signals array sentiel.
+    * elementary: Fix elm_win_window_id_get for wayland
+    * elm_slider: fix theme apply
+    * elm_clock: fix theme apply
+    * elm: add safety check
+    * elm_segment_control: mark default return value in eolian API
+    * elm_photocam: Fixed T2337, zoom in/out rotated photocam image
+    * Genlist: Fix for memory leak
+    * elm_photocam: Limiting image reload in zoom in/out
+    * elm_multibuttonentry: change theme_set API to provide full widget theming
+    * elm_multibuttonentry: fix label position and size defects
+    * elm_toolbar: fix memory leaks
+    * Genlist: fix multiselect for ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY select_mode
+    * Genlist: rectification in _item_focused_next()
+    * map: fix scale calculation error
+    * Fix slideshow smart events event_info
++>>>>>>> opensource/master
  
  Changes since 1.12.0:
  ---------------------
index e29aeb2ed96ec42c3ed63d79de52276fa9128528,5caff3d6fc7fa05f425a89ecb48142540c7f3999..f6ff3c5186dc08497a9e163962a0fb7d42458e75
@@@ -48,7 -45,7 +45,11 @@@ group "Elm_Config" struct 
    value "focus_highlight_animate" uchar: 0;
    value "focus_highlight_clip_disable" uchar: 0;
    value "item_select_on_focus_disable" uchar: 0;
++<<<<<<< HEAD
 +  value "first_item_focus_on_first_focus_in" uchar: 1;
++=======
+   value "first_item_focus_on_first_focus_in" uchar: 0;
++>>>>>>> opensource/master
    value "focus_move_policy" uchar: 0;
    value "toolbar_shrink_mode" int: 3;
    value "fileselector_expand_enable" uchar: 0;
index ee091157761c9585f00a37b9d23f9a6d7a5ac983,6621fb88822ce49f3dee40db13e4be54277d3f98..bec089c9b2e71f30b1afcc4a46720b3155859c72
@@@ -48,7 -45,7 +45,11 @@@ group "Elm_Config" struct 
    value "focus_highlight_animate" uchar: 0;
    value "focus_highlight_clip_disable" uchar: 0;
    value "item_select_on_focus_disable" uchar: 0;
++<<<<<<< HEAD
 +  value "first_item_focus_on_first_focus_in" uchar: 1;
++=======
+   value "first_item_focus_on_first_focus_in" uchar: 0;
++>>>>>>> opensource/master
    value "focus_move_policy" uchar: 0;
    value "toolbar_shrink_mode" int: 3;
    value "fileselector_expand_enable" uchar: 0;
index 2ee0271bcd14af519b94802da364d26b9571029e,a89bebad0770d946ca67690906f56610f6d6232d..4e0638ac569349ba63f180a0c2ecb15ca09a4c49
@@@ -48,7 -45,7 +45,11 @@@ group "Elm_Config" struct 
    value "focus_highlight_animate" uchar: 0;
    value "focus_highlight_clip_disable" uchar: 1;
    value "item_select_on_focus_disable" uchar: 0;
++<<<<<<< HEAD
 +  value "first_item_focus_on_first_focus_in" uchar: 1;
++=======
+   value "first_item_focus_on_first_focus_in" uchar: 0;
++>>>>>>> opensource/master
    value "focus_move_policy" uchar: 0;
    value "toolbar_shrink_mode" int: 3;
    value "fileselector_expand_enable" uchar: 1;
diff --cc configure.ac
index 72abf5a90d20bcceb28031176ce16711ffd2cae8,9c1a32afe2110dd313b3f3e3febd0bf10835ea33..a91c4370df9239953a85322d8e93631c649f0d52
@@@ -1,5 -1,5 +1,10 @@@
++<<<<<<< HEAD
 +EFL_VERSION([1], [13], [1], [release])
 +AC_INIT([elementary], [efl_version], [enlightenment-devel@lists.sourceforge.net])
++=======
+ EFL_VERSION([1], [16], [0], [release])
+ AC_INIT([elementary], [efl_version-beta3], [enlightenment-devel@lists.sourceforge.net])
++>>>>>>> opensource/master
  
  AC_PREREQ(2.63)
  AC_CONFIG_SRCDIR([configure.ac])
index 9c7eec1fae666812360dd3355faf473a10764034,17d2dd71a0e1bb652d3636af49b012a22ea62f6d..112dc6d26313137bfe643bcad8b7f0cb9cfc180d
@@@ -290,8 -289,7 +289,12 @@@ group { name: "e/comp/frame/default"
              image.normal: "win_glow.png";
              image.border: 9 9 9 9;
              image.middle: 0;
++<<<<<<< HEAD
 +            rel1.to: "gspacer";
 +            rel2.to: "gspacer";
++=======
+             rel.to: "gspacer";
++>>>>>>> opensource/master
              fill.smooth: 0;
              color: 255 255 255 0;
              visible: 0;
        part { name: "e.swallow.content"; type: SWALLOW;
           clip_to: "focus-clipper";
           description { state: "default" 0.0;
-             rel1.to: "shower";
-             rel2.to: "shower";
+             rel.to: "shower";
+          }
+       }
+       spacer { "gspacer";
+          desc {
+             rel.to: "e.swallow.content";
+             rel1.offset: -5  -5;
+             rel2.offset: 4 4;
           }
        }
 +      spacer { "gspacer";
 +         desc {
 +            rel1.to: "e.swallow.content";
 +            rel1.offset: -5  -5;
 +            rel2.to: "e.swallow.content";
 +            rel2.offset: 4 4;
 +         }
 +      }
     }
     programs {
         program {
Simple merge
index a585e1b4ed81571f3bc45de5802b1fa1d2332dde,c1712873fe525ff0696136e95b282cb83087462e..4081363ca74afac5f9f8fb61c20b428a468bd6ea
@@@ -1524,7 -1530,7 +1530,11 @@@ group { name: "elm/button/base/hoversel
                 }
              }
              description { state: "disabled" 0.0;
++<<<<<<< HEAD
 +               inherit: "default" 0 0 ;
++=======
+                inherit: "default" 0.0 ;
++>>>>>>> opensource/master
                 color: FN_COL_DISABLE;
                 color_class: "spinner_disabled";
              }
index d70be4042c1405aeb14a7c525fe137c026b4f310,34fa9103cba126fcd4ba3c3a085e775bfc1989e5..3c0ec82ffc12a8fa5e93817e2d97295291fb171e
@@@ -1304,3 -1333,25 +1333,28 @@@ group { name: "elm/scroller/contents/de
        }
     }
  }
++<<<<<<< HEAD
++=======
+ group { name: "elm/scroller/base/popup/no_inset_shadow";
+    inherit: "elm/scroller/base/default";
+    parts {
+       part { name: "elm.swallow.content"; type: SWALLOW;
+          description { state: "default" 0.0;
+             rel1.offset: 0 0;
+             rel2.offset: 0 0;
+          }
+       }
+       part { name: "inset";
+          description { state: "default" 0.0;
+             visible: 0;
+          }
+       }
+       part { name: "shadow";
+          description { state: "default" 0.0;
+             visible: 0;
+          }
+       }
+    }
+ }
++>>>>>>> opensource/master
index b34eada189d28940ea1aef6f6d3dedc9dcee75e7,b2d1a29322618247a4f7d775c7cf29f42aababb8..3c6b95fb470a9ec48a2437fee09aad5f562dd3f9
@@@ -1,10 -1,17 +1,24 @@@
  group { name: "elm/spinner/base/default";
+    alias: "elm/spinner/base/colorselector/default";
     images.image: "vert_bar_inset.png" COMP;
     parts {
++<<<<<<< HEAD
 +      part { name: "bg";
 +         type: SPACER;
 +         scale: 1;
 +         description { state: "default" 0.0;
++=======
+       part { name: "clip"; type: RECT;
+          description { state: "default" 0.0;
+             rel1.to: "elm.swallow.text_button";
+             rel2.to: "elm.swallow.text_button";
+          }
+       }
+       part { name: "bg";
+          type: SPACER;
+          scale: 1;
+          description { state: "default" 0.0;
++>>>>>>> opensource/master
           }
        }
        part { name: "inset"; mouse_events: 0;
        }
        part { name: "elm.swallow.entry";
           type: SWALLOW;
++<<<<<<< HEAD
 +         description { state: "default" 0.0;
 +            fixed: 1 0;
++=======
+          clip_to: "clip";
+          description { state: "default" 0.0;
+             fixed: 1 1;
++>>>>>>> opensource/master
              rel1.to: "elm.swallow.text_button";
              rel2.to: "elm.swallow.text_button";
              visible: 0;
@@@ -175,6 -183,6 +195,26 @@@ group { name: "elm/spinner/base/vertica
        part { name: "elm.swallow.inc_button";
           type: SWALLOW;
           scale: 1;
++<<<<<<< HEAD
++         description { state: "default" 0.0;
++            rel1.to: "inset";
++            rel1.offset: 1 1;
++            rel1.relative: 1.0 0.0;
++            rel2.to: "inset";
++            rel2.offset: 1 -2;
++            align: 1.0 0.5;
++         }
++      }
++      part { name: "elm.swallow.text_button";
++         type: SWALLOW;
++         scale: 1;
++         description { state: "default" 0.0;
++            visible: 1;
++            rel1.to_y: "inset";
++            rel1.to_x: "elm.swallow.dec_button";
++            rel1.relative: 1.0 0.0;
++            rel1.offset: 1 1;
++=======
           description { state: "default" 0.0;
              rel1.to: "inset";
              rel1.offset: 1 1;
              rel1.to_x: "elm.swallow.dec_button";
              rel1.relative: 1.0 0.0;
              rel1.offset: 1 1;
++>>>>>>> opensource/master
              rel2.to_y: "inset";
              rel2.to_x: "elm.swallow.inc_button";
              rel2.relative: 0.0 1.0;
index a54c0077083684b121f431c2a99be1320809df78,66a424453afa945f18f4a97b197c026e226f2b80..4564e4aa8c6edddd301ceefa6233543d1ed719a7
@@@ -14,15 -14,15 +14,27 @@@ _rdg_changed_cb(void *data, Evas_Objec
     switch (value)
       {
        case 0:
++<<<<<<< HEAD
 +        elm_object_text_set(bt, "Test Button(MOUSE CLICK or KEY)");
 +        elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_CLICK);
 +        break;
 +      case 1:
 +        elm_object_text_set(bt, "Test Button(MOUSE IN or KEY)");
 +        elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_IN);
 +        break;
 +      case 2:
 +        elm_object_text_set(bt, "Test Button(KEY ONLY)");
++=======
+         elm_object_text_set(bt, "Test Button (MOUSE CLICK or KEY)");
+         elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_CLICK);
+         break;
+       case 1:
+         elm_object_text_set(bt, "Test Button (MOUSE IN or KEY)");
+         elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_IN);
+         break;
+       case 2:
+         elm_object_text_set(bt, "Test Button (KEY ONLY)");
++>>>>>>> opensource/master
          elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_KEY_ONLY);
          break;
        default:
  void
  test_focus_object_policy(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
  {
++<<<<<<< HEAD
 +   Evas_Object *win, *fr, *bx, *bt, *test_bt, *rdg, *rd;
++=======
+    Evas_Object *win, *fr, *fr2, *bx, *fr_bx, *bt, *test_bt, *lbl, *rdg, *rd;
++>>>>>>> opensource/master
  
     win = elm_win_util_standard_add("focus-object-policy", "Focus Object Policy");
     elm_win_autodel_set(win, EINA_TRUE);
     elm_object_content_set(fr, bx);
     evas_object_show(bx);
  
++<<<<<<< HEAD
 +   bt = elm_button_add(bx);
 +   elm_object_text_set(bt, "Button 1");
 +   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 +   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
 +   elm_box_pack_end(bx, bt);
 +   evas_object_show(bt);
 +
 +   bt = elm_button_add(bx);
 +   elm_object_text_set(bt, "Button 2");
 +   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 +   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
 +   elm_box_pack_end(bx, bt);
 +   evas_object_show(bt);
 +
 +   // a button to test focus object policy
 +   test_bt = elm_button_add(bx);
 +   elm_object_text_set(test_bt, "Test Button(MOUSE CLICK or KEY)");
 +   evas_object_size_hint_weight_set(test_bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 +   evas_object_size_hint_align_set(test_bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
 +   elm_box_pack_end(bx, test_bt);
 +   evas_object_show(test_bt);
 +   elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_CLICK);
 +
 +   bt = elm_button_add(bx);
 +   elm_object_text_set(bt, "Button 4");
 +   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 +   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
 +   elm_box_pack_end(bx, bt);
 +   evas_object_show(bt);
 +
 +   // radios to select focus object policy
 +   rd = elm_radio_add(bx);
 +   elm_radio_state_value_set(rd, 0);
 +   evas_object_size_hint_align_set(rd, 0.0, 0.5);
 +   elm_object_text_set(rd, "Focus Move Pollicy Mouse Click");
 +   elm_box_pack_end(bx, rd);
 +   evas_object_show(rd);
 +   evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
 +
 +   rdg = rd;
 +
 +   rd = elm_radio_add(bx);
 +   elm_radio_state_value_set(rd, 1);
 +   elm_radio_group_add(rd, rdg);
 +   evas_object_size_hint_align_set(rd, 0.0, 0.5);
 +   elm_object_text_set(rd, "Focus Move Policy Mouse In");
 +   elm_box_pack_end(bx, rd);
 +   evas_object_show(rd);
 +   evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
 +
 +   rd = elm_radio_add(bx);
 +   elm_radio_state_value_set(rd, 2);
 +   elm_radio_group_add(rd, rdg);
 +   evas_object_size_hint_align_set(rd, 0.0, 0.5);
 +   elm_object_text_set(rd, "Focus Move Pollicy Key Only");
 +   elm_box_pack_end(bx, rd);
 +   evas_object_show(rd);
 +   evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
++=======
+    /* frame 1 for normal buttons */
+      {
+         fr2 = elm_frame_add(bx);
+         evas_object_size_hint_weight_set(fr2, EVAS_HINT_EXPAND, 0);
+         evas_object_size_hint_align_set(fr2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+         elm_object_text_set(fr2, "Focusable Buttons");
+         elm_box_pack_end(bx, fr2);
+         evas_object_show(fr2);
+         fr_bx = elm_box_add(fr2);
+         elm_object_content_set(fr2, fr_bx);
+         evas_object_show(fr_bx);
+         bt = elm_button_add(fr_bx);
+         elm_object_text_set(bt, "Button 1");
+         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+         evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+         elm_box_pack_end(fr_bx, bt);
+         evas_object_show(bt);
+         elm_object_focus_set(bt, EINA_TRUE);
+         bt = elm_button_add(fr_bx);
+         elm_object_text_set(bt, "Button 2");
+         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+         evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+         elm_box_pack_end(fr_bx, bt);
+         evas_object_show(bt);
+         // a button to test focus object policy
+         test_bt = elm_button_add(fr_bx);
+         elm_object_text_set(test_bt, "Test Button (MOUSE CLICK or KEY)");
+         evas_object_size_hint_weight_set(test_bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+         evas_object_size_hint_align_set(test_bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+         elm_box_pack_end(fr_bx, test_bt);
+         evas_object_show(test_bt);
+         elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_CLICK);
+         bt = elm_button_add(fr_bx);
+         elm_object_text_set(bt, "Button 4");
+         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+         evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+         elm_box_pack_end(fr_bx, bt);
+         evas_object_show(bt);
+      }
+    /* a frame 2 for the test button */
+      {
+         fr2 = elm_frame_add(bx);
+         evas_object_size_hint_weight_set(fr2, EVAS_HINT_EXPAND, 0);
+         evas_object_size_hint_align_set(fr2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+         elm_object_text_set(fr2, "Focus Options for a TEST button");
+         elm_box_pack_end(bx, fr2);
+         evas_object_show(fr2);
+         fr_bx = elm_box_add(fr2);
+         elm_object_content_set(fr2, fr_bx);
+         evas_object_show(fr_bx);
+         lbl = elm_label_add(fr_bx);
+         evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0);
+         elm_object_text_set(lbl, "This focus option will be applied only for a TEST button. <br/>The focus policies of other buttons will be remain in MOUSE CLICK status.");
+         elm_box_pack_end(fr_bx, lbl);
+         evas_object_show(lbl);
+         // radios to select focus object policy
+         rd = elm_radio_add(fr_bx);
+         elm_radio_state_value_set(rd, 0);
+         evas_object_size_hint_align_set(rd, 0.0, 0.5);
+         elm_object_text_set(rd, "Focus Move Pollicy Mouse Click");
+         elm_box_pack_end(fr_bx, rd);
+         evas_object_show(rd);
+         evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
+         rdg = rd;
+         rd = elm_radio_add(fr_bx);
+         elm_radio_state_value_set(rd, 1);
+         elm_radio_group_add(rd, rdg);
+         evas_object_size_hint_align_set(rd, 0.0, 0.5);
+         elm_object_text_set(rd, "Focus Move Policy Mouse In");
+         elm_box_pack_end(fr_bx, rd);
+         evas_object_show(rd);
+         evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
+         rd = elm_radio_add(fr_bx);
+         elm_radio_state_value_set(rd, 2);
+         elm_radio_group_add(rd, rdg);
+         evas_object_size_hint_align_set(rd, 0.0, 0.5);
+         elm_object_text_set(rd, "Focus Move Pollicy Key Only");
+         elm_box_pack_end(fr_bx, rd);
+         evas_object_show(rd);
+         evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
+      }
++>>>>>>> opensource/master
  
     evas_object_resize(win, 320, 320);
     evas_object_show(win);
index a4b42f74fcaf6d2df37f7bf0b721ed15aa99f433,523aaf330118f43f0e4d11182f7c45540e9316bb..de2b075c640959ff09175bd2f587b29a470dc3b7
@@@ -30,6 -30,7 +30,10 @@@ struct _api_dat
     Evas_Object *box;           /* Use this to get box content     */
     Evas_Object *grid;
     Evas_Object *grid2;
++<<<<<<< HEAD
++=======
+    Elm_Gengrid_Item_Field_Type field_type;
++>>>>>>> opensource/master
  };
  typedef struct _api_data api_data;
  
@@@ -1916,6 -1983,266 +1986,269 @@@ test_gengrid_focus(void *data EINA_UNUS
          if (i == 4)
            elm_object_item_disabled_set(id->item, EINA_TRUE);
       }
++<<<<<<< HEAD
++=======
+    elm_gengrid_item_class_free(ic);
+    evas_object_resize(win, 600, 600);
+    evas_object_show(win);
+ }
+ char *
+ _gg_update_text_get(void *data EINA_UNUSED,
+                     Evas_Object *obj EINA_UNUSED,
+                     const char *part EINA_UNUSED)
+ {
+    char *txt[] = {"Sky", "Stone", "Water", "Flower", "Sand", "Sun", "Moon", "Star", "Cloud", NULL};
+    int n = rand() % 9;
+    return strdup(txt[n]);
+ }
+ Evas_Object *
+ _gg_update_content_get(void *data, Evas_Object *obj, const char *part)
+ {
+    const Item_Data *id = data;
+    char buf[256];
+    int n = 0;
+    if (!strcmp(part, "elm.swallow.icon"))
+      {
+         n = rand() % 9;
+         Evas_Object *image = elm_image_add(obj);
+         snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
+         elm_image_file_set(image, buf, NULL);
+         elm_image_aspect_fixed_set(image, EINA_FALSE);
+         evas_object_show(image);
+         return image;
+      }
+    else if (!strcmp(part, "elm.swallow.end"))
+      {
+         Evas_Object *ck = elm_check_add(obj);
+         evas_object_propagate_events_set(ck, EINA_FALSE);
+         elm_check_state_set(ck, id->onoff);
+         evas_object_smart_callback_add(ck, "changed", grid_item_check_changed, data);
+         evas_object_show(ck);
+         return ck;
+      }
+    return NULL;
+ }
+ Eina_Bool
+ _gg_update_state_get(void *data EINA_UNUSED,
+                      Evas_Object *obj EINA_UNUSED,
+                      const char *part EINA_UNUSED)
+ {
+    return EINA_FALSE;
+ }
+ static void
+ _gg_item_update_clicked_cb(void *data,
+                            Evas_Object *obj EINA_UNUSED,
+                            void *event_info EINA_UNUSED)
+ {
+    api_data *api = (api_data *)data;
+    Evas_Object *gengrid = api->grid;
+    Eina_List *l = elm_gengrid_realized_items_get(gengrid);
+    Elm_Object_Item *item = NULL;
+    Item_Data *id = NULL;
+    EINA_LIST_FREE(l, item)
+      {
+         id = elm_object_item_data_get(item);
+         if (id && id->onoff) elm_gengrid_item_update(item);
+      }
+ }
+ static void
+ _gg_item_fields_update_clicked_cb(void *data,
+                                   Evas_Object *obj EINA_UNUSED,
+                                   void *event_info EINA_UNUSED)
+ {
+    api_data *api = (api_data *)data;
+    Evas_Object *gengrid = api->grid;
+    Eina_List *l = elm_gengrid_realized_items_get(gengrid);
+    Elm_Object_Item *item = NULL;
+    Item_Data *id = NULL;
+    EINA_LIST_FREE(l, item)
+      {
+         id = elm_object_item_data_get(item);
+         if (id && id->onoff)
+           {
+              elm_gengrid_item_fields_update(item, "*", api->field_type);
+           }
+      }
+ }
+ static void
+ _gg_text_update_changed_cb(void *data,
+                            Evas_Object *obj,
+                            void *event_info EINA_UNUSED)
+ {
+    api_data *api = (api_data *)data;
+    if (elm_check_state_get(obj))
+      api->field_type |= ELM_GENGRID_ITEM_FIELD_TEXT;
+    else
+      api->field_type ^= ELM_GENGRID_ITEM_FIELD_TEXT;
+ }
+ static void
+ _gg_content_update_changed_cb(void *data,
+                               Evas_Object *obj,
+                               void *event_info EINA_UNUSED)
+ {
+    api_data *api = (api_data *)data;
+    if (elm_check_state_get(obj))
+      api->field_type |= ELM_GENGRID_ITEM_FIELD_CONTENT;
+    else
+      api->field_type ^= ELM_GENGRID_ITEM_FIELD_CONTENT;
+ }
+ static void
+ _gg_state_update_changed_cb(void *data,
+                             Evas_Object *obj,
+                             void *event_info EINA_UNUSED)
+ {
+    api_data *api = (api_data *)data;
+    if (elm_check_state_get(obj))
+      api->field_type |= ELM_GENGRID_ITEM_FIELD_STATE;
+    else
+      api->field_type ^= ELM_GENGRID_ITEM_FIELD_STATE;
+ }
+ void
+ test_gengrid_update(void *data EINA_UNUSED,
+                     Evas_Object *obj EINA_UNUSED,
+                     void *event_info EINA_UNUSED)
+ {
+    Evas_Object *win, *bx, *gengrid, *btn, *fr, *bx_opt, *ck;
+    Elm_Gengrid_Item_Class *ic;
+    api_data *api = calloc(1, sizeof(api_data));
+    Item_Data *id;
+    int i;
+    win = elm_win_util_standard_add("gengrid-update", "Gengrid Update");
+    elm_win_autodel_set(win, EINA_TRUE);
+    api->box = bx = elm_box_add(win);
+    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_win_resize_object_add(win, bx);
+    evas_object_show(bx);
+    api->grid = gengrid = elm_gengrid_add(bx);
+    elm_gengrid_item_size_set(gengrid,
+                              ELM_SCALE_SIZE(150),
+                              ELM_SCALE_SIZE(150));
+    evas_object_size_hint_weight_set(gengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(gengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_box_pack_end(bx, gengrid);
+    evas_object_show(gengrid);
+    evas_object_smart_callback_add(gengrid, "item,focused", _gengrid_focus_item_cb, "item,focused");
+    evas_object_smart_callback_add(gengrid, "item,unfocused", _gengrid_focus_item_cb, "item,unfocused");
+    evas_object_smart_callback_add(gengrid, "selected", _gengrid_focus_item_cb, "selected");
+    evas_object_smart_callback_add(gengrid, "unselected", _gengrid_focus_item_cb, "unselected");
+    evas_object_smart_callback_add(gengrid, "activated", _gengrid_focus_item_cb, "activated");
+    evas_object_smart_callback_add(gengrid, "highlighted", _gengrid_focus_item_cb, "highlighted");
+    evas_object_smart_callback_add(gengrid, "unhighlighted", _gengrid_focus_item_cb, "unhighlighted");
+    evas_object_event_callback_add(gengrid, EVAS_CALLBACK_KEY_DOWN, _gengrid_focus_key_down_cb, NULL);
+    //initialize field type
+    api->field_type = ELM_GENGRID_ITEM_FIELD_ALL;
+    //Field Options
+    fr = elm_frame_add(bx);
+    elm_object_text_set(fr, "Field Options");
+    evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_box_pack_end(bx, fr);
+    evas_object_show(fr);
+    bx_opt = elm_box_add(fr);
+    elm_box_horizontal_set(bx_opt, EINA_TRUE);
+    elm_object_content_set(fr, bx_opt);
+    evas_object_show(bx_opt);
+    ck = elm_check_add(bx_opt);
+    elm_object_text_set(ck, "TEXT");
+    elm_check_state_set(ck, EINA_FALSE);
+    evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
+    evas_object_smart_callback_add(ck, "changed",
+                                   _gg_text_update_changed_cb,
+                                   api);
+    elm_box_pack_end(bx_opt, ck);
+    evas_object_show(ck);
+    ck = elm_check_add(bx_opt);
+    elm_object_text_set(ck, "CONTENT");
+    elm_check_state_set(ck, EINA_FALSE);
+    evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
+    evas_object_smart_callback_add(ck, "changed",
+                                   _gg_content_update_changed_cb,
+                                   api);
+    elm_box_pack_end(bx_opt, ck);
+    evas_object_show(ck);
+    ck = elm_check_add(bx_opt);
+    elm_object_text_set(ck, "STATE");
+    elm_check_state_set(ck, EINA_FALSE);
+    evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
+    evas_object_smart_callback_add(ck, "changed",
+                                   _gg_state_update_changed_cb,
+                                   api);
+    elm_box_pack_end(bx_opt, ck);
+    evas_object_show(ck);
+    //Update Buttons
+    fr = elm_frame_add(bx);
+    elm_object_text_set(fr, "Update Options");
+    evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_box_pack_end(bx, fr);
+    evas_object_show(fr);
+    bx_opt = elm_box_add(fr);
+    elm_box_horizontal_set(bx_opt, EINA_TRUE);
+    elm_object_content_set(fr, bx_opt);
+    evas_object_show(bx_opt);
+    btn = elm_button_add(bx_opt);
+    elm_object_text_set(btn, "Update");
+    evas_object_smart_callback_add(btn, "clicked", _gg_item_update_clicked_cb, api);
+    elm_box_pack_end(bx_opt, btn);
+    evas_object_show(btn);
+    btn = elm_button_add(bx_opt);
+    elm_object_text_set(btn, "Fields Update");
+    evas_object_smart_callback_add(btn, "clicked", _gg_item_fields_update_clicked_cb, api);
+    elm_box_pack_end(bx_opt, btn);
+    evas_object_show(btn);
+    //Gengrid Item Append
+    ic = elm_gengrid_item_class_new();
+    ic->item_style = "default";
+    ic->func.text_get = _gg_update_text_get;
+    ic->func.content_get = _gg_update_content_get;
+    ic->func.state_get = _gg_update_state_get;
+    ic->func.del = grid_del;
+    for (i = 0; i < 24; i++)
+      {
+         id = calloc(1, sizeof(Item_Data));
+         id->mode = i;
+         id->item = elm_gengrid_item_append(gengrid, ic, id, NULL, NULL);
+         if (i == 4)
+           elm_object_item_disabled_set(id->item, EINA_TRUE);
+      }
++>>>>>>> opensource/master
     elm_gengrid_item_class_free(ic);
  
     evas_object_resize(win, 600, 600);
index fec2abbca31b0e0d503eba1bcc685b1e42b0ead6,dcfba0eebc942581a4a25a28882c4f36fc5383c2..a811417277e7cd16cf45935b631d98df8863b2bb
@@@ -633,55 -656,56 +656,107 @@@ _popup_center_title_list_content_1butto
  
  static void
  _popup_center_title_genlist_content_1button_cb(void *data, Evas_Object *obj EINA_UNUSED,
++<<<<<<< HEAD
 +                                            void *event_info EINA_UNUSED)
 +{
 +   Evas_Object *popup, *genlist;
 +   Evas_Object *btn;
 +   int i;
 +
 +   popup = elm_popup_add(data);
 +   elm_object_part_text_set(popup, "title,text", "Title");
 +
 +   Elm_Genlist_Item_Class *itc1 = elm_genlist_item_class_new();
 +   itc1->item_style = "default";
 +   itc1->func.text_get = gl_popup_text_get;
 +   itc1->func.content_get = NULL;
 +   itc1->func.state_get = NULL;
 +   itc1->func.del = NULL;
 +
 +   // genlist as a popup content
 +   genlist = elm_genlist_add(popup);
 +   elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
 +   elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE);
 +
 +   for (i = 0; i < 10; i++)
 +     {
 +        elm_genlist_item_append(genlist,
 +                                itc1,
 +                                (void *)(uintptr_t)i/* item data */,
 +                                NULL/* parent */,
 +                                ELM_GENLIST_ITEM_NONE,
 +                                NULL,
 +                                NULL);
 +     }
 +   elm_genlist_item_class_free(itc1);
 +   elm_object_content_set(popup, genlist);
 +
 +   // popup buttons
 +   btn = elm_button_add(popup);
 +   elm_object_text_set(btn, "OK");
 +   elm_object_part_content_set(popup, "button1", btn);
 +   evas_object_smart_callback_add(btn, "clicked", _popup_close_cb, popup);
 +
 +   // popup show should be called after adding all the contents and the buttons
 +   // of popup to set the focus into popup's contents correctly.
 +   evas_object_show(popup);
 +}
 +
 +
 +static void
 +_subpopup_cb(void *data, Evas_Object *obj EINA_UNUSED,
++=======
++>>>>>>> opensource/master
                                              void *event_info EINA_UNUSED)
+ {
+    Evas_Object *popup, *genlist;
+    Evas_Object *btn;
+    int i;
+    popup = elm_popup_add(data);
+    if (is_popup_scroll)
+      elm_popup_scrollable_set(popup, is_popup_scroll);
+    elm_object_part_text_set(popup, "title,text", "Title");
+    Elm_Genlist_Item_Class *itc1 = elm_genlist_item_class_new();
+    itc1->item_style = "default";
+    itc1->func.text_get = gl_popup_text_get;
+    itc1->func.content_get = NULL;
+    itc1->func.state_get = NULL;
+    itc1->func.del = NULL;
+    // genlist as a popup content
+    genlist = elm_genlist_add(popup);
+    elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+    elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE);
+    for (i = 0; i < 10; i++)
+      {
+         elm_genlist_item_append(genlist,
+                                 itc1,
+                                 (void *)(uintptr_t)i/* item data */,
+                                 NULL/* parent */,
+                                 ELM_GENLIST_ITEM_NONE,
+                                 NULL,
+                                 NULL);
+      }
+    elm_genlist_item_class_free(itc1);
+    elm_object_content_set(popup, genlist);
+    // popup buttons
+    btn = elm_button_add(popup);
+    elm_object_text_set(btn, "OK");
+    elm_object_part_content_set(popup, "button1", btn);
+    evas_object_smart_callback_add(btn, "clicked", _popup_close_cb, popup);
+    // popup show should be called after adding all the contents and the buttons
+    // of popup to set the focus into popup's contents correctly.
+    evas_object_show(popup);
+ }
+ static void
+ _subpopup_cb(void *data, Evas_Object *obj EINA_UNUSED,
+              void *event_info EINA_UNUSED)
  {
     Evas_Object *popup;
     Evas_Object *btn, *btnclose;
index 8457e92cc1ba008488933ebaf8370eb107d687a9,eb00f2594614448e9a53aeb5582a8b490bb6681c..464e3832d45e0ea383da65447c27854005cb1623
@@@ -112,8 -130,8 +130,13 @@@ _my_bt_block_movements_y_axis(void *dat
       }
  }
  
++<<<<<<< HEAD
 +void
 +my_bt_loop_x_axis(void *data, Evas_Object *obj EINA_UNUSED,
++=======
+ static void
+ _my_bt_loop_x_axis(void *data, Evas_Object *obj EINA_UNUSED,
++>>>>>>> opensource/master
                    void *event_info EINA_UNUSED)
  {
     Eina_Bool loop_h, loop_v;
     elm_scroller_loop_set(scroller, !loop_h, loop_v);
  }
  
++<<<<<<< HEAD
 +void
 +my_bt_loop_y_axis(void *data, Evas_Object *obj EINA_UNUSED,
++=======
+ static void
+ _my_bt_loop_y_axis(void *data, Evas_Object *obj EINA_UNUSED,
++>>>>>>> opensource/master
                    void *event_info EINA_UNUSED)
  {
     Eina_Bool loop_h, loop_v;
     elm_scroller_loop_set(scroller, loop_h, !loop_v);
  }
  
++<<<<<<< HEAD
 +void
 +page_change_cb(void *data EINA_UNUSED,
++=======
+ static void
+ _my_bt_wheel_disable_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                   void *event_info EINA_UNUSED)
+ {
+    Evas_Object *scroller = (Evas_Object *)data;
+    elm_scroller_wheel_disabled_set(scroller, elm_check_state_get(obj));
+ }
+ static void
+ _page_change_cb(void *data EINA_UNUSED,
++>>>>>>> opensource/master
                 Evas_Object *obj,
                 void *event_info EINA_UNUSED)
  {
@@@ -174,7 -201,7 +216,11 @@@ voi
  test_scroller(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
  {
     Evas_Object *win, *bg2, *tb, *tb2, *sc, *bt, *ck1, *ck2, *bx, *bx2, *fr,
++<<<<<<< HEAD
 +       *ck3, *ck4, *ck5, *ck6, *ck7;
++=======
+        *ck3, *ck4, *ck5, *ck6, *ck7, *ck8;
++>>>>>>> opensource/master
     int i, j, n;
     char buf[PATH_MAX];
     Evas_Coord x = 0, y = 0, w = 0, h = 0;
     elm_box_pack_end(bx2, ck7);
     evas_object_show(ck7);
  
++<<<<<<< HEAD
++=======
+    ck8 = elm_check_add(win);
+    elm_object_text_set(ck8, "Wheel Disable");
+    elm_box_pack_end(bx2, ck8);
+    evas_object_show(ck8);
++>>>>>>> opensource/master
     sc = elm_scroller_add(win);
     evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
     evas_object_show(sc);
  
     evas_object_smart_callback_add
-        (sc, "scroll,page,changed", page_change_cb, sc);
+        (sc, "scroll,page,changed", _page_change_cb, sc);
  
-    evas_object_smart_callback_add(ck1, "changed", my_bt_freeze_toggle, tb);
-    evas_object_smart_callback_add(ck2, "changed", my_bt_hold_toggle, tb);
-    evas_object_smart_callback_add(ck3, "changed", my_bt_block_movements_x_axis,
+    evas_object_smart_callback_add(ck1, "changed", _my_bt_freeze_toggle, tb);
+    evas_object_smart_callback_add(ck2, "changed", _my_bt_hold_toggle, tb);
+    evas_object_smart_callback_add(ck3, "changed", _my_bt_block_movements_x_axis,
                                    sc);
-    evas_object_smart_callback_add(ck4, "changed", my_bt_block_movements_y_axis,
+    evas_object_smart_callback_add(ck4, "changed", _my_bt_block_movements_y_axis,
                                    sc);
++<<<<<<< HEAD
 +   evas_object_smart_callback_add(ck5, "changed", my_bt_snap_to_pages, sc);
 +   evas_object_smart_callback_add(ck6, "changed", my_bt_loop_x_axis, sc);
 +   evas_object_smart_callback_add(ck7, "changed", my_bt_loop_y_axis, sc);
++=======
+    evas_object_smart_callback_add(ck5, "changed", _my_bt_snap_to_pages, sc);
+    evas_object_smart_callback_add(ck6, "changed", _my_bt_loop_x_axis, sc);
+    evas_object_smart_callback_add(ck7, "changed", _my_bt_loop_y_axis, sc);
+    evas_object_smart_callback_add(ck8, "changed", _my_bt_wheel_disable_cb, sc);
++>>>>>>> opensource/master
  
     bt = elm_spinner_add(win);
     elm_spinner_min_max_set(bt, 0, 500);
index 0bc476bbbd16be9fda0fe5d8d5f012624594c6ce,9032e9fbb192410207c6d67566cf64bb0b116ac8..b93ae0c203cc6958c9ba9eafba5a491e3356132d
@@@ -58,7 -58,7 +58,11 @@@ _entry_changed_cb(void *data , Evas_Obj
     api_data *api = data;
     const char *str = elm_entry_entry_get(obj);
     if (!str) return;
++<<<<<<< HEAD
 +   strcpy(api->keyname, str);
++=======
+    strncpy(api->keyname, str, PATH_MAX - 1);
++>>>>>>> opensource/master
     printf("entry: %s\n",str);
  }
  
Simple merge
index 3d2b2986ebece424a1fbb95290a2cdb28e1230fb,1cd7c7616060f76f369c2a0cedc543e1ceead3a3..ae42807a87af7c2cec3d5517eb580fbed4fcfa56
@@@ -201,6 -202,7 +202,10 @@@ EAPI extern Elm_Version *elm_version
  #include <elm_clock.h>
  #include <elm_cnp.h>
  #include <elm_colorselector.h>
++<<<<<<< HEAD
++=======
+ #include <elm_color_class.h>
++>>>>>>> opensource/master
  #include <elm_conform.h>
  #include <elm_container.h>
  #include <elm_cursor.h>
index 7a1b98ab80bdf207e9963be4d3eeeb9d9fc30c28,3b61532725bc6d918f6ff05e17f054ade392f15b..c8aa293d13bba34f3a7b61021a6e4528b2ea96a1
@@@ -634,123 -641,12 +642,126 @@@ BUILT_SOURCES = 
        $(elm_eolian_legacy_h)
  
  elementaryeolianfilesdir = $(datadir)/eolian/include/elementary-@VMAJ@
- elementaryeolianfiles_DATA = $(elm_eolian_files)
+ elementaryeolianfiles_DATA = $(elm_eolian_files) $(elm_eolian_type_files)
  EXTRA_DIST += ${elementaryeolianfiles_DATA}
  
- nodist_includesunstable_HEADERS = $(elm_eolian_h) $(elm_eolian_legacy_h)
+ nodist_includesunstable_HEADERS = $(elm_eolian_h) $(elm_eolian_legacy_h) $(elm_eolian_eot_h)
  CLEANFILES += $(nodist_includesunstable_HEADERS)
  
++<<<<<<< HEAD
 +elementaryeolianfilesdir = $(datadir)/eolian/include/elementary-@VMAJ@
 +elementaryeolianfiles_DATA = \
 +           elm_widget.eo \
 +           elm_container.eo \
 +           elm_layout.eo \
 +           elm_interface_scrollable.eo \
 +           elm_pan.eo \
 +           elm_frame.eo \
 +           elm_hover.eo \
 +           elm_access.eo \
 +           elm_actionslider.eo \
 +           elm_app_client.eo \
 +           elm_app_client_view.eo \
 +           elm_app_server.eo \
 +           elm_app_server_view.eo \
 +           elm_atspi_app_object.eo \
 +           elm_interface_atspi_accessible.eo \
 +           elm_interface_atspi_action.eo \
 +           elm_interface_atspi_component.eo \
 +           elm_interface_atspi_editable_text.eo \
 +           elm_interface_atspi_image.eo \
 +           elm_interface_atspi_selection.eo \
 +           elm_interface_atspi_text.eo \
 +           elm_interface_atspi_value.eo \
 +           elm_interface_atspi_widget_action.eo \
 +           elm_interface_atspi_window.eo \
 +           elm_bg.eo \
 +           elm_box.eo \
 +           elm_bubble.eo \
 +           elm_button.eo \
 +           elm_calendar.eo \
 +           elm_check.eo \
 +           elm_clock.eo \
 +           elm_colorselector.eo \
 +           elm_conformant.eo \
 +           elm_ctxpopup.eo \
 +           elm_datetime.eo \
 +           elm_dayselector.eo \
 +           elm_diskselector.eo \
 +           elm_entry.eo \
 +           elm_fileselector.eo \
 +           elm_fileselector_button.eo \
 +           elm_fileselector_entry.eo \
 +           elm_flipselector.eo \
 +           elm_flip.eo \
 +           elm_gengrid.eo \
 +           elm_gengrid_pan.eo \
 +           elm_genlist.eo \
 +           elm_genlist_pan.eo \
 +           elm_gesture_layer.eo \
 +           elm_glview.eo \
 +           elm_grid.eo \
 +           elm_hoversel.eo \
 +           elm_image.eo \
 +           elm_icon.eo \
 +           elm_index.eo \
 +           elm_interface_fileselector.eo \
 +           elm_inwin.eo \
 +           elm_label.eo \
 +           elm_list.eo \
 +           elm_map_pan.eo \
 +           elm_map.eo \
 +           elm_menu.eo \
 +           elm_multibuttonentry.eo \
 +           elm_naviframe.eo \
 +           elm_panel.eo \
 +           elm_mapbuf.eo \
 +           elm_notify.eo \
 +           elm_panes.eo \
 +           elm_photocam.eo \
 +           elm_photocam_pan.eo \
 +           elm_photo.eo \
 +           elm_player.eo \
 +           elm_plug.eo \
 +           elm_popup.eo \
 +           elm_prefs.eo \
 +           elm_progressbar.eo \
 +           elm_radio.eo \
 +           elm_route.eo \
 +           elm_scroller.eo \
 +           elm_segment_control.eo \
 +           elm_separator.eo \
 +           elm_slider.eo \
 +           elm_slideshow.eo \
 +           elm_spinner.eo \
 +           elm_systray.eo \
 +           elm_table.eo \
 +           elm_thumb.eo \
 +           elm_toolbar.eo \
 +           elm_video.eo \
 +           elm_web.eo \
 +           elm_win.eo \
 +           elm_widget_item.eo \
 +           elm_color_item.eo \
 +           elm_dayselector_item.eo \
 +           elm_hoversel_item.eo \
 +           elm_segment_control_item.eo \
 +           elm_slideshow_item.eo \
 +           elm_flipselector_item.eo \
 +           elm_menu_item.eo \
 +           elm_ctxpopup_item.eo \
 +           elm_index_item.eo \
 +           elm_multibuttonentry_item.eo \
 +           elm_naviframe_item.eo \
 +           elm_genlist_item.eo \
 +           elm_gengrid_item.eo \
 +           elm_list_item.eo \
 +           elm_toolbar_item.eo \
 +           elm_diskselector_item.eo \
 +           elm_popup_item.eo
 +
++=======
++>>>>>>> opensource/master
  EXTRA_DIST += ${elementaryeolianfiles_DATA}
  
  includecxxbindingsdir = $(includedir)/elementary-cxx-@VMAJ@
index a28f8529483f808149a9a6a85fc8e3412a9e1f7b,9e8d0415fd094ac9ba4240973c2a915790e99839..fa3db0675ec07f1d2b9cab4abc790ffbd321fbc6
@@@ -44,6 -44,12 +44,15 @@@ static const Evas_Smart_Cb_Description 
  
  static Eina_Bool _key_action_move(Evas_Object *obj, const char *params);
  static void _parent_geom_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED);
++<<<<<<< HEAD
++=======
+ static Eina_Bool
+ _block_clicked_cb(void *data, Eo *obj EINA_UNUSED,
+                   const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED);
+ static Eina_Bool
+ _timeout_cb(void *data, Eo *obj EINA_UNUSED,
+             const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED);
++>>>>>>> opensource/master
  
  static const Elm_Action key_actions[] = {
     {"move", _key_action_move},
@@@ -356,7 -382,18 +385,21 @@@ _elm_popup_elm_widget_theme_apply(Eo *o
     if (sd->title_icon)
       elm_layout_signal_emit(sd->main_layout, "elm,state,title,icon,visible", "elm");
  
+    _populate_theme_scroll(sd);
+    if (sd->scroll && !sd->theme_scroll)
+      sd->max_sc_w = 240 * elm_config_scale_get() * elm_object_scale_get(obj);
+    else
+      sd->max_sc_w = 0;
+    if (!sd->scroll && sd->theme_scroll)
+      elm_layout_signal_emit(sd->content_area, "elm,scroll,disable", "elm");
+    else if (sd->scroll && sd->theme_scroll)
+      elm_layout_signal_emit(sd->content_area, "elm,scroll,enable", "elm");
     _visuals_set(obj);
++<<<<<<< HEAD
++=======
+    _scroller_size_calc(obj);
++>>>>>>> opensource/master
     elm_layout_sizing_eval(obj);
  
     /* access */
@@@ -419,7 -486,6 +492,10 @@@ _elm_popup_elm_widget_sub_object_del(E
     if (sobj == sd->title_icon)
       {
          elm_layout_signal_emit(sd->main_layout, "elm,state,title,icon,hidden", "elm");
++<<<<<<< HEAD
 +        sd->title_icon = NULL;
++=======
++>>>>>>> opensource/master
       }
     else if ((it =
                 evas_object_data_get(sobj, "_popup_icon_parent_item")) != NULL)
@@@ -875,8 -953,6 +963,11 @@@ _title_text_set(Evas_Object *obj
     if (title_visibility_old != title_visibility_current)
       _visuals_set(obj);
  
++<<<<<<< HEAD
 +   elm_layout_sizing_eval(obj);
 +
++=======
++>>>>>>> opensource/master
     return EINA_TRUE;
  }
  
@@@ -931,8 -1020,6 +1035,11 @@@ _content_text_set(Evas_Object *obj
       }
  
  end:
++<<<<<<< HEAD
 +   elm_layout_sizing_eval(obj);
 +
++=======
++>>>>>>> opensource/master
     return EINA_TRUE;
  }
  
@@@ -1005,8 -1095,6 +1115,11 @@@ _title_icon_set(Evas_Object *obj
       elm_layout_signal_emit(sd->main_layout, "elm,state,title,icon,visible", "elm");
     if (title_visibility_old != title_visibility_current) _visuals_set(obj);
  
++<<<<<<< HEAD
 +   elm_layout_sizing_eval(obj);
 +
++=======
++>>>>>>> opensource/master
     return EINA_TRUE;
  }
  
@@@ -1036,7 -1126,6 +1151,10 @@@ _content_set(Evas_Object *obj
          evas_object_event_callback_add
            (content, EVAS_CALLBACK_DEL, _on_content_del, obj);
       }
++<<<<<<< HEAD
 +   elm_layout_sizing_eval(obj);
++=======
++>>>>>>> opensource/master
  
     return EINA_TRUE;
  }
@@@ -1100,10 -1190,6 +1219,13 @@@ _action_button_set(Evas_Object *obj
     snprintf(buf, sizeof(buf), "elm.swallow.content.button%i", idx + 1);
     elm_object_part_content_set
       (sd->action_area, buf, sd->buttons[idx]->btn);
++<<<<<<< HEAD
 +
 +   if (sd->items) _scroller_size_calc(obj);
 +
 +   elm_layout_sizing_eval(obj);
++=======
++>>>>>>> opensource/master
  }
  
  EOLIAN static Eina_Bool
index 9a21e67e6fa05df756f2bd5cc7a4e1eb8555d88c,edd10fcd38aa1da620aa37e4408b7773ed9c8b72..e4d0fca6d7168bfc4ef2b9c0c8b84bb066577bb1
  #define ELM_ACCESS_OBJECT_REFERENCE_TEMPLATE ELM_ACCESS_OBJECT_PATH_PREFIX "%llu"
  
  #define SIZE(x) sizeof(x)/sizeof(x[0])
+ #define ELM_ATSPI_BRIDGE_CLASS_NAME "__Elm_Atspi_Bridge"
  
++<<<<<<< HEAD
 +typedef struct Key_Event_Info {
 +     Ecore_Event_Key event;
 +     int type;
 +} Key_Event_Info;
 +
 +static int _init_count = 0;
 +static Eldbus_Connection *_a11y_bus = NULL;
 +static Eina_List *reemited_events;
 +static Eo *_root;
 +static Ecore_Idler *_cache_update_idler;
 +static Eina_List *_pending_objects;
 +static Eina_Hash *_cache;
 +static Eldbus_Service_Interface *_cache_interface = NULL;
 +static Eldbus_Signal_Handler *_register_hdl;
 +static Eldbus_Signal_Handler *_unregister_hdl;
 +static unsigned long _object_broadcast_mask;
 +static unsigned long _object_property_broadcast_mask;
 +static unsigned long _object_children_broadcast_mask;
 +static unsigned long long _object_state_broadcast_mask;
 +static unsigned long long _window_signal_broadcast_mask;
 +static Ecore_Event_Filter *_key_flr;
++=======
+ #define ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(obj, sd) \
+    Elm_Atspi_Bridge_Data *sd = eo_data_scope_get(obj, ELM_ATSPI_BRIDGE_CLASS); \
+    if (!sd) return;
+ #define ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(obj, sd, val) \
+    Elm_Atspi_Bridge_Data *sd = eo_data_scope_get(obj, ELM_ATSPI_BRIDGE_CLASS); \
+    if (!sd) return val;
+ #define ELM_ATSPI_PROPERTY_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, class, msg, error) \
+    if (!(obj) || !eo_isa(obj, class)) \
+      { \
+         *(error) = _dbus_invalid_ref_error_new(msg); \
+         return EINA_FALSE; \
+      }
+ #define ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, class, msg) \
+    if (!(obj) || !eo_isa(obj, class)) \
+      return _dbus_invalid_ref_error_new(msg);
+ typedef struct Key_Event_Info {
+      Ecore_Event_Key event;
+      int type;
+      Eo *bridge;
+ } Key_Event_Info;
+ typedef struct _Elm_Atspi_Bridge_Data
+ {
+    Eldbus_Connection *session_bus;
+    Eldbus_Connection *a11y_bus;
+    Eina_List *reemited_events;
+    Eo *root;
+    Eina_Hash *cache;
+    Eldbus_Service_Interface *cache_interface;
+    Eldbus_Signal_Handler *register_hdl;
+    Eldbus_Signal_Handler *unregister_hdl;
+    unsigned long object_broadcast_mask;
+    unsigned long object_property_broadcast_mask;
+    unsigned long object_children_broadcast_mask;
+    unsigned long long object_state_broadcast_mask;
+    unsigned long long window_signal_broadcast_mask;
+    Ecore_Event_Filter *key_flr;
+    Eldbus_Object *bus_obj;
+    Eina_List *pending_requests;
+    int id;
+    Eina_Hash *state_hash;
+    struct {
+         Eldbus_Service_Interface *accessible;
+         Eldbus_Service_Interface *application;
+         Eldbus_Service_Interface *action;
+         Eldbus_Service_Interface *component;
+         Eldbus_Service_Interface *collection;
+         Eldbus_Service_Interface *editable_text;
+         Eldbus_Service_Interface *image;
+         Eldbus_Service_Interface *selection;
+         Eldbus_Service_Interface *text;
+         Eldbus_Service_Interface *value;
+    } interfaces;
+    Elm_Atspi_Event_Handler *event_hdlr;
+    Eina_Hash *event_hash;
+    Eina_Bool connected : 1;
+ } Elm_Atspi_Bridge_Data;
+ struct collection_match_rule {
+      Elm_Atspi_State_Set states;
+      AtspiCollectionMatchType statematchtype;
+      Eina_List *attributes;
+      AtspiCollectionMatchType attributematchtype;
+      uint64_t roles[2];
+      AtspiCollectionMatchType rolematchtype;
+      Eina_List *ifaces;
+      AtspiCollectionMatchType interfacematchtype;
+      Eina_Bool reverse : 1;
+ };
+ static Eo *_instance;
+ static int _init_count = 0;
++>>>>>>> opensource/master
  
+ // Object Event handlers
  static Eina_Bool _state_changed_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info);
  static Eina_Bool _property_changed_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info);
  static Eina_Bool _children_changed_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info);
@@@ -66,35 -127,43 +151,47 @@@ static Eina_Bool _text_text_inserted_se
  static Eina_Bool _text_text_removed_send(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info);
  static Eina_Bool _text_caret_moved_send(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info);
  static Eina_Bool _text_selection_changed_send(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info EINA_UNUSED);
- static Eo * _access_object_from_path(const char *path);
- static char * _path_from_access_object(const Eo *eo);
- static void _iter_object_reference_append(Eldbus_Message_Iter *iter, const Eo *obj);
- static void _object_append_desktop_reference(Eldbus_Message_Iter *iter);
- static void _cache_build(void *obj);
- static void _object_register(Eo *obj, char *path);
+ // bridge private methods
+ static void _bridge_object_register(Eo *bridge, Eo *obj);
+ static void _bridge_object_unregister(Eo *bridge, Eo *obj);
+ static const char * _bridge_path_from_object(Eo *bridge, const Eo *eo);
+ static void _bridge_signal_send(Eo *bridge, Eo *obj, const char *ifc, const Eldbus_Signal *signal, const char *minor, unsigned int det1, unsigned int det2, const char *variant_sig, ...);
+ static Eo * _bridge_object_from_path(Eo *bridge, const char *path);
+ static void _bridge_iter_object_reference_append(Eo *bridge, Eldbus_Message_Iter *iter, const Eo *obj);
+ // utility functions
  static void _iter_interfaces_append(Eldbus_Message_Iter *iter, const Eo *obj);
  static Eina_Bool _elm_atspi_bridge_key_filter(void *data, void *loop, int type, void *event);
- EO_CALLBACKS_ARRAY_DEFINE(_events_cb,
-    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_PROPERTY_CHANGED, _property_changed_signal_send},
++<<<<<<< HEAD
 +static void _object_signal_send(Eldbus_Service_Interface *infc, int sig_id, const char *minor, unsigned int det1, unsigned int det2, const char *variant_sig, ...);
++=======
+ static void _object_desktop_reference_append(Eldbus_Message_Iter *iter);
+ static Eina_Bool _on_object_add(void *data, Eo *obj, const Eo_Event_Description *event EINA_UNUSED, void *event_info EINA_UNUSED);
+ static Eina_Bool _on_object_del(void *data, Eo *obj, const Eo_Event_Description *event EINA_UNUSED, void *event_info EINA_UNUSED);
++>>>>>>> opensource/master
+ typedef struct {
+      const Eo_Event_Description *desc;
+      const Eo_Event_Cb callback;
+ } Elm_Atspi_Bridge_Event_Handler;
+ static const Elm_Atspi_Bridge_Event_Handler event_handlers[] = {
     { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_signal_send},
+    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_PROPERTY_CHANGED, _property_changed_signal_send},
     { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_STATE_CHANGED, _state_changed_signal_send},
-    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_VISIBLE_DATA_CHANGED, NULL },
-    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_ACTIVE_DESCENDANTS_CHANGED, NULL }
- );
- EO_CALLBACKS_ARRAY_DEFINE(_window_cb,
+    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_VISIBLE_DATA_CHANGED, _visible_data_changed_signal_send},
+    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_ACTIVE_DESCENDANT_CHANGED, _active_descendant_changed_signal_send},
+    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_ADDED, _on_object_add},
+    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_REMOVED, _on_object_del},
     { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED, _window_signal_send},
+    { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DESTROYED, _window_signal_send},
     { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_ACTIVATED, _window_signal_send},
-    { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED, _window_signal_send}
- );
- EO_CALLBACKS_ARRAY_DEFINE(_selection_cb,
-    { ELM_INTERFACE_ATSPI_SELECTION_EVENT_SELECTION_CHANGED, _selection_signal_send}
- );
- EO_CALLBACKS_ARRAY_DEFINE(_text_cb,
+    { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED, _window_signal_send},
+    { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MAXIMIZED, _window_signal_send},
+    { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MINIMIZED, _window_signal_send},
+    { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_RESTORED, _window_signal_send},
+    { ELM_INTERFACE_ATSPI_SELECTION_EVENT_SELECTION_CHANGED, _selection_signal_send},
     { ELM_INTERFACE_ATSPI_TEXT_EVENT_ACCESS_TEXT_CARET_MOVED, _text_caret_moved_send },
     { ELM_INTERFACE_ATSPI_TEXT_EVENT_ACCESS_TEXT_INSERTED, _text_text_inserted_send },
     { ELM_INTERFACE_ATSPI_TEXT_EVENT_ACCESS_TEXT_REMOVED, _text_text_removed_send },
@@@ -2096,58 -2419,768 +2447,777 @@@ _collection_roles_convert(uint64_t role
  }
  
  static Eina_Bool
- _append_item_fn(const Eina_Hash *hash EINA_UNUSED, const void *key EINA_UNUSED, void *data, void *fdata)
+ _collection_iter_match_rule_get(Eldbus_Message_Iter *iter, struct collection_match_rule *rule)
  {
-   if (!eo_ref_get(data) || eo_destructed_is(data))
-     return EINA_TRUE;
+    Eldbus_Message_Iter *states_iter, *attrib_iter, *iter_arg, *role_iter, *ifc_iter;
+    unsigned int *array;
+    int array_count, state_match, attrib_match, role_match, ifc_match, reverse;
+    const char *ifc_name;
  
-   Eldbus_Message_Iter *iter_struct, *iter_sub_array;
-   Eldbus_Message_Iter *iter_array = fdata;
-   Elm_Atspi_State_Set states;
-   Elm_Atspi_Role role;
+    if (!eldbus_message_iter_arguments_get(iter, "aiia{ss}iaiiasib", &states_iter, &state_match, &attrib_iter, &attrib_match, &role_iter, &role_match, &ifc_iter, &ifc_match, &reverse))
+      {
+         ERR("Unable to get message arguments");
+         return EINA_FALSE;
+      }
  
-   eo_do(data, role = elm_interface_atspi_accessible_role_get());
+    memset(rule, 0x0, sizeof(struct collection_match_rule));
+    rule->statematchtype = state_match;
+    rule->attributematchtype = attrib_match;
+    rule->rolematchtype = role_match;
+    rule->interfacematchtype = ifc_match;
+    rule->reverse = reverse;
  
-   iter_struct = eldbus_message_iter_container_new(iter_array, 'r', NULL);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(iter_struct, EINA_TRUE);
+    if (!eldbus_message_iter_fixed_array_get(states_iter, 'i', &array, &array_count))
+      return EINA_FALSE;
  
-   /* Marshall object path */
-   _iter_object_reference_append(iter_struct, data);
+    //Roles according to libatspi impementation are transferred in 2-int element fixed bit array
+    if (array_count != 2)
+      {
+         ERR("Unexpected states array size");
+         return EINA_FALSE;
+      }
+    uint64_t states = ((uint64_t)array[0] | ((uint64_t)array[1] << 32));
+    rule->states = _atspi_state_set_to_elm_atspi_state_set(states);
  
-   /* Marshall application */
-   _iter_object_reference_append(iter_struct, _root);
+    //Roles according to libatspi impementation are transferred in 4-int element fixed bit array
+    if (!eldbus_message_iter_fixed_array_get(role_iter, 'i', &array, &array_count))
+      return EINA_FALSE;
  
-   Eo *parent = NULL;
-   eo_do(data, parent = elm_interface_atspi_accessible_parent_get());
-   /* Marshall parent */
-   if ((!parent) && (ELM_ATSPI_ROLE_APPLICATION == role))
-     _object_append_desktop_reference(iter_struct);
-   else
-     _iter_object_reference_append(iter_struct, parent);
+    if (array_count != 4)
+      {
+         ERR("Unexpected roles array size");
+         return EINA_FALSE;
+      }
  
-   /* Marshall children  */
-   Eina_List *children_list = NULL, *l;
-   Eo *child;
+    //convert atspi roles to elm_roles
+    rule->roles[0] = ((uint64_t)array[0] | ((uint64_t)array[1] << 32));
+    rule->roles[1] = ((uint64_t)array[2] | ((uint64_t)array[3] << 32));
  
-   eo_do(data, children_list = elm_interface_atspi_accessible_children_get());
-   iter_sub_array = eldbus_message_iter_container_new(iter_struct, 'a', "(so)");
-   EINA_SAFETY_ON_NULL_GOTO(iter_sub_array, fail);
+    _collection_roles_convert(rule->roles);
  
-   EINA_LIST_FOREACH(children_list, l, child)
-      _iter_object_reference_append(iter_sub_array, child);
+    //Get matching properties
+    while (eldbus_message_iter_get_and_next(attrib_iter, '{', &iter_arg))
+      {
+         const char *key, *value;
+         if (eldbus_message_iter_arguments_get(iter_arg, "ss", &key, &value))
+           {
+              Elm_Atspi_Attribute *attrib = calloc(sizeof(Elm_Atspi_Attribute), 1);
+              attrib->key = eina_stringshare_add(key);
+              attrib->value = eina_stringshare_add(value);
+              rule->attributes = eina_list_append(rule->attributes, attrib);
+           }
+      }
  
-   eldbus_message_iter_container_close(iter_struct, iter_sub_array);
-   eina_list_free(children_list);
+    //Get interfaces to match
+    while (eldbus_message_iter_get_and_next(ifc_iter, 's', &ifc_name))
+      {
+         const Eo_Class *class = NULL;
+         if (!strcmp(ifc_name, "action"))
+           class = ELM_INTERFACE_ATSPI_ACTION_MIXIN;
+         else if (!strcmp(ifc_name, "component"))
+           class = ELM_INTERFACE_ATSPI_COMPONENT_MIXIN;
+         else if (!strcmp(ifc_name, "editabletext"))
+           class = ELM_INTERFACE_ATSPI_EDITABLE_TEXT_INTERFACE;
+         else if (!strcmp(ifc_name, "text"))
+           class = ELM_INTERFACE_ATSPI_TEXT_INTERFACE;
+         else if (!strcmp(ifc_name, "image"))
+           class = ELM_INTERFACE_ATSPI_SELECTION_INTERFACE;
+         else if (!strcmp(ifc_name, "value"))
+           class = ELM_INTERFACE_ATSPI_VALUE_INTERFACE;
+         if (class)
+           rule->ifaces = eina_list_append(rule->ifaces, class);
+         else
+           {
+              _collection_match_rule_free(rule);
+              return EINA_FALSE;
+           }
+      }
  
-   /* Marshall interfaces */
-   _iter_interfaces_append(iter_struct, data);
+    return EINA_TRUE;
+ }
  
-   /* Marshall name */
-   char *name = NULL;
-   eo_do(data, name = elm_interface_atspi_accessible_name_get());
-   if (!name)
-     name = strdup("");
+ static Eina_Bool
+ _collection_match_interfaces_helper(Eo *obj, Eina_List *ifcs, Eina_Bool condition, Eina_Bool ret_if_true, Eina_Bool ret_if_false)
+ {
+    Eo_Class *class;
+    Eina_List *l;
+    EINA_LIST_FOREACH(ifcs, l, class)
+      {
+         if (eo_isa(obj, class) == condition)
+           return ret_if_true;
+      }
+    return ret_if_false;
+ }
+ static Eina_Bool
+ _collection_match_interfaces_lookup(Eo *obj, struct collection_match_rule *rule)
+ {
+    Eina_Bool ret = EINA_FALSE;
+    switch (rule->interfacematchtype)
+      {
+         case ATSPI_Collection_MATCH_INVALID:
+            ret = EINA_TRUE;
+            break;
+         case ATSPI_Collection_MATCH_ALL:
+            ret = _collection_match_interfaces_helper(
+               obj, rule->ifaces, EINA_FALSE, EINA_FALSE, EINA_TRUE);
+            break;
+         case ATSPI_Collection_MATCH_ANY:
+            ret = _collection_match_interfaces_helper(
+               obj, rule->ifaces, EINA_TRUE, EINA_TRUE, EINA_FALSE);
+            break;
+         case ATSPI_Collection_MATCH_NONE:
+            ret = _collection_match_interfaces_helper(
+               obj, rule->ifaces, EINA_TRUE, EINA_FALSE, EINA_TRUE);
+            break;
+         default:
+            break;
+      }
+    return ret;
+ }
+ static Eina_Bool
+ _collection_match_states_lookup(Eo *obj, struct collection_match_rule *rule)
+ {
+    Eina_Bool ret = EINA_FALSE;
+    Elm_Atspi_State_Set ss;
+    eo_do(obj, ss = elm_interface_atspi_accessible_state_set_get());
+    switch (rule->statematchtype)
+      {
+         case ATSPI_Collection_MATCH_INVALID:
+            ret = EINA_TRUE;
+            break;
+         case ATSPI_Collection_MATCH_ALL:
+            ret = (ss & rule->states) == rule->states;
+            break;
+         case ATSPI_Collection_MATCH_ANY:
+            ret = (ss & rule->states) > 0;
+            break;
+         case ATSPI_Collection_MATCH_NONE:
+            ret = (ss & rule->states) == 0;
+            break;
+         default:
+            break;
+      }
+    return ret;
+ }
+ static Eina_Bool
+ _collection_match_roles_lookup(Eo *obj, struct collection_match_rule *rule)
+ {
+    Eina_Bool ret = EINA_FALSE;
+    Elm_Atspi_Role role;
+    int64_t role_set;
+    eo_do(obj, role = elm_interface_atspi_accessible_role_get());
+    if (role >= 64)
+      {
+         role -= 64;
+         role_set = rule->roles[1];
+      }
+    else
+      role_set = rule->roles[0];
+    if (role >= 64)
+      {
+         ERR("Elm_Atspi_Role enum value exceeds 127. Unable to compare with roles bit field.");
+         return EINA_FALSE;
+      }
+    switch (rule->rolematchtype)
+      {
+         case ATSPI_Collection_MATCH_INVALID:
+            ret = EINA_TRUE;
+            break;
+         case ATSPI_Collection_MATCH_ALL:
+         case ATSPI_Collection_MATCH_ANY:
+            ret = (role_set & (1ULL << role)) > 0;
+            break;
+         case ATSPI_Collection_MATCH_NONE:
+            ret = (role_set & (1ULL << role)) == 0;
+            break;
+         default:
+            break;
+      }
+    return ret;
+ }
+ static Eina_Bool
+ _collection_match_attributes_helper(Eina_List *obj_attribs, Eina_List *attribs, Eina_Bool compare, Eina_Bool ret_if_compare, Eina_Bool ret_default)
+ {
+    Eina_List *l, *l2;
+    Elm_Atspi_Attribute *attr, *attr2;
+    EINA_LIST_FOREACH(attribs, l, attr)
+      {
+         EINA_LIST_FOREACH(obj_attribs, l2, attr2)
+           {
+              if ((attr->key && attr2->key &&
+                   attr->value && attr2->value &&
+                   !strcmp(attr->key, attr2->key) &&
+                   !strcmp(attr->value, attr2->value)) == compare)
+                {
+                   return ret_if_compare;
+                }
+           }
+      }
+    return ret_default;
+ }
+ static Eina_Bool
+ _collection_match_attributes_lookup(Eo *obj, struct collection_match_rule *rule)
+ {
+    Eina_Bool ret = EINA_FALSE;
+    Eina_List *obj_attribs;
+    eo_do(obj, obj_attribs = elm_interface_atspi_accessible_attributes_get());
+    switch (rule->attributematchtype)
+      {
+         case ATSPI_Collection_MATCH_INVALID:
+            ret = EINA_TRUE;
+            break;
+         case ATSPI_Collection_MATCH_ALL:
+            ret = _collection_match_attributes_helper(
+               obj_attribs, rule->attributes, EINA_FALSE, EINA_FALSE, EINA_TRUE);
+            break;
+         case ATSPI_Collection_MATCH_ANY:
+            ret = _collection_match_attributes_helper(
+               obj_attribs, rule->attributes, EINA_TRUE, EINA_TRUE, EINA_FALSE);
+            break;
+         case ATSPI_Collection_MATCH_NONE:
+            ret = _collection_match_attributes_helper(
+               obj_attribs, rule->attributes, EINA_TRUE, EINA_FALSE, EINA_TRUE);
+            break;
+         default:
+            break;
+      }
+    elm_atspi_attributes_list_free(obj_attribs);
+    return ret;
+ }
+ static int
+ _collection_sort_order_canonical(struct collection_match_rule *rule, Eina_List **ls,
+                       int count, int max,
+                       Eo *obj, long index, Eina_Bool flag,
+                       Eo *pobj, Eina_Bool recurse, Eina_Bool traverse)
+ {
+    int i = index;
+    Eina_List *children;
+    eo_do(obj, children = elm_interface_atspi_accessible_children_get());
+    long acount = eina_list_count(children);
+    Eina_Bool prev = pobj ? EINA_TRUE : EINA_FALSE;
+    for (; i < acount && (max == 0 || count < max); i++)
+      {
+         Eo *child = eina_list_nth(children, i);
+         if (prev && child == pobj)
+           {
+              eina_list_free(children);
+              return count;
+           }
+         if (flag && _collection_match_interfaces_lookup(child, rule)
+             && _collection_match_states_lookup(child, rule)
+             && _collection_match_roles_lookup(child, rule)
+             && _collection_match_attributes_lookup(child, rule))
+           {
+              *ls = eina_list_append(*ls, child);
+              count++;
+           }
+        if (!flag)
+          flag = EINA_TRUE;
+        if (recurse && traverse)
+          count = _collection_sort_order_canonical(rule, ls, count,
+                                                   max, child, 0, EINA_TRUE,
+                                                   pobj, recurse, traverse);
+      }
+    eina_list_free(children);
+    return count;
+ }
+ static int
+ _collection_sort_order_reverse_canonical(struct collection_match_rule *rule, Eina_List **ls,
+                       int count, int max, Eo *obj, Eina_Bool flag, Eo *pobj)
+ {
+   Eo *nextobj, *parent;
+   long indexinparent;
+   Eina_List *children;
+   /* This breaks us out of the recursion. */
+   if (!obj || obj == pobj)
+     {
+       return count;
+     }
+   /* Add to the list if it matches */
+   if (flag && _collection_match_interfaces_lookup(obj, rule)
+       && _collection_match_states_lookup(obj, rule)
+       && _collection_match_roles_lookup(obj, rule)
+       && _collection_match_attributes_lookup(obj, rule)
+       && (max == 0 || count < max))
+     {
+        *ls = eina_list_append(*ls, obj);
+        count++;
+     }
+   if (!flag)
+     flag = EINA_TRUE;
+   /* Get the current nodes index in it's parent and the parent object. */
+   eo_do(obj,
+         indexinparent = elm_interface_atspi_accessible_index_in_parent_get(),
+         parent = elm_interface_atspi_accessible_parent_get());
+   if ((indexinparent > 0) && ((max == 0) || (count < max)))
+     {
+        /* there are still some siblings to visit so get the previous sibling
+           and get it's last descendant.
+           First, get the previous sibling */
+        eo_do(parent, children = elm_interface_atspi_accessible_children_get());
+        nextobj = eina_list_nth(children, indexinparent - 1);
+        eina_list_free(children);
+        /* Now, drill down the right side to the last descendant */
+        do {
+             eo_do(nextobj, children = elm_interface_atspi_accessible_children_get());
+             if (children) nextobj = eina_list_last_data_get(children);
+             eina_list_free(children);
+        } while (children);
+        /* recurse with the last descendant */
+        count = _collection_sort_order_reverse_canonical(rule, ls, count, max,
+                                        nextobj, EINA_TRUE, pobj);
+     }
+   else if (max == 0 || count < max)
+     {
+       /* no more siblings so next node must be the parent */
+       count = _collection_sort_order_reverse_canonical(rule, ls, count, max,
+                                         parent, EINA_TRUE, pobj);
+     }
+   return count;
+ }
+ static int
+ _collection_inbackorder(Eo *collection, struct collection_match_rule *rule, Eina_List **list,
+                         int max, Eo *obj)
+ {
+    *list = eina_list_append(*list, obj);
+    _collection_sort_order_reverse_canonical(rule, list, 0, max, obj, EINA_TRUE, collection);
+    *list = eina_list_remove_list(*list, *list);
+    return 0;
+ }
+ static int
+ _collection_inorder(Eo *collection, struct collection_match_rule *rule, Eina_List **list,
+                     int count, int max, Eo *obj, Eina_Bool traverse)
+ {
+    int idx = 0;
+    count = _collection_sort_order_canonical(rule, list, count, max, obj, 0, EINA_TRUE, NULL, EINA_TRUE, traverse);
+   while ((max == 0 || count < max) && obj && obj != collection)
+     {
+        Eo *parent;
+        eo_do(obj,
+              parent = elm_interface_atspi_accessible_parent_get(),
+              idx = elm_interface_atspi_accessible_index_in_parent_get());
+        count = _collection_sort_order_canonical(rule, list, count, max, parent,
+                                      idx + 1, EINA_TRUE, NULL, EINA_TRUE, traverse);
+        obj = parent;
+     }
+   if (max == 0 || count < max)
+     count = _collection_sort_order_canonical(rule, list, count, max,
+                                     obj, idx + 1, EINA_TRUE, NULL, EINA_TRUE, traverse);
+   return count;
+ }
+ static int
+ _collection_query(struct collection_match_rule *rule, AtspiCollectionSortOrder sortby,
+                          Eina_List **list, int count, int max, Eo *obj, long index,
+                          Eina_Bool flag, Eo *pobj, Eina_Bool recurse, Eina_Bool traverse)
+ {
+    switch (sortby)
+      {
+         case ATSPI_Collection_SORT_ORDER_CANONICAL:
+            count = _collection_sort_order_canonical(rule, list, 0, max, obj, index, flag,
+                                                     pobj, recurse, traverse);
+            break;
+         case ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL:
+            count = _collection_sort_order_canonical(rule, list, 0, max, obj, index, flag,
+                                                     pobj, recurse, traverse);
+            *list = eina_list_reverse(*list);
+            break;
+         default:
+           count = 0;
+           WRN("Unhandled sort method");
+           break;
+      }
+    return count;
+ }
+ static Eldbus_Message*
+ _collection_return_msg_from_list(Elm_Atspi_Bridge *bridge, const Eldbus_Message *msg, const Eina_List *objs)
+ {
+    Eldbus_Message *ret;
+    const Eina_List *l;
+    Eldbus_Message_Iter *iter, *array_iter;
+    Eo *obj;
+    ret = eldbus_message_method_return_new(msg);
+    if (!ret) return NULL;
+    iter = eldbus_message_iter_get(ret);
+    array_iter = eldbus_message_iter_container_new(iter, 'a', "(so)");
+    EINA_LIST_FOREACH(objs, l, obj)
+      {
+         _bridge_object_register(bridge, obj);
+         _bridge_iter_object_reference_append(bridge, array_iter, obj);
+      }
+    eldbus_message_iter_container_close(iter, array_iter);
+    return ret;
+ }
+ static Eina_List*
+ _collection_get_matches_from_handle(Eo *collection, Eo *current, struct collection_match_rule *rule, AtspiCollectionSortOrder sortby, AtspiCollectionTreeTraversalType tree, int max, Eina_Bool traverse)
+ {
+    Eina_List *result = NULL;
+    Eo *parent;
+    int idx;
+    switch (tree)
+      {
+       case ATSPI_Collection_TREE_INORDER:
+            _collection_inorder(collection, rule, &result, 0, max, current, traverse);
+          if (sortby == ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL)
+            result = eina_list_reverse(result);
+          break;
+       case ATSPI_Collection_TREE_RESTRICT_CHILDREN:
+          eo_do(current,
+                idx = elm_interface_atspi_accessible_index_in_parent_get(),
+                parent = elm_interface_atspi_accessible_parent_get());
+          _collection_query(rule, sortby, &result, 0, max, parent, idx, EINA_FALSE, NULL, EINA_TRUE, traverse);
+          break;
+       case ATSPI_Collection_TREE_RESTRICT_SIBLING:
+          _collection_query(rule, sortby, &result, 0, max, current, 0, EINA_FALSE, NULL, EINA_TRUE, traverse);
+          break;
+       default:
+          ERR("Tree parameter value not handled");
+          break;
+      }
+    return result;
+ }
+ static Eldbus_Message*
+ _collection_get_matches_from(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg EINA_UNUSED)
+ {
+    const char *obj_path = eldbus_message_path_get(msg);
+    Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
+    Eo *current, *obj = _bridge_object_from_path(bridge, obj_path);
+    Eldbus_Message *ret;
+    Eldbus_Message_Iter *iter, *rule_iter;
+    struct collection_match_rule rule;
+    int count;
+    AtspiCollectionTreeTraversalType tree;
+    Eina_Bool traverse;
+    AtspiCollectionSortOrder sortby;
+    Eina_List *result = NULL;
+    ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, msg);
+    iter = eldbus_message_iter_get(msg);
+    EINA_SAFETY_ON_NULL_RETURN_VAL(iter, NULL);
+    if (!eldbus_message_iter_arguments_get(iter, "o(aiia{ss}iaiiasib)uuib", &obj_path, &rule_iter, &sortby, &tree, &count, &traverse))
+      {
+         return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.Failed", "Unable to get matchule, sortby, count or traverse values.");
+      }
+    current = _bridge_object_from_path(bridge, obj_path);
+    ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(current, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, msg);
+    if (!_collection_iter_match_rule_get(rule_iter, &rule))
+      return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.Failed", "Invalid match rule parameters.");
  
+    result = _collection_get_matches_from_handle(obj, current, &rule, sortby, tree, count, traverse);
+    ret = _collection_return_msg_from_list(bridge, msg, result);
+    eina_list_free(result);
+    _collection_match_rule_free(&rule);
+    return ret;
+ }
+ static Eina_List*
+ _collection_get_matches_to_handle(Eo *obj, Eo *current, struct collection_match_rule *rule, AtspiCollectionSortOrder sortby, AtspiCollectionTreeTraversalType tree, Eina_Bool limit, int max, Eina_Bool traverse)
+ {
+    Eina_List *result = NULL;
+    Eo *collection = obj;
+    if (limit)
+      eo_do(obj, collection = elm_interface_atspi_accessible_parent_get());
+    switch (tree)
+      {
+       case ATSPI_Collection_TREE_INORDER:
+          _collection_inbackorder(obj, rule, &result, max, current);
+          if (sortby == ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL)
+            result = eina_list_reverse(result);
+          break;
+       case ATSPI_Collection_TREE_RESTRICT_CHILDREN:
+          _collection_query(rule, sortby, &result, 0, max, collection, 0, EINA_FALSE, current, EINA_TRUE, traverse);
+          break;
+       case ATSPI_Collection_TREE_RESTRICT_SIBLING:
+          _collection_query(rule, sortby, &result, 0, max, collection, 0, EINA_FALSE, current, EINA_TRUE, traverse);
+          break;
+       default:
+          ERR("Tree parameter value not handled");
+          break;
+      }
+    return result;
+ }
+ static Eldbus_Message*
+ _collection_get_matches_to(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg EINA_UNUSED)
+ {
+    const char *obj_path = eldbus_message_path_get(msg);
+    Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
+    Eo *current, *obj = _bridge_object_from_path(bridge, obj_path);
+    Eldbus_Message *ret;
+    Eldbus_Message_Iter *iter, *rule_iter;
+    struct collection_match_rule rule;
+    int count;
+    AtspiCollectionTreeTraversalType tree;
+    Eina_Bool traverse;
+    AtspiCollectionSortOrder sortby;
+    Eina_List *result = NULL;
+    Eina_Bool limit;
+    ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, msg);
+    iter = eldbus_message_iter_get(msg);
+    EINA_SAFETY_ON_NULL_RETURN_VAL(iter, NULL);
+    if (!eldbus_message_iter_arguments_get(iter, "o(aiia{ss}iaiiasib)uubib", &obj_path, &rule_iter, &sortby, &tree, &limit, &count, &traverse))
+      {
+         return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.Failed", "Unable to get matchule, sortby, tree, limit count or traverse values.");
+      }
+    current = _bridge_object_from_path(bridge, obj_path);
+    ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(current, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, msg);
+    if (!_collection_iter_match_rule_get(rule_iter, &rule))
+      return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.Failed", "Invalid match rule parameters.");
+    result = _collection_get_matches_to_handle(obj, current, &rule, sortby, tree, limit, count, traverse);
+    ret = _collection_return_msg_from_list(bridge, msg, result);
+    eina_list_free(result);
+    _collection_match_rule_free(&rule);
+    return ret;
+ }
+ static Eldbus_Message*
+ _collection_get_matches(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg)
+ {
+    const char *obj_path = eldbus_message_path_get(msg);
+    Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
+    Eo *obj = _bridge_object_from_path(bridge, obj_path);
+    Eldbus_Message *ret;
+    Eldbus_Message_Iter *iter, *rule_iter;
+    struct collection_match_rule rule;
+    int count;
+    Eina_Bool traverse;
+    AtspiCollectionSortOrder sortby;
+    Eina_List *result = NULL;
+    ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, msg);
+    iter = eldbus_message_iter_get(msg);
+    EINA_SAFETY_ON_NULL_RETURN_VAL(iter, NULL);
+    if (!eldbus_message_iter_arguments_get(iter, "(aiia{ss}iaiiasib)uib", &rule_iter, &sortby, &count, &traverse))
+      {
+         return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.Failed", "Unable to get matchule, sortby, count or traverse values.");
+      }
+    if (!_collection_iter_match_rule_get(rule_iter, &rule))
+      return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.Failed", "Invalid match rule parameters.");
+    _collection_query(&rule, sortby, &result, 0, count, obj, 0, EINA_TRUE, NULL, EINA_TRUE, traverse);
+    ret = _collection_return_msg_from_list(bridge, msg, result);
+    eina_list_free(result);
+    _collection_match_rule_free(&rule);
+    return ret;
+ }
+ static const Eldbus_Method collection_methods[] = {
+    { "GetMatchesFrom",
+       ELDBUS_ARGS({"o", "current_object"}, {"(aiia{ss}iaiiasib)", "match_rule"},
+                   {"u", "sortby"}, {"u", "tree"}, {"i", "count"}, {"b", "traverse"}),
+       ELDBUS_ARGS({"a(so)", "objects"}), _collection_get_matches_from, 0 },
+    { "GetMatchesTo",
+       ELDBUS_ARGS({"o", "current_object"}, {"(aiia{ss}iaiiasib)", "match_rule"},
+                   {"u", "sortby"}, {"u", "tree"}, {"b", "limit_scope"},
+                   {"i", "count"}, {"b", "traverse"}),
+       ELDBUS_ARGS({"a(so)", "objects"}), _collection_get_matches_to, 0 },
+    { "GetMatches",
+       ELDBUS_ARGS({"(aiia{ss}iaiiasib)", "match_rule"},
+                   {"u", "sortby"}, {"i", "count"}, {"b", "traverse"}),
+       ELDBUS_ARGS({"a(so)", "objects"}), _collection_get_matches, 0 },
+    { NULL, NULL, NULL, NULL, 0 }
+ };
+ static const Eldbus_Service_Interface_Desc collection_iface_desc = {
+    ATSPI_DBUS_INTERFACE_COLLECTION, collection_methods, NULL, NULL, NULL, NULL
+ };
+ static void
+ _bridge_iter_object_reference_append(Eo *bridge, Eldbus_Message_Iter *iter, const Eo *obj)
+ {
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(bridge, pd);
+    Eldbus_Message_Iter *iter_struct = eldbus_message_iter_container_new(iter, 'r', NULL);
+    EINA_SAFETY_ON_NULL_RETURN(iter);
+    const char *path = _bridge_path_from_object(bridge, obj);
+    eldbus_message_iter_basic_append(iter_struct, 's', eldbus_connection_unique_name_get(pd->a11y_bus));
+    eldbus_message_iter_basic_append(iter_struct, 'o', path);
+    eldbus_message_iter_container_close(iter, iter_struct);
+ }
+ static void
+ _object_desktop_reference_append(Eldbus_Message_Iter *iter)
+ {
+   Eldbus_Message_Iter *iter_struct = eldbus_message_iter_container_new(iter, 'r', NULL);
+   EINA_SAFETY_ON_NULL_RETURN(iter);
+   eldbus_message_iter_basic_append(iter_struct, 's', ATSPI_DBUS_NAME_REGISTRY);
+   eldbus_message_iter_basic_append(iter_struct, 'o', ATSPI_DBUS_PATH_ROOT);
+   eldbus_message_iter_container_close(iter, iter_struct);
+ }
+ static void
+ _iter_interfaces_append(Eldbus_Message_Iter *iter, const Eo *obj)
+ {
+   Eldbus_Message_Iter *iter_array;
+   iter_array = eldbus_message_iter_container_new(iter, 'a', "s");
+   if (!iter_array) return;
+   if (eo_isa(obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
+     {
+        eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_ACCESSIBLE);
+        eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_COLLECTION);
+     }
+   if (eo_isa(obj, ELM_INTERFACE_ATSPI_ACTION_MIXIN))
+     eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_ACTION);
+   if (eo_isa(obj, ELM_ATSPI_APP_OBJECT_CLASS))
+     eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_APPLICATION);
+   if (eo_isa(obj, ELM_INTERFACE_ATSPI_COMPONENT_MIXIN))
+     eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_COMPONENT);
+   if (eo_isa(obj, ELM_INTERFACE_ATSPI_EDITABLE_TEXT_INTERFACE))
+     eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_EDITABLE_TEXT);
+   if (eo_isa(obj, ELM_INTERFACE_ATSPI_IMAGE_MIXIN))
+     eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_IMAGE);
+   if (eo_isa(obj, ELM_INTERFACE_ATSPI_SELECTION_INTERFACE))
+     eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_SELECTION);
+   if (eo_isa(obj, ELM_INTERFACE_ATSPI_TEXT_INTERFACE))
+     eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_TEXT);
+   if (eo_isa(obj, ELM_INTERFACE_ATSPI_VALUE_INTERFACE))
+     eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_VALUE);
+   eldbus_message_iter_container_close(iter, iter_array);
+ }
+ static Eina_Bool
+ _cache_item_reference_append_cb(Eo *bridge, Eo *data, Eldbus_Message_Iter *iter_array)
+ {
+   if (!eo_ref_get(data) || eo_destructed_is(data))
+     return EINA_TRUE;
+   Eldbus_Message_Iter *iter_struct, *iter_sub_array;
+   Elm_Atspi_State_Set states;
+   Elm_Atspi_Role role;
+   Eo *root = elm_atspi_bridge_root_get(bridge);
+   eo_do(data, role = elm_interface_atspi_accessible_role_get());
+   iter_struct = eldbus_message_iter_container_new(iter_array, 'r', NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(iter_struct, EINA_TRUE);
+   /* Marshall object path */
+   _bridge_iter_object_reference_append(bridge, iter_struct, data);
+   /* Marshall application */
+   _bridge_iter_object_reference_append(bridge, iter_struct, root);
+   Eo *parent = NULL;
+   eo_do(data, parent = elm_interface_atspi_accessible_parent_get());
+   /* Marshall parent */
+   if ((!parent) && (ELM_ATSPI_ROLE_APPLICATION == role))
+     _object_desktop_reference_append(iter_struct);
+   else
+     _bridge_iter_object_reference_append(bridge, iter_struct, parent);
+   /* Marshall children  */
+   Eina_List *children_list = NULL, *l;
+   Eo *child;
+   eo_do(data, children_list = elm_interface_atspi_accessible_children_get());
+   iter_sub_array = eldbus_message_iter_container_new(iter_struct, 'a', "(so)");
+   EINA_SAFETY_ON_NULL_GOTO(iter_sub_array, fail);
+   EINA_LIST_FOREACH(children_list, l, child)
+      _bridge_iter_object_reference_append(bridge, iter_sub_array, child);
+   eldbus_message_iter_container_close(iter_struct, iter_sub_array);
+   eina_list_free(children_list);
+   /* Marshall interfaces */
+   _iter_interfaces_append(iter_struct, data);
+   /* Marshall name */
+   char *name = NULL;
+   eo_do(data, name = elm_interface_atspi_accessible_name_get());
+   if (!name)
+     name = strdup("");
++<<<<<<< HEAD
++  /* Marshall name */
++  char *name = NULL;
++  eo_do(data, name = elm_interface_atspi_accessible_name_get());
++  if (!name)
++    name = strdup("");
++
++=======
++>>>>>>> opensource/master
    eldbus_message_iter_basic_append(iter_struct, 's', name);
    free(name);
  
@@@ -2659,9 -3788,9 +3825,15 @@@ _registered_events_list_update(Eo *brid
  }
  
  static void
++<<<<<<< HEAD
 +_handle_listener_change(void *data EINA_UNUSED, const Eldbus_Message *msg EINA_UNUSED)
 +{
 +   _registered_events_list_update();
++=======
+ _handle_listener_change(void *data, const Eldbus_Message *msg EINA_UNUSED)
+ {
+    _registered_events_list_update(data);
++>>>>>>> opensource/master
  }
  
  static Eina_Bool
@@@ -2760,39 -3859,60 +3902,71 @@@ _property_changed_signal_send(void *dat
          return EINA_FALSE;
       }
  
-    _object_signal_send(events, ATSPI_OBJECT_EVENT_PROPERTY_CHANGED, atspi_desc, 0, 0, NULL, NULL);
+    _bridge_signal_send(data, obj, ATSPI_DBUS_INTERFACE_EVENT_OBJECT,
+                        &_event_obj_signals[ATSPI_OBJECT_EVENT_PROPERTY_CHANGED], atspi_desc, 0, 0, NULL, NULL);
+    return EINA_TRUE;
+ }
+ static Eina_Bool
+ _visible_data_changed_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
+ {
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(data, pd, EINA_FALSE);
+    if (!STATE_TYPE_GET(pd->object_children_broadcast_mask, ATSPI_OBJECT_EVENT_VISIBLE_DATA_CHANGED))
+      return EINA_FALSE;
+    _bridge_signal_send(data, obj, ATSPI_DBUS_INTERFACE_EVENT_OBJECT,
+                        &_event_obj_signals[ATSPI_OBJECT_EVENT_VISIBLE_DATA_CHANGED], "",
+                        0, 0, NULL, NULL);
+    return EINA_TRUE;
+ }
+ static Eina_Bool
++<<<<<<< HEAD
++=======
+ _active_descendant_changed_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info)
+ {
+    Eo *child = event_info;
+    int idx;
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(data, pd, EINA_FALSE);
+    if (!STATE_TYPE_GET(pd->object_children_broadcast_mask, ATSPI_OBJECT_EVENT_ACTIVE_DESCENDANT_CHANGED))
+      return EINA_FALSE;
  
-    DBG("signal sent PropertyChanged:%s", property);
+    eo_do(child, idx = elm_interface_atspi_accessible_index_in_parent_get());
  
+    _bridge_signal_send(data, obj, ATSPI_DBUS_INTERFACE_EVENT_OBJECT,
+                        &_event_obj_signals[ATSPI_OBJECT_EVENT_ACTIVE_DESCENDANT_CHANGED], "",
+                        idx, 0, "(so)", eldbus_connection_unique_name_get(pd->a11y_bus), child);
     return EINA_TRUE;
  }
  
  static Eina_Bool
++>>>>>>> opensource/master
  _children_changed_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info)
  {
-    Eldbus_Service_Interface *events = data;
     const char *atspi_desc = NULL;
     Elm_Atspi_Event_Children_Changed_Data *ev_data = event_info;
     int idx;
     enum _Atspi_Object_Child_Event_Type type;
  
-    type = ev_data->is_added ? ATSPI_OBJECT_CHILD_ADDED : ATSPI_OBJECT_CHILD_REMOVED;
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(data, pd, EINA_FALSE);
  
++<<<<<<< HEAD
 +   // update cached objects
 +   if (ev_data->is_added)
 +     {
 +        _cache_build(obj);
 +     }
++=======
+    type = ev_data->is_added ? ATSPI_OBJECT_CHILD_ADDED : ATSPI_OBJECT_CHILD_REMOVED;
++>>>>>>> opensource/master
  
-    if (!STATE_TYPE_GET(_object_children_broadcast_mask, type))
+    if (!STATE_TYPE_GET(pd->object_children_broadcast_mask, type))
       return EINA_FALSE;
  
-    if (!events)
-      {
-         ERR("Atspi object does not have event interface! %p %s", obj, eo_class_name_get(eo_class_get(obj)));
-         return EINA_FALSE;
-      }
     switch (type)
      {
       case ATSPI_OBJECT_CHILD_ADDED:
@@@ -3031,15 -4132,42 +4186,46 @@@ _text_selection_changed_send(void *data
  }
  
  static void
- _event_handlers_register(void)
+ _event_handlers_register(Eo *bridge)
  {
-    _registered_events_list_update();
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(bridge, pd);
+    _registered_events_list_update(bridge);
  
     // register signal handlers in order to update list of registered listeners of ATSPI-Clients
-    _register_hdl = eldbus_signal_handler_add(_a11y_bus, ATSPI_DBUS_NAME_REGISTRY, ATSPI_DBUS_PATH_REGISTRY, ATSPI_DBUS_INTERFACE_REGISTRY, "EventListenerRegistered", _handle_listener_change, NULL);
-    _unregister_hdl = eldbus_signal_handler_add(_a11y_bus, ATSPI_DBUS_NAME_REGISTRY, ATSPI_DBUS_PATH_REGISTRY, ATSPI_DBUS_INTERFACE_REGISTRY, "EventListenerDeregistered", _handle_listener_change, NULL);
+    pd->register_hdl = eldbus_signal_handler_add(pd->a11y_bus, ATSPI_DBUS_NAME_REGISTRY, ATSPI_DBUS_PATH_REGISTRY, ATSPI_DBUS_INTERFACE_REGISTRY, "EventListenerRegistered", _handle_listener_change, bridge);
+    pd->unregister_hdl = eldbus_signal_handler_add(pd->a11y_bus, ATSPI_DBUS_NAME_REGISTRY, ATSPI_DBUS_PATH_REGISTRY, ATSPI_DBUS_INTERFACE_REGISTRY, "EventListenerDeregistered", _handle_listener_change, bridge);
+    pd->key_flr = ecore_event_filter_add(NULL, _elm_atspi_bridge_key_filter, NULL, bridge);
+ }
  
+ static void
+ _bridge_object_unregister(Eo *bridge, Eo *obj)
+ {
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(bridge, pd);
+    eina_hash_del(pd->cache, &obj, obj);
+ }
+ static Eina_Bool
+ _on_object_add(void *data, Eo *obj, const Eo_Event_Description *event EINA_UNUSED, void *event_info EINA_UNUSED)
+ {
+    Eldbus_Message *sig;
+    Eldbus_Message_Iter *iter;
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(data, pd, EINA_TRUE);
+    sig = eldbus_service_signal_new(pd->cache_interface, ATSPI_OBJECT_CHILD_ADDED);
+    iter = eldbus_message_iter_get(sig);
+    _cache_item_reference_append_cb(data, obj, iter);
+    eldbus_service_signal_send(pd->cache_interface, sig);
++<<<<<<< HEAD
 +   _key_flr = ecore_event_filter_add(NULL, _elm_atspi_bridge_key_filter, NULL, NULL);
++=======
+    return EINA_TRUE;
++>>>>>>> opensource/master
  }
  
  static Eina_Bool
@@@ -3225,49 -4453,28 +4511,56 @@@ _elm_atspi_bridge_shutdown(void
  {
     if (_init_count)
       {
-         eo_del(_root);
+         eo_del(_instance);
+         _init_count = 0;
+      }
+ }
  
-         if (_cache_update_idler)
-           ecore_idler_del(_cache_update_idler);
-         _cache_update_idler = NULL;
+ static Key_Event_Info*
+ _key_event_info_new(int event_type, const Ecore_Event_Key *data, Eo *bridge)
+ {
+    Key_Event_Info *ret;
+    EINA_SAFETY_ON_NULL_RETURN_VAL(data, NULL);
  
-         if (_pending_objects)
-           eina_list_free(_pending_objects);
-         _pending_objects = NULL;
+    ret = calloc(sizeof(Key_Event_Info), 1);
  
-         if (_cache)
-           eina_hash_free(_cache);
-         _cache = NULL;
+    ret->type = event_type;
+    ret->event = *data;
+    ret->bridge = bridge;
  
-         if (_a11y_bus)
-           eldbus_connection_unref(_a11y_bus);
-         _a11y_bus = NULL;
+    ret->event.keyname = eina_stringshare_add(data->keyname);
+    ret->event.key = eina_stringshare_add(data->key);
+    ret->event.string = eina_stringshare_add(data->string);
+    ret->event.compose = eina_stringshare_add(data->compose);
  
-         _init_count = 0;
-         _root = NULL;
-      }
++<<<<<<< HEAD
 +        if (_key_flr)
 +          ecore_event_filter_del(_key_flr);
 +        _key_flr = NULL;
++=======
++   // not sure why it is here, but explicite keep it NULLed.
++   ret->event.data = NULL;
++>>>>>>> opensource/master
 +
++   return ret;
 +}
 +
 +static Key_Event_Info*
 +_key_event_info_new(int event_type, const Ecore_Event_Key *data)
 +{
 +   Key_Event_Info *ret;
 +   EINA_SAFETY_ON_NULL_RETURN_VAL(data, NULL);
 +
 +   ret = calloc(sizeof(Key_Event_Info), 1);
 +
 +   ret->type = event_type;
 +   ret->event = *data;
 +
 +   ret->event.keyname = eina_stringshare_add(data->keyname);
 +   ret->event.key = eina_stringshare_add(data->key);
 +   ret->event.string = eina_stringshare_add(data->string);
 +   ret->event.compose = eina_stringshare_add(data->compose);
 +
     // not sure why it is here, but explicite keep it NULLed.
     ret->event.data = NULL;
  
@@@ -3283,10 -4490,10 +4576,17 @@@ _key_event_info_free(Key_Event_Info *da
     eina_stringshare_del(data->event.key);
     eina_stringshare_del(data->event.string);
     eina_stringshare_del(data->event.compose);
++<<<<<<< HEAD
+    free(data);
+ }
++=======
 +
 +   free(data);
 +}
 +
++>>>>>>> opensource/master
  static void
  _iter_marshall_key_event(Eldbus_Message_Iter *iter, Key_Event_Info *data)
  {
@@@ -3321,6 -4528,8 +4621,11 @@@ _on_listener_answer(void *data, const E
     const char *errname, *errmsg;
     Eina_Bool ret = EINA_TRUE;
  
++<<<<<<< HEAD
++=======
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(info->bridge, pd);
++>>>>>>> opensource/master
     if (eldbus_message_error_get(msg, &errname, &errmsg))
       {
          ERR("%s %s", errname, errmsg);
       }
  reemit:
     ecore_event_add(info->type, &info->event, _on_event_del, info);
++<<<<<<< HEAD
 +   reemited_events = eina_list_append(reemited_events, &info->event);
 +}
 +
 +static Eina_Bool
 +_elm_atspi_bridge_key_filter(void *data EINA_UNUSED, void *loop EINA_UNUSED, int type, void *event)
++=======
+    pd->reemited_events = eina_list_append(pd->reemited_events, &info->event);
+ }
+ static Eina_Bool
+ _elm_atspi_bridge_key_filter(void *data, void *loop EINA_UNUSED, int type, void *event)
++>>>>>>> opensource/master
  {
     Eldbus_Message *msg;
     Eldbus_Message_Iter *iter;
     Ecore_Event_Key *key_event = event;
     Key_Event_Info *ke;
++<<<<<<< HEAD
 +
 +   if (!_init_count) return EINA_TRUE;
 +   if ((type != ECORE_EVENT_KEY_DOWN) && (type != ECORE_EVENT_KEY_UP)) return EINA_TRUE;
 +
 +   // check if reemited
 +   if (eina_list_data_find(reemited_events, event))
 +     {
 +        reemited_events = eina_list_remove(reemited_events, event);
 +        return EINA_TRUE;
 +     }
 +
 +   ke = _key_event_info_new(type, key_event);
++=======
+    Eo *bridge = data;
+    ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(bridge, pd, EINA_TRUE);
+    if ((type != ECORE_EVENT_KEY_DOWN) && (type != ECORE_EVENT_KEY_UP)) return EINA_TRUE;
+    // check if reemited
+    if (eina_list_data_find(pd->reemited_events, event))
+      {
+         pd->reemited_events = eina_list_remove(pd->reemited_events, event);
+         return EINA_TRUE;
+      }
+    ke = _key_event_info_new(type, key_event, bridge);
++>>>>>>> opensource/master
     if (!ke) return EINA_TRUE;
  
     msg = eldbus_message_method_call_new(ATSPI_DBUS_NAME_REGISTRY, ATSPI_DBUS_PATH_DEC,
                                          ATSPI_DBUS_INTERFACE_DEC, "NotifyListenersSync");
     iter = eldbus_message_iter_get(msg);
     _iter_marshall_key_event(iter, ke);
++<<<<<<< HEAD
 +
 +   // timeout should be kept reasonaby low to avoid
 +   eldbus_connection_send(_a11y_bus, msg, _on_listener_answer, ke, 500);
 +
 +   return EINA_FALSE;
++=======
+    // timeout should be kept reasonaby low to avoid delays
+    if (!eldbus_connection_send(pd->a11y_bus, msg, _on_listener_answer, ke, 100))
+      return EINA_TRUE;
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_atspi_bridge_connected_get(Eo *obj EINA_UNUSED, Elm_Atspi_Bridge_Data *pd)
+ {
+    return pd->connected;
+ }
+ EOLIAN Eo*
+ _elm_atspi_bridge_root_get(Eo *obj EINA_UNUSED, Elm_Atspi_Bridge_Data *pd)
+ {
+    if (!pd->root)
+      {
+         pd->root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+         elm_interface_atspi_accessible_added(pd->root);
+      }
+    return pd->root;
+ }
+ static void
+ _properties_changed_cb(void *data, Eldbus_Proxy *proxy EINA_UNUSED, void *event)
+ {
+    Eldbus_Proxy_Event_Property_Changed *ev = event;
+    Eo *bridge = data;
+    Eina_Bool val;
+    const char *ifc = eldbus_proxy_interface_get(ev->proxy);
+    if (ev->name && !strcmp(ev->name, "ScreenReaderEnabled" ) &&
+        ifc && !strcmp(A11Y_DBUS_STATUS_INTERFACE, ifc))
+      {
+         if (!eina_value_get(ev->value, &val))
+           {
+              ERR("Unable to get ScreenReaderEnabled property value");
+              return;
+           }
+         if (val)
+           _a11y_connection_init(bridge);
+         else
+           _a11y_connection_shutdown(bridge);
+      }
+ }
+ EOLIAN Eo_Base*
+ _elm_atspi_bridge_eo_base_constructor(Eo *obj, Elm_Atspi_Bridge_Data *pd)
+ {
+    Eldbus_Proxy *proxy;
+    Eldbus_Pending *req;
+    eo_do_super(obj, ELM_ATSPI_BRIDGE_CLASS, eo_constructor());
+    elm_need_eldbus();
+    if (!(pd->session_bus = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION)))
+      {
+         ERR("Unable to connect to Session Bus");
+         return NULL;
+      }
+    if (!(pd->bus_obj = eldbus_object_get(pd->session_bus, A11Y_DBUS_NAME, A11Y_DBUS_PATH)))
+      {
+         ERR("Could not get /org/a11y/bus object");
+         goto obj_err;
+      }
+    if (!(proxy = eldbus_proxy_get(pd->bus_obj, A11Y_DBUS_STATUS_INTERFACE)))
+      {
+         ERR("Could not get proxy object for %s interface", A11Y_DBUS_STATUS_INTERFACE);
+         goto proxy_err;
+      }
+    if (!(req = eldbus_proxy_property_get(proxy, "ScreenReaderEnabled", _screen_reader_enabled_get, obj)))
+      {
+         ERR("Could not send PropertyGet request");
+         goto proxy_err;
+      }
+    pd->pending_requests = eina_list_append(pd->pending_requests, req);
+    eldbus_proxy_properties_monitor(proxy, EINA_TRUE);
+    eldbus_proxy_event_callback_add(proxy, ELDBUS_PROXY_EVENT_PROPERTY_CHANGED,
+                                    _properties_changed_cb, obj);
+    return obj;
+ proxy_err:
+    eldbus_object_unref(pd->bus_obj);
+    pd->bus_obj = NULL;
+ obj_err:
+    eldbus_connection_unref(pd->session_bus);
+    pd->session_bus = NULL;
+    return NULL;
+ }
+ EOLIAN void
+ _elm_atspi_bridge_eo_base_destructor(Eo *obj, Elm_Atspi_Bridge_Data *pd)
+ {
+    _a11y_connection_shutdown(obj);
+    if (pd->bus_obj) eldbus_object_unref(pd->bus_obj);
+    if (pd->session_bus) eldbus_connection_unref(pd->session_bus);
+    if (pd->root) eo_del(pd->root);
+    eo_do_super(obj, ELM_ATSPI_BRIDGE_CLASS, eo_destructor());
++>>>>>>> opensource/master
  }
+ #include "elm_atspi_bridge.eo.c"
Simple merge
Simple merge
index f032dfb17700dc6c77db90c7285769477600da67,fb3f2ae864da7a92f803e7839da32adce080acbe..a60d261e3c421cf50df54a7bc843728d66310f62
@@@ -3202,7 -3125,6 +3125,10 @@@ _wl_dnd_drop(void *data EINA_UNUSED, in
       }
  
     ecore_wl_dnd_drag_end(ecore_wl_input_get());
++<<<<<<< HEAD
 +
++=======
++>>>>>>> opensource/master
     return ECORE_CALLBACK_PASS_ON;
  }
  
@@@ -4108,7 -4023,8 +4027,12 @@@ _elm_item_container_pos_cb(void *data, 
       {  /* Call container drop func with specific item pointer */
          int xo = 0;
          int yo = 0;
++<<<<<<< HEAD
 +        eo_do(obj, efl_gfx_position_get(&xo, &yo));
++=======
+         evas_object_geometry_get(obj, &xo, &yo, NULL, NULL);
++>>>>>>> opensource/master
          if (st->itemgetcb)
            it = st->itemgetcb(obj, x+xo, y+yo, &xposret, &yposret);
  
@@@ -4130,7 -4046,8 +4054,12 @@@ _elm_item_container_drop_cb(void *data
       {  /* Call container drop func with specific item pointer */
          int xo = 0;
          int yo = 0;
++<<<<<<< HEAD
 +        eo_do(obj, efl_gfx_position_get(&xo, &yo));
++=======
+         evas_object_geometry_get(obj, &xo, &yo, NULL, NULL);
++>>>>>>> opensource/master
          if (st->itemgetcb)
            it = st->itemgetcb(obj, ev->x+xo, ev->y+yo, &xposret, &yposret);
  
index bd674a2eaff0cef190b929232d1dabff0a9976e0,29ef12de69b3b7f5a7701243d9b26e3a799d3477..c9df6b3544a518d8755b86149d104c8430bd292a
@@@ -346,13 -343,12 +343,13 @@@ _desc_init(void
     ELM_CONFIG_VAL(D, T, zoom_friction, T_DOUBLE);
     ELM_CONFIG_VAL(D, T, thumbscroll_bounce_enable, T_UCHAR);
     ELM_CONFIG_VAL(D, T, scroll_smooth_start_enable, T_UCHAR);
-    ELM_CONFIG_VAL(D, T, scroll_smooth_time_interval, T_DOUBLE);
+ //   ELM_CONFIG_VAL(D, T, scroll_smooth_time_interval, T_DOUBLE); // not used anymore
     ELM_CONFIG_VAL(D, T, scroll_smooth_amount, T_DOUBLE);
-    ELM_CONFIG_VAL(D, T, scroll_smooth_history_weight, T_DOUBLE);
-    ELM_CONFIG_VAL(D, T, scroll_smooth_future_time, T_DOUBLE);
+ //   ELM_CONFIG_VAL(D, T, scroll_smooth_history_weight, T_DOUBLE); // not used anymore
+ //   ELM_CONFIG_VAL(D, T, scroll_smooth_future_time, T_DOUBLE); // not used anymore
     ELM_CONFIG_VAL(D, T, scroll_smooth_time_window, T_DOUBLE);
     ELM_CONFIG_VAL(D, T, scale, T_DOUBLE);
 +   ELM_CONFIG_VAL(D, T, win_no_border, T_INT);
     ELM_CONFIG_VAL(D, T, bgpixmap, T_INT);
     ELM_CONFIG_VAL(D, T, compositing, T_INT);
     /* EET_DATA_DESCRIPTOR_ADD_LIST(D, T, "font_dirs", font_dirs, sub_edd); */
@@@ -1373,14 -1373,13 +1374,14 @@@ _config_load(void
     _elm_config->zoom_friction = 0.5;
     _elm_config->thumbscroll_border_friction = 0.5;
     _elm_config->thumbscroll_sensitivity_friction = 0.25; // magic number! just trial and error shows this makes it behave "nicer" and not run off at high speed all the time
-    _elm_config->scroll_smooth_start_enable = EINA_FALSE;
-    _elm_config->scroll_smooth_time_interval = 0.008;
+    _elm_config->scroll_smooth_start_enable = EINA_TRUE;
+ //   _elm_config->scroll_smooth_time_interval = 0.008; // not used anymore
     _elm_config->scroll_smooth_amount = 1.0;
-    _elm_config->scroll_smooth_history_weight = 0.3;
-    _elm_config->scroll_smooth_future_time = 0.0;
-    _elm_config->scroll_smooth_time_window = 0.2;
+ //   _elm_config->scroll_smooth_history_weight = 0.3; // not used anymore
+ //   _elm_config->scroll_smooth_future_time = 0.0; // not used anymore
+    _elm_config->scroll_smooth_time_window = 0.15;
     _elm_config->scale = 1.0;
 +   _elm_config->win_no_border = 0;
     _elm_config->bgpixmap = 0;
     _elm_config->compositing = 1;
     _elm_config->font_hinting = 2;
     _elm_config->audio_mute_input = 0;
     _elm_config->audio_mute_alert = 0;
     _elm_config->audio_mute_all = 0;
+    _elm_config->win_auto_focus_enable = 1;
+    _elm_config->win_auto_focus_animate = 1;
     _elm_config->atspi_mode = ELM_ATSPI_MODE_OFF;
+    _elm_config->gl_depth = 0;
+    _elm_config->gl_msaa = 0;
+    _elm_config->gl_stencil = 0;
+    _elm_config->transition_duration_factor = 1.0;
+    _elm_config->naviframe_prev_btn_auto_pushed = EINA_TRUE;
+ }
+ static void
+ _config_flush_load(void)
+ {
+    Elm_Config *cfg = NULL;
+    Eet_File *ef;
+    char buf[PATH_MAX];
+    _elm_config_user_dir_snprintf(buf, sizeof(buf), "config/flush.cfg");
+    ef = eet_open(buf, EET_FILE_MODE_READ);
+    if (ef)
+      {
+         cfg = eet_data_read(ef, _config_edd, "config");
+         eet_close(ef);
+      }
+    if (cfg)
+      {
+         size_t len;
+         len = _elm_config_user_dir_snprintf(buf, sizeof(buf), "themes/");
+         if (len + 1 < sizeof(buf))
+           ecore_file_mkpath(buf);
+         _elm_config = cfg;
+         if ((_elm_config->config_version >> ELM_CONFIG_VERSION_EPOCH_OFFSET) < ELM_CONFIG_EPOCH)
+            {
+               WRN("User's elementary config seems outdated and unusable. Fallback to load system config.");
+               _config_free(_elm_config);
+               _elm_config = NULL;
+            }
+         else
+           {
+              if (_elm_config->config_version < ELM_CONFIG_VERSION)
+                _config_update();
+           }
+      }
+ }
+ static void
+ _config_flush_get(void)
+ {
+    _elm_config_font_overlays_cancel();
+    _color_overlays_cancel();
+    _config_free(_elm_config);
+    _elm_config = NULL;
+    _config_flush_load();
+    _env_get();
+    _config_apply();
+    _config_sub_apply();
+    evas_font_reinit();
+    _elm_config_font_overlay_apply();
+    _elm_config_color_overlay_apply();
+    _elm_rescale();
+    _elm_recache();
+    _elm_clouseau_reload();
+    _elm_config_key_binding_hash();
+    if (_elm_config) _elm_win_access(_elm_config->access_mode);
+    ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
  }
  
 +static void
 +_config_flush_load(void)
 +{
 +   Elm_Config *cfg = NULL;
 +   Eet_File *ef;
 +   char buf[PATH_MAX];
 +
 +   _elm_config_user_dir_snprintf(buf, sizeof(buf), "config/flush.cfg");
 +
 +   ef = eet_open(buf, EET_FILE_MODE_READ);
 +   if (ef)
 +     {
 +        cfg = eet_data_read(ef, _config_edd, "config");
 +        eet_close(ef);
 +     }
 +
 +   if (cfg)
 +     {
 +        size_t len;
 +
 +        len = _elm_config_user_dir_snprintf(buf, sizeof(buf), "themes/");
 +        if (len + 1 < sizeof(buf))
 +          ecore_file_mkpath(buf);
 +
 +        _elm_config = cfg;
 +
 +        if ((_elm_config->config_version >> ELM_CONFIG_VERSION_EPOCH_OFFSET) < ELM_CONFIG_EPOCH)
 +           {
 +              WRN("User's elementary config seems outdated and unusable. Fallback to load system config.");
 +              _config_free(_elm_config);
 +              _elm_config = NULL;
 +           }
 +        else
 +          {
 +             if (_elm_config->config_version < ELM_CONFIG_VERSION)
 +               _config_update();
 +          }
 +     }
 +}
 +
 +static void
 +_config_flush_get(void)
 +{
 +   _elm_config_font_overlays_cancel();
 +   _color_overlays_cancel();
 +   _config_free(_elm_config);
 +   _elm_config = NULL;
 +   _config_flush_load();
 +   _env_get();
 +   _config_apply();
 +   _config_sub_apply();
 +   evas_font_reinit();
 +   _elm_config_font_overlay_apply();
 +   _elm_config_color_overlay_apply();
 +   _elm_rescale();
 +   _elm_recache();
 +   _elm_clouseau_reload();
 +   _elm_config_key_binding_hash();
 +   _elm_win_access(_elm_config->access_mode);
 +   ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
 +}
 +
  static const char *
  _elm_config_eet_close_error_get(Eet_File *ef,
                                  char     *file)
@@@ -3473,13 -3652,5 +3747,12 @@@ _elm_config_shutdown(void
  
     _desc_shutdown();
  
-    if (_elm_key_bindings)
-      eina_hash_free(_elm_key_bindings);
+    ELM_SAFE_FREE(_elm_key_bindings, eina_hash_free);
  }
 +
 +EAPI Evas_Coord
 +elm_finger_size_get(void)
 +{
 +   return elm_config_finger_size_get();
 +}
 +
Simple merge
index 32d311792a6e730596bbd535ee8c4c35987badd8,12d34777d972b9a6af37e95ea1f08f0fa9bc01ad..ad1b57c154473ae63448f71d8cc6460378197700
@@@ -961,14 -917,11 +951,22 @@@ _elm_conformant_evas_object_smart_del(E
  
     evas_object_data_set(sd->win, "\377 elm,conformant", NULL);
  
++<<<<<<< HEAD
 +   evas_object_smart_callback_del_full
 +     (sd->win, "indicator,prop,changed", _on_indicator_mode_changed, obj);
 +   evas_object_smart_callback_del_full
 +     (sd->win, "rotation,changed", _on_rotation_changed, obj);
 +   // TIZEN_ONLY(20150707): implemented elm_win_conformant_set/get for wayland
 +   evas_object_smart_callback_del_full
 +     (sd->win, "conformant,changed", _on_conformant_changed, obj);
 +   //
++=======
+    eo_do(sd->win,
+          eo_event_callback_del(ELM_WIN_EVENT_INDICATOR_PROP_CHANGED,
+             _on_indicator_mode_changed, obj),
+          eo_event_callback_del(ELM_WIN_EVENT_ROTATION_CHANGED,
+             _on_rotation_changed, obj));
++>>>>>>> opensource/master
  
     eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
  }
@@@ -1006,32 -959,31 +1004,51 @@@ elm_conformant_add(Evas_Object *parent
     return obj;
  }
  
- EOLIAN static void
+ EOLIAN static Eo *
  _elm_conformant_eo_base_constructor(Eo *obj, Elm_Conformant_Data *sd)
  {
++<<<<<<< HEAD
 +   eo_do_super(obj, MY_CLASS, eo_constructor());
++=======
+    obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
++>>>>>>> opensource/master
     eo_do(obj,
           evas_obj_type_set(MY_CLASS_NAME_LEGACY),
           evas_obj_smart_callbacks_descriptions_set(_smart_callbacks),
           elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_FILLER));
  
     sd->win = elm_widget_top_get(obj);
++<<<<<<< HEAD
 +   _on_indicator_mode_changed(obj, sd->win, NULL);
 +   _on_rotation_changed(obj, sd->win, NULL);
++=======
+    _on_indicator_mode_changed(obj, sd->win, NULL, NULL);
+    _on_rotation_changed(obj, sd->win, NULL, NULL);
++>>>>>>> opensource/master
  
     sd->indmode = elm_win_indicator_mode_get(sd->win);
     sd->ind_o_mode = elm_win_indicator_opacity_get(sd->win);
     sd->rot = elm_win_rotation_get(sd->win);
     evas_object_data_set(sd->win, "\377 elm,conformant", obj);
  
++<<<<<<< HEAD
 +   evas_object_smart_callback_add
 +     (sd->win, "indicator,prop,changed", _on_indicator_mode_changed, obj);
 +   evas_object_smart_callback_add
 +     (sd->win, "rotation,changed", _on_rotation_changed, obj);
 +   // TIZEN_ONLY(20150707): implemented elm_win_conformant_set/get for wayland
 +   evas_object_smart_callback_add
 +     (sd->win, "conformant,changed", _on_conformant_changed, obj);
 +   //
++=======
+    eo_do(sd->win,
+          eo_event_callback_add(ELM_WIN_EVENT_INDICATOR_PROP_CHANGED,
+             _on_indicator_mode_changed, obj),
+          eo_event_callback_add(ELM_WIN_EVENT_ROTATION_CHANGED,
+             _on_rotation_changed, obj));
+    return obj;
++>>>>>>> opensource/master
  }
  
  static void
index 3778d9931763c9fb6fcb895138d3536a52e8c88d,ccd14f325211c2f2123a36d187d4a26b9a7c805e..337854de95eed34575145465e7ff1fe17fde954f
@@@ -1003,8 -1025,9 +1025,14 @@@ _elm_datetime_field_limit_set(Eo *obj, 
  
     _apply_field_limits(obj);
  
++<<<<<<< HEAD
 +   if (!_date_cmp(&old_time, &sd->curr_time))
 +     evas_object_smart_callback_call(obj, SIG_CHANGED, NULL);
++=======
+    if (!_field_cmp(fieldtype, &old_time, &sd->curr_time))
+      eo_do(obj, eo_event_callback_call(ELM_DATETIME_EVENT_CHANGED, NULL));
++>>>>>>> opensource/master
  }
  
  EOLIAN static Eina_Bool
index ebe8af773b26fc90800e97b41689811a72fcc410,5cf77a52171d50001633577da5b595474db60ee0..66a06bcec843784121ef184e43eacc4c84ba6701
@@@ -5622,4 -5692,11 +5731,14 @@@ _elm_entry_elm_interface_atspi_accessib
     return ret;
  }
  
++<<<<<<< HEAD
++=======
+ EOLIAN static char*
+ _elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd)
+ {
+    const char *ret = edje_object_part_text_get(sd->entry_edje, "elm.guide");
+    return ret ? strdup(ret) : NULL;
+ }
++>>>>>>> opensource/master
  #include "elm_entry.eo.c"
index 4e5b9f6c82aa4a7531ac6567d8e5f9f1d6f8566e,9dd9e3646a858423506f461bb9197db0a1b94dd8..fc3add15daf84fe0314762ac19daa6867e101459
- class Elm_Entry (Elm_Layout, Elm_Interface_Scrollable, Evas.Clickable_Interface,
-                  Elm_Interface_Atspi_Text, Elm_Interface_Atspi_Editable_Text)
+ import elm_general;
+ enum Elm.Text_Format
+ {
+    [[Text Format types.
+      See also @Elm.Entry.file_text_format.
+    ]]
+    plain_utf8, [[ Plain UTF8 type ]]
+    markup_utf8 [[ Markup UTF8 type ]]
+ }
+ enum Elm.Input.Panel.Layout
+ {
+    [[Input panel (virtual keyboard) layout types.
+      Type of input panel (virtual keyboard) to use - this is a hint and may not provide exactly what is desired.
+      See also @Elm.Entry.input_panel_layout.set.
+    ]]
+    normal,      [[Default layout.]]
+    number,      [[Number layout.]]
+    email,       [[Email layout.]]
+    url,         [[URL layout.]]
+    phonenumber, [[Phone Number layout.]]
+    ip,          [[IP layout.]]
+    month,       [[Month layout.]]
+    numberonly,  [[Number Only layout.]]
+    invalid,     [[Never use this.]]
+    hex,         [[Hexadecimal layout.]]
+    terminal,    [[Command-line terminal layout including esc, alt, ctrl key, so on (no auto-correct, no auto-capitalization).]]
+    password,    [[Like normal, but no auto-correct, no auto-capitalization etc.]]
+    datetime,    [[Date and time layout
+                   @since 1.8]]
+    emoticon     [[Emoticon layout
+                   @since 1.10]]
+ }
+ enum Elm.Input.Panel.Lang
+ {
+    [[Input panel (virtual keyboard) language modes.
+       See also @Elm.Entry.input_panel_language.set.
+    ]]
+    automatic,    [[Automatic]]
+    alphabet      [[Alphabet]]
+ }
+ enum Elm.Autocapital.Type
+ {
+    [[Autocapitalization Types.
+      Choose method of auto-capitalization.
+      See also @Elm.Entry.autocapital_type.set.
+    ]]
+    none,         [[No auto-capitalization when typing.]]
+    word,         [[Autocapitalize each word typed.]]
+    sentence,     [[Autocapitalize the start of each sentence.]]
+    allcharacter  [[Autocapitalize all letters.]]
+ }
+ enum Elm.Input.Panel.Return_Key.Type
+ {
+    [["Return" Key types on the input panel (virtual keyboard).
+      See also @Elm.Entry.input_panel_return_key_type.set.
+    ]]
+    default, [[Default.]]
+    done,    [[Done.]]
+    go,      [[Go.]]
+    join,    [[Join.]]
+    login,   [[Login.]]
+    next,    [[Next.]]
+    search,  [[Search string or magnifier icon.]]
+    send,    [[Send.]]
+    signin   [[Sign-in
+               @since 1.8]]
+ }
+ enum Elm.Input.Hints
+ {
+    [[Enumeration that defines the types of Input Hints.
+      @since 1.12
+    ]]
+    legacy: elm_input_hint;
+    none                = 0,        [[No active hints
+                                      @since 1.12]]
+    auto_complete       = 1 << 0,   [[Suggest word auto completion
+                                      @since 1.12]]
+    sensitive_data      = 1 << 1,   [[Typed text should not be stored.
+                                      @since 1.12]]
+ }
+ class Elm.Entry (Elm.Layout, Elm_Interface_Scrollable, Evas.Clickable_Interface,
+                  Elm_Interface_Atspi_Text, Elm_Interface_Atspi_Editable_Text, Efl.File,
+                  Evas.Selectable_Interface, Evas.Scrollable_Interface)
  {
     eo_prefix: elm_obj_entry;
-    properties {
-       scrollable {
+    methods {
+       @property scrollable {
           set {
-             /*@
-             Enable or disable scrolling in entry
-             Normally the entry is not scrollable unless you enable it with this call.
+             [[Enable or disable scrolling in entry
  
-             @ingroup Entry */
+               Normally the entry is not scrollable unless you enable it with this call.
+             ]]
           }
           get {
-             /*@
-             Get the scrollable state of the entry
-             Normally the entry is not scrollable. This gets the scrollable state
-             of the entry. See elm_entry_scrollable_set() for more information.
+             [[Get the scrollable state of the entry
  
-             @return The scrollable state
-             @ingroup Entry */
+               Normally the entry is not scrollable. This gets the scrollable state
+               of the entry.
+             ]]
           }
           values {
-             bool scroll; /*@ EINA_TRUE if it is to be scrollable, EINA_FALSE otherwise */
+             scroll: bool; [[$true if it is to be scrollable, $false otherwise.]]
           }
        }
-       input_panel_show_on_demand {
+       @property input_panel_show_on_demand {
           set {
-             /*@
-             Set the attribute to show the input panel in case of only an user's explicit Mouse Up event.
-             It doesn't request to show the input panel even though it has focus.
+             [[Set the attribute to show the input panel in case of only an user's explicit Mouse Up event.
+               It doesn't request to show the input panel even though it has focus.
  
-             @ingroup Entry */
+               @since 1.9
+             ]]
           }
           get {
-             /*@
-             Get the attribute to show the input panel in case of only an user's explicit Mouse Up event.
+             [[Get the attribute to show the input panel in case of only an user's explicit Mouse Up event.
  
-             @return @c EINA_TRUE if the input panel will be shown in case of only Mouse up event.
-             @since 1.9
-             @ingroup Entry */
+               @since 1.9
+             ]]
           }
           values {
-             bool ondemand; /*@ If true, the input panel will be shown in case of only Mouse up event.
+             ondemand: bool; [[If true, the input panel will be shown in case of only Mouse up event.
              (Focus event will be ignored.)
-             @since 1.9 */
+             ]]
           }
        }
-       context_menu_disabled {
+       @property context_menu_disabled {
           set {
-             /*@
-             This disables the entry's contextual (longpress) menu.
-             @ingroup Entry */
+             [[This disables the entry's contextual (longpress) menu.]]
           }
           get {
-             /*@
-             This returns whether the entry's contextual (longpress) menu is
-             disabled.
-             @return If true, the menu is disabled
-             @ingroup Entry */
+             [[This returns whether the entry's contextual (longpress) menu is
+               disabled.
+             ]]
           }
           values {
-             bool disabled; /*@ If true, the menu is disabled */
+             disabled: bool; [[If $true, the menu is disabled.]]
           }
        }
-       cnp_mode {
+       @property cnp_mode {
           set {
-             /*@
-             Control pasting of text and images for the widget.
+             [[Control pasting of text and images for the widget.
  
-             Normally the entry allows both text and images to be pasted.
-             By setting cnp_mode to be #ELM_CNP_MODE_NO_IMAGE, this prevents images from being copy or past.
-             By setting cnp_mode to be #ELM_CNP_MODE_PLAINTEXT, this remove all tags in text .
+               Normally the entry allows both text and images to be pasted.
+               By setting cnp_mode to be #ELM_CNP_MODE_NO_IMAGE, this prevents images from being copy or past.
+               By setting cnp_mode to be #ELM_CNP_MODE_PLAINTEXT, this remove all tags in text .
  
-             @note this only changes the behaviour of text.
-             @ingroup Entry */
+               Note: This only changes the behaviour of text.
+             ]]
           }
           get {
-             /*@
-             Getting elm_entry text paste/drop mode.
-             Normally the entry allows both text and images to be pasted.
-             This gets the copy & paste mode of the entry.
-             @return mode One of #Elm_Cnp_Mode: #ELM_CNP_MODE_MARKUP, #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.
+             [[Getting elm_entry text paste/drop mode.
  
-             @ingroup Entry */
+               Normally the entry allows both text and images to be pasted.
+               This gets the copy & paste mode of the entry.
+             ]]
           }
           values {
-             Elm_Cnp_Mode cnp_mode; /*@ One of #Elm_Cnp_Mode: #ELM_CNP_MODE_MARKUP, #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT. */
+             cnp_mode: Elm_Cnp_Mode; [[One of #Elm_Cnp_Mode: #ELM_CNP_MODE_MARKUP, #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.]]
           }
        }
-       input_panel_language {
-          set {
-             /*@
-             Set the language mode of the input panel.
-             This API can be used if you want to show the alphabet keyboard mode.
-             @ingroup Entry */
-          }
-          get {
-             /*@
-             Get the language mode of the input panel.
+       @property file_text_format {
+          [[Text format used to load and save the file, which could be plain text or markup text.
  
-             See @ref elm_entry_input_panel_language_set for more details.
+            Default is $ELM_TEXT_FORMAT_PLAIN_UTF8, if you want to use
+            $ELM_TEXT_FORMAT_MARKUP_UTF8 then you need to set the text format
+            before calling @Efl.File.file.set.
  
-             @return input panel language type
+            You could also set it before a call to @.file_save
+            in order to save with the given format.
+          ]]
  
-             @ingroup Entry */
+          set {
+             [[Use it before calling @Efl.File.file.set or @.file_save.]]
           }
           values {
-             Elm_Input_Panel_Lang lang; /*@ language to be set to the input panel. */
+             format: Elm.Text_Format(Elm.Text_Format.plain_utf8); [[ The file format ]]
           }
        }
-       selection_handler_disabled {
+       @property input_panel_language {
           set {
-             /*@
-             This disabled the entry's selection handlers.
+             [[Set the language mode of the input panel.
  
-             @ingroup Entry */
+               This API can be used if you want to show the alphabet keyboard mode.
+             ]]
           }
           get {
-             /*@ This returns whether the entry's selection handlers are disabled. */
-             legacy: null;
+             [[Get the language mode of the input panel.]]
           }
           values {
-             bool disabled; /*@ If true, the selection handlers are disabled. */
+             lang: Elm.Input.Panel.Lang; [[language to be set to the input panel.]]
           }
        }
-       input_panel_layout_variation {
+       @property selection_handler_disabled {
           set {
-             /*@
-             Set the input panel layout variation of the entry
-             @ingroup Entry
-             @since 1.8 */
+             [[This disabled the entry's selection handlers.]]
           }
           get {
-             /*@
-             Get the input panel layout variation of the entry
-             @return layout variation type
-             @see elm_entry_input_panel_layout_variation_set
-             @ingroup Entry
-             @since 1.8 */
+             [[This returns whether the entry's selection handlers are disabled.]]
+             legacy: null;
           }
           values {
-             int variation; /*@ layout variation type */
+             disabled: bool; [[If $true, the selection handlers are disabled.]]
           }
        }
-       autocapital_type {
+       @property input_panel_layout_variation {
           set {
-             /*@
-             Set the autocapitalization type on the immodule.
+             [[Set the input panel layout variation of the entry
  
-             @ingroup Entry */
+               @since 1.8
+             ]]
           }
           get {
-             /*@
-             Get the autocapitalization type on the immodule.
-             @return autocapitalization type
+             [[Get the input panel layout variation of the entry
  
-             @ingroup Entry */
+               @since 1.8
+             ]]
           }
           values {
-             Elm_Autocapital_Type autocapital_type; /*@ The type of autocapitalization */
+             variation: int; [[layout variation type.]]
           }
        }
-       editable {
+       @property autocapital_type {
           set {
-             /*@
-             Sets if the entry is to be editable or not.
-             By default, entries are editable and when focused, any text input by the
-             user will be inserted at the current cursor position. But calling this
-             function with @p editable as EINA_FALSE will prevent the user from
-             inputting text into the entry.
-             The only way to change the text of a non-editable entry is to use
-             elm_object_text_set(), elm_entry_entry_insert() and other related
-             functions.
-             @ingroup Entry */
+             [[Set the autocapitalization type on the immodule.]]
           }
           get {
-             /*@
-             Get whether the entry is editable or not.
-             @return If true, the entry is editable by the user.
-             If false, it is not editable by the user
-             @see elm_entry_editable_set()
-             @ingroup Entry */
+             [[Get the autocapitalization type on the immodule.]]
           }
           values {
-             bool editable; /*@ If EINA_TRUE, user input will be inserted in the entry,
-             if not, the entry is read-only and no user input is allowed. */
+             autocapital_type: Elm.Autocapital.Type; [[The type of autocapitalization.]]
           }
        }
-       anchor_hover_style {
+       @property editable {
           set {
-             /*@
-             Set the style that the hover should use
-             When creating the popup hover, entry will request that it's
-             themed according to @p style.
-             Setting style no @c NULL means disabling automatic hover.
+             [[Sets if the entry is to be editable or not.
  
-             @see elm_object_style_set()
+               By default, entries are editable and when focused, any text input by the
+               user will be inserted at the current cursor position. But calling this
+               function with $editable as $false will prevent the user from
+               inputting text into the entry.
  
-             @ingroup Entry */
+               The only way to change the text of a non-editable entry is to use
+               \@ref elm_object_text_set, \@ref elm_entry_entry_insert and other related
+               functions.
+             ]]
           }
           get {
-             /*@
-             Get the style that the hover should use
-             Get the style, the hover created by entry will use.
-             @return The style to use by the hover. @c NULL means the default is used.
-             @see elm_object_style_set()
-             @ingroup Entry */
+             [[Get whether the entry is editable or not.]]
           }
           values {
-             const(char)* style; /*@ The style to use for the underlying hover */
+             editable: bool; [[If $true, user input will be inserted in the entry,
+             if not, the entry is read-only and no user input is allowed.]]
           }
        }
-       single_line {
+       @property anchor_hover_style {
           set {
-             /*@
-             Sets the entry to single line mode.
-             In single line mode, entries don't ever wrap when the text reaches the
-             edge, and instead they keep growing horizontally. Pressing the @c Enter
-             key will generate an @c "activate" event instead of adding a new line.
+             [[Set the style that the hover should use
  
-             When @p single_line is @c EINA_FALSE, line wrapping takes effect again
-             and pressing enter will break the text into a different line
-             without generating any events.
+               When creating the popup hover, entry will request that it's
+               themed according to $style.
  
-             @ingroup Entry */
+               Setting style no $null means disabling automatic hover.
+             ]]
           }
           get {
-             /*@
-             Get whether the entry is set to be single line.
-             @return single_line If true, the text in the entry is set to display
-             on a single line.
-             @see elm_entry_single_line_set()
-             @ingroup Entry */
+             [[Get the style that the hover should use.]]
           }
           values {
-             bool single_line; /*@ If true, the text in the entry
-             will be on a single line. */
+             style: const(char)* @nullable; [[The style to use for the underlying hover.]]
           }
        }
-       password {
+       @property single_line {
           set {
-             /*@
-             Sets the entry to password mode.
+             [[Sets the entry to single line mode.
  
-             In password mode, entries are implicitly single line and the display of
-             any text in them is replaced with asterisks (*).
+               In single line mode, entries don't ever wrap when the text reaches the
+               edge, and instead they keep growing horizontally. Pressing the $Enter
+               key will generate an $"activate" event instead of adding a new line.
  
-             @ingroup Entry */
+               When $single_line is $false, line wrapping takes effect again
+               and pressing enter will break the text into a different line
+               without generating any events.
+             ]]
           }
           get {
-             /*@
-             Get whether the entry is set to password mode.
-             @return If true, the entry is set to display all characters
-             as asterisks (*).
-             @see elm_entry_password_set()
-             @ingroup Entry */
+             [[Get whether the entry is set to be single line.]]
           }
           values {
-             bool password; /*@ If true, password mode is enabled. */
+             single_line: bool; [[If true, the text in the entry
+             will be on a single line.]]
           }
        }
-       file {
+       @property password {
           set {
-             /*@
-             This sets the file (and implicitly loads it) for the text to display and
-             then edit. All changes are written back to the file after a short delay if
-             the entry object is set to autosave (which is the default).
-             If the entry had any other file set previously, any changes made to it
-             will be saved if the autosave feature is enabled, otherwise, the file
-             will be silently discarded and any non-saved changes will be lost.
-             @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+             [[Sets the entry to password mode.
  
-             @ingroup Entry */
-             return: bool;
+               In password mode, entries are implicitly single line and the display of
+               any text in them is replaced with asterisks (*).
+             ]]
           }
           get {
-             /*@
-             Get the file being edited by the entry.
-             This function can be used to retrieve any file set on the entry for
-             edition, along with the format used to load and save it.
-             @ingroup Entry */
+             [[Get whether the entry is set to password mode.]]
           }
           values {
-             const(char)* file; /*@ The path to the file to load and save */
-             Elm_Text_Format format; /*@ The file format */
+             password: bool; [[If true, password mode is enabled.]]
           }
        }
-       input_panel_return_key_disabled {
+       @property input_panel_return_key_disabled {
           set {
-             /*@
-             Set the return key on the input panel to be disabled.
-             @ingroup Entry */
+             [[Set the return key on the input panel to be disabled.]]
           }
           get {
-             /*@
-             Get whether the return key on the input panel should be disabled or not.
-             @return EINA_TRUE if it should be disabled
-             @ingroup Entry */
+             [[Get whether the return key on the input panel should be disabled or not.]]
           }
           values {
-             bool disabled; /*@ The state to put in in: @c EINA_TRUE for
-             disabled, @c EINA_FALSE for enabled */
+             disabled: bool; [[The state to put in in: $true for
+             disabled, $false for enabled.]]
           }
        }
-       autosave {
+       @property autosave {
           set {
-             /*@
-             This sets the entry object to 'autosave' the loaded text file or not.
-             @see elm_entry_file_set()
-             @ingroup Entry */
+             [[This sets the entry object to 'autosave' the loaded text file or not.]]
           }
           get {
-             /*@
-             This gets the entry object's 'autosave' status.
-             @return Autosave the loaded file or not
-             @see elm_entry_file_set()
-             @ingroup Entry */
+             [[This gets the entry object's 'autosave' status.]]
           }
           values {
-             bool auto_save; /*@ Autosave the loaded file or not */
+             auto_save: bool; [[Autosave the loaded file or not.]]
           }
        }
-       anchor_hover_parent {
+       @property anchor_hover_parent {
           set {
-             /*@
-             Set the parent of the hover popup
-             Sets the parent object to use by the hover created by the entry
-             when an anchor is clicked. See @ref Hover for more details on this.
+             [[Set the parent of the hover popup
  
-             @ingroup Entry */
+               Sets the parent object to use by the hover created by the entry
+               when an anchor is clicked.
+             ]]
           }
           get {
-             /*@
-             Get the parent of the hover popup
-             Get the object used as parent for the hover created by the entry
-             widget. See @ref Hover for more details on this.
-             If no parent is set, the same entry object will be used.
+             [[Get the parent of the hover popup
  
-             @return The object used as parent for the hover, NULL if none is set.
-             @ingroup Entry */
+               Get the object used as parent for the hover created by the entry
+               widget. If no parent is set, the same entry object will be used.
+             ]]
           }
           values {
-             Evas_Object *parent; /*@ The object to use as parent for the hover */
+             parent: Evas.Object * @nullable; [[The object to use as parent for the hover.]]
           }
        }
-       prediction_allow {
+       @property prediction_allow {
           set {
-             /*@
-             Set whether the entry should allow to use the text prediction.
-             @ingroup Entry */
+             [[Set whether the entry should allow to use the text prediction.]]
           }
           get {
-             /*@
-             Get whether the entry should allow to use the text prediction.
-             @return EINA_TRUE if it allows to use the text prediction, otherwise EINA_FALSE.
-             @ingroup Entry */
+             [[Get whether the entry should allow to use the text prediction.]]
           }
           values {
-             bool prediction; /*@ Whether the entry should allow to use the text prediction. */
+             prediction: bool; [[Whether the entry should allow to use the text prediction.]]
           }
        }
-       input_hint {
+       @property input_hint {
           set {
-             /*@
-             Sets the input hint which allows input methods to fine-tune their behavior.
-             @ingroup Entry */
+             [[Sets the input hint which allows input methods to fine-tune their behavior.]]
           }
           get {
-             /*@
-             Gets the value of input hint.
-             @return the value of input hint.
-             @see elm_entry_input_hint_set
-             @ingroup Entry */
+             [[Gets the value of input hint.]]
           }
           values {
-             Elm_Input_Hints hints; /*@ input hint. */
+             hints: Elm.Input.Hints; [[Input hint.]]
           }
        }
-       input_panel_layout {
+       @property input_panel_layout {
           set {
-             /*@
-             Set the input panel layout of the entry
-             @ingroup Entry */
+             [[Set the input panel layout of the entry.]]
           }
           get {
++<<<<<<< HEAD
 +            /*@
 +            Get the input panel layout of the entry
 +
 +            @return layout type. It returns ELM_INPUT_PANEL_LAYOUT_INVALID(8) when it fails.
 +
 +            @see elm_entry_input_panel_layout_set
 +
 +            @ingroup Entry */
 +         }
 +         values {
 +            Elm_Input_Panel_Layout layout(8); /*@ layout type */
++=======
+             [[Get the input panel layout of the entry.]]
+          }
+          values {
+             layout: Elm.Input.Panel.Layout(Elm.Input.Panel.Layout.invalid); [[layout type.]]
++>>>>>>> opensource/master
           }
        }
-       input_panel_return_key_type {
+       @property input_panel_return_key_type {
           set {
-             /*@
-             Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
+             [[Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
  
-             An input panel displays the string or icon associated with this type
-             @ingroup Entry */
+               An input panel displays the string or icon associated with this type.
+             ]]
           }
           get {
-             /*@
-             Get the "return" key type.
-             @see elm_entry_input_panel_return_key_type_set() for more details
-             @return The type of "return" key on the input panel
-             @ingroup Entry */
+             [[Get the "return" key type.]]
           }
           values {
-             Elm_Input_Panel_Return_Key_Type return_key_type; /*@ The type of "return" key on the input panel */
+             return_key_type: Elm.Input.Panel.Return_Key.Type; [[The type of "return" key on the input panel.]]
           }
        }
-       input_panel_enabled {
+       @property input_panel_enabled {
           set {
-             /*@
-             Sets the attribute to show the input panel automatically.
-             @ingroup Entry */
+             [[Sets the attribute to show the input panel automatically.]]
           }
           get {
-             /*@
-             Get the attribute to show the input panel automatically.
-             @return EINA_TRUE if input panel will be appeared when the entry is clicked or has a focus, EINA_FALSE otherwise
-             @ingroup Entry */
+             [[Get the attribute to show the input panel automatically.]]
           }
           values {
-             bool enabled; /*@ If true, the input panel is appeared when entry is clicked or has a focus */
+             enabled: bool; [[If true, the input panel is appeared when entry is clicked or has a focus.]]
           }
        }
-       line_wrap {
+       @property line_wrap {
           set {
-             /*@
-             Set the line wrap type to use on multi-line entries.
-             Sets the wrap type used by the entry to any of the specified in
-             Elm_Wrap_Type. This tells how the text will be implicitly cut into a new
-             line (without inserting a line break or paragraph separator) when it
-             reaches the far edge of the widget.
+             [[Set the line wrap type to use on multi-line entries.
  
-             Note that this only makes sense for multi-line entries. A widget set
-             to be single line will never wrap.
+               Sets the wrap type used by the entry to any of the specified in
+               Elm_Wrap_Type. This tells how the text will be implicitly cut into a new
+               line (without inserting a line break or paragraph separator) when it
+               reaches the far edge of the widget.
  
-             @ingroup Entry */
+               Note that this only makes sense for multi-line entries. A widget set
+               to be single line will never wrap.
+             ]]
           }
           get {
-             /*@
-             Get the wrap mode the entry was set to use.
-             @return Wrap type
-             @see also elm_entry_line_wrap_set()
-             @ingroup Entry */
+             [[Get the wrap mode the entry was set to use.]]
           }
           values {
-             Elm_Wrap_Type wrap; /*@ The wrap mode to use. See Elm_Wrap_Type for details on them */
+             wrap: Elm.Wrap.Type; [[The wrap mode to use. See Elm_Wrap_Type for details on them.]]
           }
        }
-       cursor_pos {
+       @property cursor_pos {
           set {
-             /*@
-             Sets the cursor position in the entry to the given value
+             [[Sets the cursor position in the entry to the given value
  
-             The value in @p pos is the index of the character position within the
-             contents of the string as returned by elm_entry_cursor_pos_get().
-             @ingroup Entry */
+               The value in $pos is the index of the character position within the
+               contents of the string as returned by @.cursor_pos.get.
+             ]]
           }
           get {
-             /*@
-             Get the current position of the cursor in the entry
-             @return The cursor position
-             @ingroup Entry */
+             [[Get the current position of the cursor in the entry.]]
           }
           values {
-             int pos; /*@ The position of the cursor */
+             pos: int; [[The position of the cursor.]]
           }
        }
-       icon_visible {
+       @property icon_visible {
           set {
-             /*@
-             Sets the visibility of the left-side widget of the entry,
-             set by elm_object_part_content_set().
-             @ingroup Entry */
+             [[Sets the visibility of the left-side widget of the entry,
+               set by \@ref elm_object_part_content_set.]]
           }
           values {
-             bool setting; /*@ EINA_TRUE if the object should be displayed,
-             EINA_FALSE if not. */
+             setting: bool; [[$true if the object should be displayed,
+             $false if not.]]
           }
        }
-       cursor_line_end {
+       @property cursor_line_end {
           set {
-             /*@
-             This moves the cursor to the end of the current line.
-             @ingroup Entry */
+             [[This moves the cursor to the end of the current line.]]
           }
        }
-       select_region {
+       @property select_region {
           set {
-             /*@
-             This selects a region of text within the entry.
+             [[This selects a region of text within the entry.
  
-             @ingroup Entry
-             @since 1.9 */
+               @since 1.9
+             ]]
           }
           values {
-             int start; /*@ The starting position */
-             int end; /*@ The end position */
+             start: int; [[The starting position.]]
+             end: int; [[The end position.]]
           }
        }
-       input_panel_return_key_autoenabled {
+       @property input_panel_return_key_autoenabled {
           set {
-             /*@
-             Set whether the return key on the input panel is disabled automatically when entry has no text.
-             If @p enabled is EINA_TRUE, The return key on input panel is disabled when the entry has no text.
-             The return key on the input panel is automatically enabled when the entry has text.
-             The default value is EINA_FALSE.
+             [[Set whether the return key on the input panel is disabled automatically when entry has no text.
  
-             @ingroup Entry */
+               If $enabled is $true, The return key on input panel is disabled when the entry has no text.
+               The return key on the input panel is automatically enabled when the entry has text.
+               The default value is $false.
+             ]]
           }
           values {
-             bool enabled; /*@ If @p enabled is EINA_TRUE, the return key is automatically disabled when the entry has no text. */
+             enabled: bool; [[If $enabled is true, the return key is automatically disabled when the entry has no text.]]
           }
        }
-       end_visible {
+       @property end_visible {
           set {
-             /*@
-             Sets the visibility of the end widget of the entry, set by
-             elm_object_part_content_set(ent, "end", content).
-             @ingroup Entry */
+             [[Sets the visibility of the end widget of the entry, set by
+               \@ref elm_object_part_content_set(ent, "end", content).]]
           }
           values {
-             bool setting; /*@ EINA_TRUE if the object should be displayed,
-             EINA_FALSE if not. */
+             setting: bool; [[true if the object should be displayed,
+             false if not.]]
           }
        }
-       cursor_begin {
+       @property cursor_begin {
           set {
-             /*@
-             This moves the cursor to the beginning of the entry.
-             @ingroup Entry */
+             [[This moves the cursor to the beginning of the entry.]]
           }
        }
-       cursor_line_begin {
+       @property cursor_line_begin {
           set {
-             /*@
-             This moves the cursor to the beginning of the current line.
-             @ingroup Entry */
+             [[This moves the cursor to the beginning of the current line.]]
           }
        }
-       cursor_end {
+       @property cursor_end {
           set {
-             /*@
-             This moves the cursor to the end of the entry.
-             @ingroup Entry */
+             [[This moves the cursor to the end of the entry.]]
           }
        }
-       textblock {
+       @property textblock {
           get {
-             /*@
-             Returns the actual textblock object of the entry.
-             This function exposes the internal textblock object that actually
-             contains and draws the text. This should be used for low-level
-             manipulations that are otherwise not possible.
-             Changing the textblock directly from here will not notify edje/elm to
-             recalculate the textblock size automatically, so any modifications
-             done to the textblock returned by this function should be followed by
-             a call to elm_entry_calc_force().
-             The return value is marked as const as an additional warning.
-             One should not use the returned object with any of the generic evas
-             functions (geometry_get/resize/move and etc), but only with the textblock
-             functions; The former will either not work at all, or break the correct
-             functionality.
-             IMPORTANT: Many functions may change (i.e delete and create a new one)
-             the internal textblock object. Do NOT cache the returned object, and try
-             not to mix calls on this object with regular elm_entry calls (which may
-             change the internal textblock object). This applies to all cursors
-             returned from textblock calls, and all the other derivative values.
-             @return The textblock object.
-             @ingroup Entry */
-             return: Evas_Object *;
-          }
-       }
-       cursor_geometry {
+             [[
+               Returns the actual textblock object of the entry.
+               This function exposes the internal textblock object that actually
+               contains and draws the text. This should be used for low-level
+               manipulations that are otherwise not possible.
+               Changing the textblock directly from here will not notify edje/elm to
+               recalculate the textblock size automatically, so any modifications
+               done to the textblock returned by this function should be followed by
+               a call to \@ref elm_entry_calc_force.
+               The return value is marked as const as an additional warning.
+               One should not use the returned object with any of the generic evas
+               functions (geometry_get/resize/move and etc), but only with the textblock
+               functions; The former will either not work at all, or break the correct
+               functionality.
+               IMPORTANT: Many functions may change (i.e delete and create a new one)
+               the internal textblock object. Do NOT cache the returned object, and try
+               not to mix calls on this object with regular elm_entry calls (which may
+               change the internal textblock object). This applies to all cursors
+               returned from textblock calls, and all the other derivative values.
+             ]]
+             return: Evas.Object *;
+          }
+       }
+       @property cursor_geometry {
           get {
-             /*@
-             This function returns the geometry of the cursor.
-             It's useful if you want to draw something on the cursor (or where it is),
-             or for example in the case of scrolled entry where you want to show the
-             cursor.
+             [[This function returns the geometry of the cursor.
  
-             @return EINA_TRUE upon success, EINA_FALSE upon failure
-             @ingroup Entry */
+               It's useful if you want to draw something on the cursor (or where it is),
+               or for example in the case of scrolled entry where you want to show the
+               cursor.
+             ]]
              return: bool;
           }
           values {
        Elm_Interface_Scrollable.policy.set;
        Elm_Interface_Scrollable.bounce_allow.set;
        Elm_Interface_Atspi_Accessible.state_set.get;
++<<<<<<< HEAD
++=======
+       Elm_Interface_Atspi_Accessible.name.get;
++>>>>>>> opensource/master
        Elm_Interface_Atspi_Text.text.get;
        Elm_Interface_Atspi_Text.string.get;
        Elm_Interface_Atspi_Text.attribute.get;
index dc53e68e54bac300c20c3ae326aa811a6272e01f,158a437997a5fd73510c56442a2a212d1dff5d18..7ae1c3a683d231a04acea34add85508aef8829dc
   * some of these functions.
   */
  
-  * Focus directions.
 +/**
++ * Focus region show mode.
 + *
 + * @ingroup Focus
 + */
 +typedef enum
 +{
++<<<<<<< HEAD
 +   ELM_FOCUS_PREVIOUS, /**< previous direction */
 +   ELM_FOCUS_NEXT,     /**< next direction */
 +   ELM_FOCUS_UP,       /**< up direction */
 +   ELM_FOCUS_DOWN,     /**< down direction */
 +   ELM_FOCUS_RIGHT,    /**< right direction */
 +   ELM_FOCUS_LEFT,      /**< left direction */
 +} Elm_Focus_Direction;
++=======
++   ELM_FOCUS_REGION_SHOW_WIDGET, /**< as a widget */
++   ELM_FOCUS_REGION_SHOW_ITEM, /**< as an item */
++} Elm_Focus_Region_Show_Mode;
++>>>>>>> opensource/master
 +
  /**
   * Focus region show mode.
   *
@@@ -348,7 -333,7 +354,11 @@@ EAPI void                 elm_object_fo
   * @param obj The Elementary widget to get the information from
   * @return The focus movement policy
   *
++<<<<<<< HEAD
 + * Get how the focus is moved to the give Elemenray object. It can be
++=======
+  * Get how the focus is moved to the give Elementary object. It can be
++>>>>>>> opensource/master
   * #ELM_FOCUS_MOVE_POLICY_CLICK, #ELM_FOCUS_MOVE_POLICY_IN,
   * or #ELM_FOCUS_MOVE_POLICY_KEY_ONLY.
   * The first means elementary focus is moved on elementary object click.
   *
   * @ingroup Focus
   */
++<<<<<<< HEAD
 +EAPI Elm_Focus_Move_Policy  elm_object_focus_move_policy_get(Evas_Object *obj);
++=======
+ EAPI Elm_Focus_Move_Policy  elm_object_focus_move_policy_get(const Evas_Object *obj);
++>>>>>>> opensource/master
  
  /**
   * Set the focus region show mode to a given Elementary object.
index 74b13ae01d6e6c537d5048a3d88390ef45410a5d,c980819e241275f38b16698e5b07ceb5413a34ce..67e167ded264458b1b1f935d6ee5bfd851169747
@@@ -67,6 -67,8 +67,11 @@@ struct Elm_Gen_Ite
     Eina_Bool                 flipped : 1; /**< a flag that shows the flip status of the item. */
     Eina_Bool                 has_contents : 1; /**< content objs have or previously did exist (size calcs) */
     Eina_Bool                 cursor_engine_only : 1;
++<<<<<<< HEAD
++=======
+    Eina_Bool                 hide : 1; /**< flag used for hiding the items which do not match filter text */
+    Eina_Bool                 filtered: 1; /**<flag used to indicate whether or not item has been filtered */
++>>>>>>> opensource/master
  };
  
  #endif
index 6c591f09ee0323555f05647637819762742b3018,01c72ccef658f47ecd6a6018b3dcc3c59140225d..ea8ec1022e7258280488663446a8eb66eb8ef760
@@@ -990,11 -1382,8 +1382,11 @@@ _item_realize(Elm_Gen_Item *it
  
          if (it->selected)
            edje_object_signal_emit(VIEW(it), "elm,state,selected", "elm");
-         if (eo_do(eo_it, elm_wdg_item_disabled_get()))
+         if (eo_do_ret(eo_it, tmp, elm_wdg_item_disabled_get()))
            edje_object_signal_emit(VIEW(it), "elm,state,disabled", "elm");
 +        if (it == (Elm_Gen_Item *)sd->focused_item &&
 +            elm_widget_focus_highlight_enabled_get(WIDGET(it)))
 +          edje_object_signal_emit(VIEW(it), "elm,state,focused", "elm");
       }
     edje_object_message_signal_process(VIEW(it));
     evas_object_show(VIEW(it));
  
     if (eo_it == sd->focused_item)
       {
++<<<<<<< HEAD
 +        const char *focus_raise;
 +        if (elm_widget_focus_highlight_enabled_get(WIDGET(it)))
 +          {
 +             edje_object_signal_emit
 +                (VIEW(it), "elm,state,focused", "elm");
 +          }
 +
 +        focus_raise = edje_object_data_get(VIEW(it), "focusraise");
 +        if ((focus_raise) && (!strcmp(focus_raise, "on")))
 +          evas_object_raise(VIEW(it));
 +
++=======
+         _elm_gengrid_item_focus_update(it);
++>>>>>>> opensource/master
          _elm_widget_item_highlight_in_theme(WIDGET(it), EO_OBJ(it));
          _elm_widget_highlight_in_theme_update(WIDGET(it));
          _elm_widget_focus_highlight_start(WIDGET(it));
@@@ -1634,19 -2023,16 +2040,32 @@@ _elm_gengrid_item_focused(Elm_Object_It
  
     sd->focused_item = eo_it;
  
++<<<<<<< HEAD
 +   if (it->realized)
 +     {
 +        if (elm_widget_focus_highlight_enabled_get(obj))
 +          {
 +             edje_object_signal_emit
 +                (VIEW(it), "elm,state,focused", "elm");
 +          }
 +
 +        focus_raise = edje_object_data_get(VIEW(it), "focusraise");
 +        if ((focus_raise) && (!strcmp(focus_raise, "on")))
 +          evas_object_raise(VIEW(it));
 +     }
 +   evas_object_smart_callback_call(obj, SIG_ITEM_FOCUSED, eo_it);
++=======
+    /* If item is not realized state, widget couldn't get focus_highlight data. */
+    if (it->realized)
+      {
+         _elm_gengrid_item_focus_update(it);
+         _elm_widget_item_highlight_in_theme(obj, eo_it);
+         _elm_widget_highlight_in_theme_update(obj);
+         _elm_widget_focus_highlight_start(obj);
+      }
+    eo_do(obj, eo_event_callback_call(ELM_GENGRID_EVENT_ITEM_FOCUSED, eo_it));
++>>>>>>> opensource/master
     if (_elm_config->atspi_mode)
       elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
  }
@@@ -1676,7 -2062,7 +2095,11 @@@ _elm_gengrid_item_unfocused(Elm_Object_
       }
  
     sd->focused_item = NULL;
++<<<<<<< HEAD
 +   evas_object_smart_callback_call(obj, SIG_ITEM_UNFOCUSED, eo_it);
++=======
+    eo_do(obj, eo_event_callback_call(ELM_GENGRID_EVENT_ITEM_UNFOCUSED, eo_it));
++>>>>>>> opensource/master
     if (_elm_config->atspi_mode)
       elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
  }
@@@ -3121,7 -3515,7 +3552,11 @@@ _key_action_select(Evas_Object *obj, co
       }
  
     if (!sd->multi)
++<<<<<<< HEAD
 +     evas_object_smart_callback_call(WIDGET(it), SIG_ACTIVATED, eo_it);
++=======
+      eo_do(WIDGET(it), eo_event_callback_call(ELM_GENGRID_EVENT_ACTIVATED, eo_it));
++>>>>>>> opensource/master
  
     return EINA_TRUE;
  }
@@@ -3623,25 -4018,6 +4059,28 @@@ _elm_gengrid_item_elm_widget_item_focus
               if (sd->focused_item)
                 _elm_gengrid_item_unfocused(sd->focused_item);
               _elm_gengrid_item_focused(eo_it);
++<<<<<<< HEAD
 +
 +             /* If item is not realized state, widget couldn't get focus_highlight data. */
 +             if (it->realized)
 +               {
 +                  const char *focus_raise;
 +                  if (elm_widget_focus_highlight_enabled_get(obj))
 +                    {
 +                       edje_object_signal_emit
 +                          (VIEW(it), "elm,state,focused", "elm");
 +                    }
 +
 +                  focus_raise = edje_object_data_get(VIEW(it), "focusraise");
 +                  if ((focus_raise) && (!strcmp(focus_raise, "on")))
 +                    evas_object_raise(VIEW(it));
 +
 +                  _elm_widget_item_highlight_in_theme(obj, eo_it);
 +                  _elm_widget_highlight_in_theme_update(obj);
 +                  _elm_widget_focus_highlight_start(obj);
 +               }
++=======
++>>>>>>> opensource/master
            }
       }
     else
@@@ -3770,12 -4147,14 +4210,17 @@@ _item_select(Elm_Gen_Item *it
     evas_object_unref(obj);
  }
  
- EOLIAN static void
+ EOLIAN static Eo *
  _elm_gengrid_item_eo_base_constructor(Eo *eo_it, Elm_Gen_Item *it)
  {
-    eo_do_super(eo_it, ELM_GENGRID_ITEM_CLASS, eo_constructor());
+    eo_it = eo_do_super_ret(eo_it, ELM_GENGRID_ITEM_CLASS, eo_it, eo_constructor());
     it->base = eo_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
     eo_do(eo_it, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_LIST_ITEM));
++<<<<<<< HEAD
++=======
+    return eo_it;
++>>>>>>> opensource/master
  }
  
  static Elm_Gen_Item *
@@@ -3966,6 -4348,8 +4414,11 @@@ _elm_gengrid_eo_base_constructor(Eo *ob
           evas_obj_type_set(MY_CLASS_NAME_LEGACY),
           evas_obj_smart_callbacks_descriptions_set(_smart_callbacks),
           elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_TREE_TABLE));
++<<<<<<< HEAD
++=======
+    return obj;
++>>>>>>> opensource/master
  }
  
  EOLIAN static void
@@@ -4577,7 -5009,7 +5078,11 @@@ elm_gengrid_item_cursor_engine_only_get
     ELM_GENGRID_ITEM_DATA_GET(eo_it, it);
     Eina_Bool ret;
     if (it->realized)
++<<<<<<< HEAD
 +     return eo_do(eo_it, elm_wdg_item_cursor_engine_only_get());
++=======
+      return eo_do_ret(eo_it, ret, elm_wdg_item_cursor_engine_only_get());
++>>>>>>> opensource/master
     else return it->cursor_engine_only;
  }
  
@@@ -5083,17 -5506,19 +5579,33 @@@ _elm_gengrid_item_elm_interface_atspi_a
  
          EINA_LIST_FREE(texts, key)
            {
++<<<<<<< HEAD
 +             char *s = it->itc->func.text_get
 +                ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key);
 +
 +             s = _elm_util_mkup_to_text(s);
 +
 +             if (s)
 +               {
 +                  if (eina_strbuf_length_get(buf) > 0)
 +                    eina_strbuf_append(buf, ", ");
 +                  eina_strbuf_append(buf, s);
 +                  free(s);
++=======
+              char *str_markup = it->itc->func.text_get
+                 ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key);
+              char *str_utf8 = _elm_util_mkup_to_text(str_markup);
+              free(str_markup);
+              if (str_utf8)
+                {
+                   if (eina_strbuf_length_get(buf) > 0)
+                     eina_strbuf_append(buf, ", ");
+                   eina_strbuf_append(buf, str_utf8);
+                   free(str_utf8);
++>>>>>>> opensource/master
                 }
            }
       }
@@@ -5279,5 -5704,105 +5791,108 @@@ _elm_gengrid_elm_interface_atspi_access
     return ret;
  }
  
++<<<<<<< HEAD
++=======
+ EOLIAN int
+ _elm_gengrid_elm_interface_atspi_selection_selected_children_count_get(Eo *objm EINA_UNUSED, Elm_Gengrid_Data *pd)
+ {
+    return eina_list_count(pd->selected);
+ }
+ EOLIAN Eo*
+ _elm_gengrid_elm_interface_atspi_selection_selected_child_get(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd, int child_idx)
+ {
+    return eina_list_nth(pd->selected, child_idx);
+ }
+ EOLIAN Eina_Bool
+ _elm_gengrid_elm_interface_atspi_selection_child_select(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd, int child_index)
+ {
+    Elm_Gen_Item *item;
+    if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
+      {
+         EINA_INLIST_FOREACH(pd->items, item)
+           {
+              if (child_index-- == 0)
+                {
+                   elm_gengrid_item_selected_set(EO_OBJ(item), EINA_TRUE);
+                   return EINA_TRUE;
+                }
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_gengrid_elm_interface_atspi_selection_selected_child_deselect(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd, int child_index)
+ {
+    Eo *item;
+    Eina_List *l;
+    EINA_LIST_FOREACH(pd->selected, l, item)
+      {
+         if (child_index-- == 0)
+           {
+              elm_gengrid_item_selected_set(item, EINA_FALSE);
+              return EINA_TRUE;
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_gengrid_elm_interface_atspi_selection_is_child_selected(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd, int child_index)
+ {
+    Elm_Gen_Item *item;
+    EINA_INLIST_FOREACH(pd->items, item)
+      {
+         if (child_index-- == 0)
+           {
+              return elm_gengrid_item_selected_get(EO_OBJ(item));
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_gengrid_elm_interface_atspi_selection_all_children_select(Eo *obj, Elm_Gengrid_Data *pd)
+ {
+    Elm_Gen_Item *item;
+    if (!elm_gengrid_multi_select_get(obj))
+      return EINA_FALSE;
+    EINA_INLIST_FOREACH(pd->items, item)
+       elm_gengrid_item_selected_set(EO_OBJ(item), EINA_TRUE);
+    return EINA_TRUE;
+ }
+ EOLIAN Eina_Bool
+ _elm_gengrid_elm_interface_atspi_selection_clear(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd)
+ {
+    return _all_items_deselect(pd);
+ }
+ EOLIAN Eina_Bool
+ _elm_gengrid_elm_interface_atspi_selection_child_deselect(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd, int child_index)
+ {
+    Elm_Gen_Item *item;
+    if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
+      {
+         EINA_INLIST_FOREACH(pd->items, item)
+           {
+              if (child_index-- == 0)
+                {
+                   elm_gengrid_item_selected_set(EO_OBJ(item), EINA_FALSE);
+                   return EINA_TRUE;
+                }
+           }
+      }
+    return EINA_FALSE;
+ }
++>>>>>>> opensource/master
  #include "elm_gengrid.eo.c"
  #include "elm_gengrid_item.eo.c"
index 35f37adaf23d80595cbcc5bfacf0fa35d5a33c44,d5ca4efffa823c7d2e964f99c6bf4caf92930fef..88034b990e0ad0476402dc1f1e61cbfd764b0427
++<<<<<<< HEAD
 +class Elm_Gengrid (Elm_Layout, Elm_Interface_Scrollable,
 +                   Evas.Clickable_Interface, Elm_Interface_Atspi_Widget_Action)
++=======
+ import elm_general;
+ enum Elm.Gengrid.Reorder_Type
+ {
+    normal, [[ normal reorder type ]]
+    swap    [[ swap reorder type ]]
+ }
+ class Elm.Gengrid (Elm.Layout, Elm_Interface_Scrollable,
+                    Evas.Clickable_Interface, Elm_Interface_Atspi_Widget_Action,
+                    Elm_Interface_Atspi_Selection)
++>>>>>>> opensource/master
  {
     eo_prefix: elm_obj_gengrid;
-    properties {
-       align {
+    methods {
+       @property align {
           set {
-             /*@
-             Set the items grid's alignment within a given gengrid widget
-             This sets the alignment of the whole grid of items of a gengrid
-             within its given viewport. By default, those values are both
-             0.5, meaning that the gengrid will have its items grid placed
-             exactly in the middle of its viewport.
-             @note If given alignment values are out of the cited ranges,
-             they'll be changed to the nearest boundary values on the valid
-             ranges.
+             [[Set the items grid's alignment within a given gengrid widget.
  
-             @see elm_gengrid_align_get()
+               This sets the alignment of the whole grid of items of a gengrid
+               within its given viewport. By default, those values are both
+               0.5, meaning that the gengrid will have its items grid placed
+               exactly in the middle of its viewport.
  
-             @ingroup Gengrid */
+               Note: If given alignment values are out of the cited ranges,
+               they'll be changed to the nearest boundary values on the valid
+               ranges.
+             ]]
           }
           get {
-             /*@
-             Get the items grid's alignment values within a given gengrid
-             widget
+             [[Get the items grid's alignment values within a given gengrid
+               widget.
  
-             @note Use @c NULL pointers on the alignment values you're not
-             interested in: they'll be ignored by the function.
-             @see elm_gengrid_align_set() for more details
-             @ingroup Gengrid */
+               Note: Use $null pointers on the alignment values you're not
+               interested in: they'll be ignored by the function.
+             ]]
           }
           values {
-             double align_x; /*@ Alignment in the horizontal axis (0 <= align_x <= 1). */
-             double align_y; /*@ Alignment in the vertical axis (0 <= align_y <= 1). */
+             align_x: double; [[Alignment in the horizontal axis (0 <= align_x <= 1).]]
+             align_y: double; [[Alignment in the vertical axis (0 <= align_y <= 1).]]
           }
        }
-       filled {
+       @property filled {
           set {
-             /*@
-             Set how the items grid's filled within a given gengrid widget
-             This sets the fill state of the whole grid of items of a gengrid
-             within its given viewport. By default, this value is false, meaning
-             that if the first line of items grid's isn't filled, the items are
-             centered with the alignment
-             @see elm_gengrid_filled_get()
+             [[Set how the items grid's filled within a given gengrid widget
  
-             @ingroup Gengrid */
+               This sets the fill state of the whole grid of items of a
+               gengrid within its given viewport. By default, this value
+               is false, meaning that if the first line of items grid's
+               isn't filled, the items are centered with the alignment.
+             ]]
           }
           get {
-             /*@
-             Get how the items grid's filled within a given gengrid widget
-             @return @c EINA_TRUE, if filled is on, @c EINA_FALSE if it's
-             off
-             @note Use @c NULL pointers on the alignment values you're not
-             interested in: they'll be ignored by the function.
-             @see elm_gengrid_align_set() for more details
+             [[Get how the items grid's filled within a given gengrid widget
  
-             @ingroup Gengrid */
+               Note: Use $null pointers on the alignment values you're not
+               interested in: they'll be ignored by the function.
+             ]]
           }
           values {
-             bool fill; /*@ Filled if True */
+             fill: bool;
           }
        }
-       page_relative {
-          set {
-             /*@ Set a given gengrid widget's scrolling page size, relative to its viewport size. */
-          }
-          get {
-             /*@ Get a given gengrid widget's scrolling page size, relative to its viewport size. */
-          }
+       @property page_relative {
+          [[Control  a given gengrid widget's scrolling page size, relative
+            to its viewport size.
+          ]]
+          set {}
+          get {}
           values {
-             double h_pagerel;
-             double v_pagerel;
+             h_pagerel: double;
+             v_pagerel: double;
           }
        }
-       multi_select {
+       @property multi_select {
           set {
-             /*@
-             Enable or disable multi-selection in a given gengrid widget
+             [[Enable or disable multi-selection in a given gengrid widget.
  
-             Multi-selection is the ability to have @b more than one
-             item selected, on a given gengrid, simultaneously. When it is
-             enabled, a sequence of clicks on different items will make them
-             all selected, progressively. A click on an already selected item
-             will unselect it. If interacting via the keyboard,
-             multi-selection is enabled while holding the "Shift" key.
+               Multi-selection is the ability to have more than one item
+               selected, on a given gengrid, simultaneously. When it is
+               enabled, a sequence of clicks on different items will make
+               them all selected, progressively. A click on an already
+               selected item will unselect it. If interacting via the
+               keyboard, multi-selection is enabled while holding the
+               "Shift" key.
  
-             @note By default, multi-selection is @b disabled on gengrids
-             @see elm_gengrid_multi_select_get()
-             @ingroup Gengrid */
+               Note: By default, multi-selection is disabled on gengrids.
+             ]]
           }
           get {
-             /*@
-             Get whether multi-selection is enabled or disabled for a given
-             gengrid widget
-             @return @c EINA_TRUE, if multi-selection is enabled, @c
-             EINA_FALSE otherwise
-             @see elm_gengrid_multi_select_set() for more details
-             @ingroup Gengrid */
+             [[Get whether multi-selection is enabled or disabled for a given
+               gengrid widget.
+             ]]
           }
           values {
-             bool multi; /*@ @c EINA_TRUE, to enable multi-selection,
-             @c EINA_FALSE to disable it. */
+             multi: bool;
           }
        }
-       group_item_size {
+       @property group_item_size {
           set {
-             /*@
-             Set the size for the group items of a given gengrid widget
-             A gengrid, after creation, has still no information on the size
-             to give to each of its cells. So, you most probably will end up
-             with squares one @ref Fingers "finger" wide, the default
-             size. Use this function to force a custom size for you group items,
-             making them as big as you wish.
-             @see elm_gengrid_group_item_size_get()
+             [[Set the size for the group items of a given gengrid widget.
  
-             @ingroup Gengrid */
+               A gengrid, after creation, has still no information on the size
+               to give to each of its cells. So, you most probably will end up
+               with squares one \@ref Fingers "finger" wide, the default
+               size. Use this function to force a custom size for you group
+               items, making them as big as you wish.
+             ]]
           }
           get {
-             /*@
-             Get the size set for the group items of a given gengrid widget
+             [[Get the size set for the group items of a given gengrid widget.
  
-             @note Use @c NULL pointers on the size values you're not
-             interested in: they'll be ignored by the function.
-             @see elm_gengrid_group_item_size_get() for more details
-             @ingroup Gengrid */
+               Note: Use $null pointers on the size values you're not
+               interested in: they'll be ignored by the function.
+             ]]
           }
           values {
-             Evas_Coord w; /*@ The group items' width. */
-             Evas_Coord h; /*@ The group items' height. */
+             w: Evas.Coord; [[The group items' width.]]
+             h: Evas.Coord; [[The group items' height.]]
           }
        }
-       select_mode {
+       @property select_mode {
           set {
-             /*@
-             Set the gengrid select mode.
-             elm_gengrid_select_mode_set() changes item select mode in the gengrid widget.
-             - #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
-             callback when first becoming selected. Any further clicks will
-             do nothing, unless you set always select mode.
-             - #ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
-             every click will make the selected callbacks be called.
-             - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
-             entirely and they will neither appear selected nor call selected
-             callback functions.
-             @see elm_gengrid_select_mode_get()
-             @ingroup Gengrid */
+             [[Set the gengrid select mode.
+               This changes item select mode in the gengrid widget.
+               #ELM_OBJECT_SELECT_MODE_DEFAULT means that items will only
+               call their selection func and callback when first becoming
+               selected. Any further clicks will do nothing, unless you set
+               always select mode. #ELM_OBJECT_SELECT_MODE_ALWAYS means that
+               even if selected, every click will make the selected callbacks
+               be called. #ELM_OBJECT_SELECT_MODE_NONE will turn off the
+               ability to select items entirely and they will neither appear
+               selected nor call selected callback functions.
+             ]]
           }
           get {
-             /*@
-             Get the gengrid select mode.
-             @return The select mode
-             (If getting mode fails, it returns #ELM_OBJECT_SELECT_MODE_MAX)
-             @see elm_gengrid_select_mode_set()
-             @ingroup Gengrid */
+             [[Get the gengrid select mode.]]
           }
           values {
++<<<<<<< HEAD
 +            Elm_Object_Select_Mode mode(4); /*@ The select mode */
++=======
+             mode: Elm.Object.Select_Mode(Elm.Object.Select_Mode.max); [[The select mode.]]
++>>>>>>> opensource/master
           }
        }
-       reorder_mode {
+       @property reorder_mode {
           set {
-             /*@
-             Set whether a given gengrid widget is or not able have items
-             @b reordered
-             If a gengrid is set to allow reordering, a click held for more
-             than 0.5 over a given item will highlight it specially,
-             signaling the gengrid has entered the reordering state. From
-             that time on, the user will be able to, while still holding the
-             mouse button down, move the item freely in the gengrid's
-             viewport, replacing to said item to the locations it goes to.
-             The replacements will be animated and, whenever the user
-             releases the mouse button, the item being replaced gets a new
-             definitive place in the grid.
-             @see elm_gengrid_reorder_mode_get()
-             @ingroup Gengrid */
+             [[Set whether a given gengrid widget is or not able have items
+               reordered.
+               If a gengrid is set to allow reordering, a click held for more
+               than 0.5 over a given item will highlight it specially,
+               signaling the gengrid has entered the reordering state. From
+               that time on, the user will be able to, while still holding the
+               mouse button down, move the item freely in the gengrid's
+               viewport, replacing to said item to the locations it goes to.
+               The replacements will be animated and, whenever the user
+               releases the mouse button, the item being replaced gets a new
+               definitive place in the grid.
+             ]]
           }
           get {
-             /*@
-             Get whether a given gengrid widget is or not able have items
-             @b reordered
-             @return @c EINA_TRUE, if reordering is on, @c EINA_FALSE if it's
-             off
-             @see elm_gengrid_reorder_mode_set() for more details
-             @ingroup Gengrid */
+             [[Get whether a given gengrid widget is or not able have items
+               reordered.
+             ]]
           }
           values {
-             bool reorder_mode; /*@ Use @c EINA_TRUE to turn reordering on,
-             @c EINA_FALSE to turn it off */
+             reorder_mode: bool; [[Use $true to turn reordering on,
+                                   $false to turn it off.]]
           }
        }
-       highlight_mode {
-          set {
-             /*@ Set whether the gengrid items' should be highlighted when item selected. */
+       @property highlight_mode {
+          [[Control whether the gengrid items' should be highlighted when
+            item selected.
+          ]]
+          set {}
+          get {}
+          values {
+             highlight: bool;
           }
-          get {
-             /*@ Get whether the gengrid items' should be highlighted when item selected. */
+       }
+       @property reorder_type {
+          set {
+             [[ Set the Gengrid reorder type
+                @since 1.11
+             ]]
           }
           values {
-             bool highlight;
+             type: Elm.Gengrid.Reorder_Type; [[ Reorder type value ]]
           }
        }
-       item_size {
+       @property item_size {
           set {
-             /*@
-             Set the size for the items of a given gengrid widget
-             A gengrid, after creation, has still no information on the size
-             to give to each of its cells. So, you most probably will end up
-             with squares one @ref Fingers "finger" wide, the default
-             size. Use this function to force a custom size for you items,
-             making them as big as you wish.
-             @see elm_gengrid_item_size_get()
+             [[Set the size for the items of a given gengrid widget.
  
-             @ingroup Gengrid */
+               A gengrid, after creation, has still no information on the size
+               to give to each of its cells. So, you most probably will end up
+               with squares one \@ref Fingers "finger" wide, the default
+               size. Use this function to force a custom size for you items,
+               making them as big as you wish.
+             ]]
           }
           get {
-             /*@
-             Get the size set for the items of a given gengrid widget
+             [[Get the size set for the items of a given gengrid widget.
  
-             @note Use @c NULL pointers on the size values you're not
-             interested in: they'll be ignored by the function.
-             @see elm_gengrid_item_size_get() for more details
-             @ingroup Gengrid */
+               Note: Use $null pointers on the size values you're not
+               interested in: they'll be ignored by the function.
+             ]]
           }
           values {
-             Evas_Coord w; /*@ The items' width. */
-             Evas_Coord h; /*@ The items' height. */
+             w: Evas.Coord; [[The items' width.]]
+             h: Evas.Coord; [[The items' height.]]
           }
        }
-       multi_select_mode {
+       @property multi_select_mode {
           set {
-             /*@
-             Set the gengrid multi select mode.
-             - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever each
-             item is clicked.
-             - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only one item will be selected
-             although multi-selection is enabled, if clicked without pressing control
-             key. This mode is only available with multi-selection.
+             [[Set the gengrid multi select mode.
  
-             @see elm_gengrid_multi_select_set()
-             @see elm_gengrid_multi_select_mode_get()
+               #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT means that
+               select/unselect items whenever each item is clicked.
+               #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL means that
+               only one item will be selected although multi-selection
+               is enabled, if clicked without pressing control key. This
+               mode is only available with multi-selection.
  
-             @ingroup Gengrid
-             @since 1.8 */
+               @since 1.8
+             ]]
           }
           get {
-             /*@
-             Get the gengrid multi select mode.
+             [[Get the gengrid multi select mode.
  
-             @return The multi select mode
-             (If getting mode fails, it returns #ELM_OBJECT_MULTI_SELECT_MODE_MAX)
+               If getting mode fails, it returns
+               #ELM_OBJECT_MULTI_SELECT_MODE_MAX.
  
-             @see elm_gengrid_multi_select_set()
-             @see elm_gengrid_multi_select_mode_set()
-             @ingroup Gengrid
-             @since 1.8 */
+               @since 1.8
+             ]]
           }
           values {
++<<<<<<< HEAD
 +            Elm_Object_Multi_Select_Mode mode(2); /*@ The multi select mode */
++=======
+             mode: Elm.Object.Multi_Select_Mode(Elm.Object.Multi_Select_Mode.max); [[The multi select mode.]]
++>>>>>>> opensource/master
           }
        }
-       horizontal {
+       @property horizontal {
           set {
-             /*@
-             Set the direction in which a given gengrid widget will expand while
-             placing its items.
-             When in "horizontal mode" (@c EINA_TRUE), items will be placed in @b columns,
-             from top to bottom and, when the space for a column is filled, another one is
-             started on the right, thus expanding the grid horizontally. When in
-             "vertical mode" (@c EINA_FALSE), though, items will be placed in @b rows,
-             from left to right and, when the space for a row is filled, another one is
-             started below, thus expanding the grid vertically.
+             [[Set the direction in which a given gengrid widget will
+               expand while placing its items.
  
-             @note By default, gengrid is in vertical mode, @c EINA_FALSE.
+               When in "horizontal mode" ($true), items will be placed in
+               columns, from top to bottom and, when the space for a column
+               is filled, another one is started on the right, thus expanding
+               the grid horizontally. When in "vertical mode" ($false),
+               though, items will be placed in rows, from left to right
+               and, when the space for a row is filled, another one is
+               started below, thus expanding the grid vertically.
  
-             @see elm_gengrid_horizontal_get()
-             @ingroup Gengrid */
+               Note: By default, gengrid is in vertical mode, $false.
+             ]]
           }
           get {
-             /*@
-             Get for what direction a given gengrid widget will expand while
-             placing its items.
-             @return @c EINA_TRUE, if @p obj is set to expand horizontally,
-             @c EINA_FALSE if it's set to expand vertically.
-             @see elm_gengrid_horizontal_set() for more details
-             @ingroup Gengrid */
+             [[Get for what direction a given gengrid widget will expand while
+               placing its items.
+             ]]
           }
           values {
-             bool horizontal; /*@ @c EINA_TRUE to make the gengrid expand horizontally,
-             @c EINA_FALSE to expand vertically. */
+             horizontal: bool; [[$true to make the gengrid expand horizontally,
+             $false to expand vertically.]]
           }
        }
-       page_size {
+       @property page_size {
           set {
-             /*@ Set a given gengrid widget's scrolling page size */
+             [[Set a given gengrid widget's scrolling page size.]]
           }
           values {
-             Evas_Coord h_pagesize;
-             Evas_Coord v_pagesize;
+             h_pagesize: Evas.Coord;
+             v_pagesize: Evas.Coord;
           }
        }
-       selected_item {
+       @property selected_item {
           get {
-             /*@
-             Get the selected item in a given gengrid widget
-             @return The selected item's handle or @c NULL, if none is
-             selected at the moment (and on errors)
+             [[Get the selected item in a given gengrid widget.
  
-             This returns the selected item in @p obj. If multi selection is
-             enabled on @p obj (@see elm_gengrid_multi_select_set()), only
-             the first item in the list is selected, which might not be very
-             useful. For that case, see elm_gengrid_selected_items_get().
-             @ingroup Gengrid */
-             return: Elm_Object_Item *;
+               This returns the selected item in $obj. If multi selection is
+               enabled on $obj (See @.multi_select.set), only the first item
+               in the list is selected, which might not be very useful. For
+               that case, see @.selected_items.get.
+             ]]
+             return: Elm.Widget_Item *; [[The selected item's handle or $null
+                                          if none is selected at the moment
+                                          (and on errors).]]
           }
        }
-       realized_items {
+       @property realized_items {
           get {
-             /*@
-             Get a list of realized items in gengrid
-             @return The list of realized items, nor NULL if none are realized.
-             This returns a list of the realized items in the gengrid. The list
-             contains gengrid item pointers. The list must be freed by the
-             caller when done with eina_list_free(). The item pointers in the
-             list are only valid so long as those items are not deleted or the
-             gengrid is not deleted.
-             @see elm_gengrid_realized_items_update()
-             @ingroup Gengrid */
-             return: list *;
+             [[Get a list of realized items in gengrid.
+               This returns a list of the realized items in the gengrid. The
+               list contains gengrid item pointers. The list must be freed by
+               the caller when done with eina_list_free(). The item pointers
+               in the list are only valid so long as those items are not
+               deleted or the gengrid is not deleted.
+             ]]
+             return: free(own(list<Elm_Gen_Item *> *), eina_list_free) @warn_unused; [[
+                 The list of realized items or $null if none are realized.
+             ]]
           }
        }
-       first_item {
+       @property first_item {
           get {
-             /*@
-             Get the first item in a given gengrid widget
-             @return The first item's handle or @c NULL, if there are no
-             items in @p obj (and on errors)
-             This returns the first item in the @p obj's internal list of
-             items.
+             [[Get the first item in a given gengrid widget.
  
-             @see elm_gengrid_last_item_get()
-             @ingroup Gengrid */
-             return: Elm_Object_Item *;
+               This returns the first item in the $obj's internal list of
+               items.
+             ]]
+             return: Elm.Widget_Item *; [[
+                The first item's handle or $null, if there are no
+                items in $obj (and on errors)
+             ]]
           }
        }
-       selected_items {
+       @property selected_items {
           get {
-             /*@
-             Get <b>a list</b> of selected items in a given gengrid
-             @return The list of selected items or @c NULL, if none is
-             selected at the moment (and on errors)
-             This returns a list of the selected items, in the order that
-             they appear in the grid. This list is only valid as long as no
-             more items are selected or unselected (or unselected implicitly
-             by deletion). The list contains Gengrid item pointers as
-             data, naturally.
-             @see elm_gengrid_selected_item_get()
-             @ingroup Gengrid */
-             return: const(list)*;
+             [[Get a list of selected items in a given gengrid.
+               This returns a list of the selected items, in the order that
+               they appear in the grid. This list is only valid as long as no
+               more items are selected or unselected (or unselected implicitly
+               by deletion). The list contains Gengrid item pointers as
+               data, naturally.
+             ]]
+             return: const(list<Elm.Widget_Item *>)*; [[
+                The list of selected items or $null, if none is
+                selected at the moment (and on errors).
+             ]]
           }
        }
-       last_item {
+       @property last_item {
           get {
-             /*@
-             Get the last item in a given gengrid widget
-             @return The last item's handle or @c NULL, if there are no
-             items in @p obj (and on errors)
-             This returns the last item in the @p obj's internal list of
-             items.
+             [[Get the last item in a given gengrid widget.
  
-             @see elm_gengrid_first_item_get()
-             @ingroup Gengrid */
-             return: Elm_Object_Item *;
+               This returns the last item in the $obj's internal list of
+               items.
+             ]]
+             return: Elm.Widget_Item *; [[The last item's handle or $null
+                                          if there are no  items in $obj
+                                          (and on errors).]]
           }
        }
-       wheel_disabled {
+       @property wheel_disabled {
           set {
-             /*@
-             Enable or disable mouse wheel to be used to scroll the gengrid.
-             Mouse wheel can be used for the user to scroll up and down the gengrid.
+             [[Enable or disable mouse wheel to be used to scroll the gengrid.
  
-             It's enabled by default.
+               Mouse wheel can be used for the user to scroll up and down
+               the gengrid.
  
-             @see elm_gengrid_wheel_disabled_get()
-             @ingroup Gengrid */
+               Wheel is enabled by default.
+             ]]
           }
           get {
-             /*@
-             Get a value whether mouse wheel is enabled or not.
-             @return @c EINA_TRUE means gengrid wheel is disabled. @c EINA_FALSE indicates
-             it is enabled.
+             [[Get a value whether mouse wheel is enabled or not.
  
-             Mouse wheel can be used for the user to scroll up and down the gengrid.
-             @see elm_gengrid_wheel_disabled_set()
-             @ingroup Gengrid */
+               Mouse wheel can be used for the user to scroll up and down
+               the gengrid.
+             ]]
           }
           values {
-             bool disabled; /*@ Use @c EINA_TRUE to disable mouse wheel or @c EINA_FALSE
-             to enable it. */
+             disabled: bool; [[Use $true to disable mouse wheel or $false
+                               to enable it.]]
           }
        }
-    }
-    methods {
        item_insert_before {
-          /*@
-          Insert an item before another in a gengrid widget
-          @return A handle to the item added or @c NULL, on errors.
-          This inserts an item before another in the gengrid.
-          @see elm_gengrid_item_append()
-          @see elm_gengrid_item_prepend()
-          @see elm_gengrid_item_insert_after()
-          @see elm_object_item_del()
+          [[Insert an item before another in a gengrid widget.
  
-          @ingroup Gengrid */
-          return: Elm_Object_Item *;
+            This inserts an item before another in the gengrid.
+          ]]
+          return: Elm.Widget_Item *; [[A handle to the item added or $null on errors.]]
           params {
-             @in const(Elm_Gengrid_Item_Class)* itc; /*@ The item class for the item. */
-             @in const(void)* data; /*@ The item data. */
-             @in Elm_Object_Item *relative; /*@ The item to place this new one before. */
-             @in Evas_Smart_Cb func; /*@ Convenience function called when the item is
-             selected. */
-             @in const(void)* func_data; /*@ Data to be passed to @p func. */
+             @in itc: const(Elm_Gengrid_Item_Class)*; [[The item class for the item.]]
+             @in data: const(void)*; [[The item data.]]
+             @in relative: Elm.Widget_Item *; [[The item to place this new one before.]]
+             @in func: Evas_Smart_Cb @optional; [[Convenience function called
+                                                  when the item is selected.]]
+             @in func_data: const(void)* @optional; [[Data to be passed to $func.]]
           }
        }
        realized_items_update {
        Evas.Object_Smart.del;
        Evas.Object_Smart.member_add;
        Evas.Object_Smart.resize;
++<<<<<<< HEAD
 +      Elm_Widget.theme_apply;
 +      Elm_Widget.focus_next_manager_is;
 +      Elm_Widget.focus_direction_manager_is;
 +      Elm_Widget.access;
 +      Elm_Widget.focus_next;
 +      Elm_Widget.focus_direction;
 +      Elm_Widget.on_focus;
 +      Elm_Widget.on_focus_region;
 +      Elm_Widget.event;
 +      Elm_Widget.focus_highlight_geometry_get;
 +      Elm_Widget.focused_item.get;
 +      Elm_Widget.item_loop_enabled.set;
 +      Elm_Widget.item_loop_enabled.get;
 +      Elm_Layout.sizing_eval;
++=======
+       Elm.Widget.theme_apply;
+       Elm.Widget.focus_next_manager_is;
+       Elm.Widget.focus_direction_manager_is;
+       Elm.Widget.access;
+       Elm.Widget.focus_next;
+       Elm.Widget.focus_direction;
+       Elm.Widget.on_focus;
+       Elm.Widget.on_focus_region;
+       Elm.Widget.event;
+       Elm.Widget.focus_highlight_geometry_get;
+       Elm.Widget.focused_item.get;
+       Elm.Widget.item_loop_enabled.set;
+       Elm.Widget.item_loop_enabled.get;
+       Elm.Layout.sizing_eval;
++>>>>>>> opensource/master
        Elm_Interface_Scrollable.bounce_allow.set;
        Elm_Interface_Scrollable.policy;
        Elm_Interface_Atspi_Accessible.children.get;
        Elm_Interface_Atspi_Accessible.state_set.get;
        Elm_Interface_Atspi_Widget_Action.elm_actions.get;
++<<<<<<< HEAD
++=======
+       Elm_Interface_Atspi_Selection.selected_children_count.get;
+       Elm_Interface_Atspi_Selection.selected_child.get;
+       Elm_Interface_Atspi_Selection.selected_child_deselect;
+       Elm_Interface_Atspi_Selection.child_select;
+       Elm_Interface_Atspi_Selection.child_deselect;
+       Elm_Interface_Atspi_Selection.is_child_selected;
+       Elm_Interface_Atspi_Selection.all_children_select;
+       Elm_Interface_Atspi_Selection.clear;
++>>>>>>> opensource/master
     }
     events {
        language,changed;
index bb2fae11c957eb100fd385bf56435302e9383a19,95a079c79aefc851f6a78a1cbe5fd8a78756875e..38fb8223bfc0d1d6f87e68fc4bf7c1ffd5becd74
@@@ -2,161 -26,107 +26,111 @@@ class Elm.Gengrid_Item(Elm.Widget_Item
  {
        eo_prefix: elm_obj_gengrid_item;
        data: Elm_Gen_Item;
-       properties {
-            prev {
+       methods {
+            @property prev {
                  get {
-                      /*@
-                       Get the @b previous item in a gengrid widget's internal list of items,
-                       given a handle to one of those items.
-                       This returns the item placed before the @p item, on the container
-                       gengrid.
+                      [[Get the previous item in a gengrid widget's internal list of items, given a handle to one of those items.
  
-                       @see elm_gengrid_item_next_get()
-                       @ingroup Gengrid
-                       */
+                        This returns the item placed before the $item, on the container
+                        gengrid.]]
                  }
                  values {
-                      Elm_Object_Item *item; /*@ @return The item before @p item, or @c NULL if there's none (and on errors) */
+                      item: Elm.Widget_Item *; [[The item before $item, or $NULL if there's none (and on errors)]]
                  }
             }
-            next {
+            @property next {
                  get {
-                      /*@
-                       Get the @b next item in a gengrid widget's internal list of items,
-                       given a handle to one of those items.
-                       This returns the item placed after the @p item, on the container
-                       gengrid.
-                       @see elm_gengrid_item_prev_get()
+                      [[Get the next item in a gengrid widget's internal list of items,
+                        given a handle to one of those items.
  
-                       @ingroup Gengrid
-                       */
+                        This returns the item placed after the $item, on the container
+                        gengrid.]]
                  }
                  values {
-                      Elm_Object_Item *item; /*@ @return The item after @p item, or @c NULL if there's none (and on errors) */
+                      item: Elm.Widget_Item *; [[The item after $item, or $NULL if there's none (and on errors)]]
                  }
             }
-            selected {
-                 get {
-                      /*@
-                       Get whether a given gengrid item is selected or not
-                       This API returns EINA_TRUE for all the items selected in multi-select mode as well.
+            @property selected {
+                 [[Control whether a given gengrid item is selected or not
  
-                       @see elm_gengrid_item_selected_set() for more details
+                   This API returns true for all the items selected in multi-select mode as well.
  
-                       @ingroup Gengrid
-                       */
+                   This sets the selected state of an item. If multi-selection is
+                   not enabled on the containing gengrid and $selected is
+                   true, any other previously selected items will get
+                   unselected in favor of this new one.]]
+                 get {
                  }
                  set {
-                      /*@
-                       Set whether a given gengrid item is selected or not
-                       This sets the selected state of an item. If multi-selection is
-                       not enabled on the containing gengrid and @p selected is @c
-                       EINA_TRUE, any other previously selected items will get
-                       unselected in favor of this new one.
-                       @see elm_gengrid_item_selected_get()
-                       @ingroup Gengrid
-                       */
                  }
                  values {
-                      Eina_Bool selected; /*@ the selected state (@c EINA_TRUE selected, @c EINA_FALSE not selected) */
+                      selected: bool; [[the selected state ($true selected, $false not selected)]]
                  }
             }
-            item_class {
+            @property item_class {
                  get {
-                      /*@
-                       Get the Gengrid Item class for the given Gengrid Item.
+                      [[Get the Gengrid Item class for the given Gengrid Item.
  
-                       This returns the Gengrid_Item_Class for the given item. It can be used to examine
-                       the function pointers and item_style.
-                       @ingroup Gengrid
-                       */
+                        This returns the Gengrid_Item_Class for the given item. It can be used to examine
+                        the function pointers and item_style.]]
                  }
                  values {
-                      const (Elm_Gengrid_Item_Class) *itc; /*@ Gengrid Item class for the given item */
+                      itc: const (Elm_Gengrid_Item_Class) *; [[Gengrid Item class for the given item]]
                  }
             }
-            index {
+            @property index {
                  get {
-                      /*@
-                       Get the index of the item. It is only valid once displayed.
-                       @ingroup Gengrid
-                       */
+                      [[Get the index of the item. It is only valid once displayed.]]
                  }
                  values {
++<<<<<<< HEAD
 +                     int index(-1); /*@ @return the position inside the list of item. */
++=======
+                      index: int(-1); [[the position inside the list of item.]]
++>>>>>>> opensource/master
                  }
             }
-            pos {
+            @property pos {
                  get {
-                      /*@
-                       Get a given gengrid item's position, relative to the whole
-                       gengrid's grid area.
-                       This returns the "logical" position of the item within the
-                       gengrid. For example, @c (0, 1) would stand for first row,
-                       second column.
+                      [[Get a given gengrid item's position, relative to the whole gengrid's grid area.
  
-                       @ingroup Gengrid
-                       */
+                        This returns the "logical" position of the item within the
+                        gengrid. For example, $(0, 1) would stand for first row,
+                        second column.]]
                  }
                  values {
-                      uint x; /*@ Pointer to variable to store the item's <b>row number</b>. */
-                      uint y; /*@ Pointer to variable to store the item's <b>column number</b>. */
+                      x: uint; [[Pointer to variable to store the item's <b>row number</b>.]]
+                      y: uint; [[Pointer to variable to store the item's <b>column number</b>.]]
                  }
             }
-            select_mode {
+            @property select_mode {
+                 [[Control the gengrid item's select mode.
+                   (If getting mode fails, it returns ELM_OBJECT_SELECT_MODE_MAX)
+                   elm_gengrid_select_mode_set() changes item's select mode.
+                   - ELM_OBJECT_SELECT_MODE_DEFAULT : The item will only call their selection func and
+                        callback when first becoming selected. Any further clicks will
+                        do nothing, unless you set always select mode.
+                   - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+                        every click will make the selected callbacks be called.
+                   - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select the item
+                        entirely and they will neither appear selected nor call selected
+                        callback functions.
+                   - ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY : This will apply no-finger-size rule
+                        with ELM_OBJECT_SELECT_MODE_NONE. No-finger-size rule makes an item can be
+                        smaller than lower limit. Clickable objects should be bigger than
+                        human touch point device (your finger) for some touch or
+                        small screen devices. So it is enabled, the item can be shrink than
+                        predefined finger-size value. And the item will be updated.]]
                  get {
-                      /*@
-                       Get the gengrid item's select mode.
-                       (If getting mode fails, it returns ELM_OBJECT_SELECT_MODE_MAX)
-                       @see elm_gengrid_item_select_mode_set()
-                       @ingroup Gengrid
-                       */
                  }
                  set {
-                      /*@
-                       Set the gengrid item's select mode.
-                       elm_gengrid_select_mode_set() changes item's select mode.
-                       - ELM_OBJECT_SELECT_MODE_DEFAULT : The item will only call their selection func and
-                            callback when first becoming selected. Any further clicks will
-                            do nothing, unless you set always select mode.
-                       - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
-                            every click will make the selected callbacks be called.
-                       - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select the item
-                            entirely and they will neither appear selected nor call selected
-                            callback functions.
-                       - ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY : This will apply no-finger-size rule
-                            with ELM_OBJECT_SELECT_MODE_NONE. No-finger-size rule makes an item can be
-                            smaller than lower limit. Clickable objects should be bigger than
-                            human touch point device (your finger) for some touch or
-                            small screen devices. So it is enabled, the item can be shrink than
-                            predefined finger-size value. And the item will be updated.
-                       @see elm_gengrid_item_select_mode_get()
-                       @ingroup Gengrid
-                       */
                  }
                  values {
-                      Elm_Object_Select_Mode mode(4); /*@ The selected mode */
+                      mode: Elm.Object.Select_Mode(Elm.Object.Select_Mode.max); [[The selected mode]]
                  }
             }
-       }
-       methods {
             /*      init { FIXME
                     params {
                     Evas_Smart_Cb func;
        }
        implements {
             Eo.Base.constructor;
++<<<<<<< HEAD
 +           Elm_Widget_Item.del_pre;
 +           Elm_Widget_Item.disable;
 +           Elm_Widget_Item.signal_emit;
 +           Elm_Widget_Item.focus.set;
 +           Elm_Widget_Item.focus.get;
 +           Elm_Widget_Item.part_text.get;
 +           Elm_Widget_Item.part_content.get;
 +           Elm_Widget_Item.tooltip_text_set;
 +           Elm_Widget_Item.tooltip_style.get;
 +           Elm_Widget_Item.tooltip_style.set;
 +           Elm_Widget_Item.tooltip_window_mode.get;
 +           Elm_Widget_Item.tooltip_window_mode.set;
 +           Elm_Widget_Item.tooltip_content_cb_set;
 +           Elm_Widget_Item.tooltip_unset;
 +           Elm_Widget_Item.cursor.set;
 +           Elm_Widget_Item.cursor_unset;
++=======
+            Elm.Widget_Item.del_pre;
+            Elm.Widget_Item.disable;
+            Elm.Widget_Item.signal_emit;
+            Elm.Widget_Item.focus.set;
+            Elm.Widget_Item.focus.get;
+            Elm.Widget_Item.part_text.get;
+            Elm.Widget_Item.part_content.get;
+            Elm.Widget_Item.tooltip_text_set;
+            Elm.Widget_Item.tooltip_style.get;
+            Elm.Widget_Item.tooltip_style.set;
+            Elm.Widget_Item.tooltip_window_mode.get;
+            Elm.Widget_Item.tooltip_window_mode.set;
+            Elm.Widget_Item.tooltip_content_cb_set;
+            Elm.Widget_Item.tooltip_unset;
+            Elm.Widget_Item.cursor.set;
+            Elm.Widget_Item.cursor_unset;
++>>>>>>> opensource/master
             Elm_Interface_Atspi_Accessible.name.get;
             Elm_Interface_Atspi_Accessible.state_set.get;
             Elm_Interface_Atspi_Accessible.children.get;
index 15137148eaa3c32bf118fbe342b4945f60bfeaf0,2e4bd8bf7f8fc6bc6ccfe8338a2b0237a0428d72..a019044e7af214da9a50a7d111f0d2f9cbd2c629
@@@ -391,6 -396,12 +396,15 @@@ _item_content_realize(Elm_Gen_Item *it
  
               snprintf(buf, sizeof(buf), "elm,state,%s,visible", key);
               edje_object_signal_emit(target, buf, "elm");
++<<<<<<< HEAD
++=======
+              if (_elm_config->atspi_mode && eo_isa(content, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
+                {
+                   eo_do(content, elm_interface_atspi_accessible_parent_set(EO_OBJ(it)));
+                   elm_interface_atspi_accessible_children_changed_added_signal_emit(EO_OBJ(it), content);
+                }
++>>>>>>> opensource/master
            }
       }
  }
@@@ -1226,64 -1257,32 +1260,36 @@@ _item_order_update(const Eina_Inlist *l
  }
  
  static void
- _elm_genlist_item_state_update(Elm_Gen_Item *it,
-                                Item_Cache *itc)
+ _elm_genlist_item_state_update(Elm_Gen_Item *it)
  {
-    if (itc)
+    Eina_Bool tmp;
+    if (it->selected)
       {
-         if (it->selected != itc->selected)
-           {
-              if (it->selected)
-                {
-                   edje_object_signal_emit(VIEW(it), SIGNAL_SELECTED, "elm");
-                   if (it->deco_all_view)
-                     edje_object_signal_emit
-                       (it->deco_all_view, SIGNAL_SELECTED, "elm");
-                }
-           }
-         if (eo_do(EO_OBJ(it), elm_wdg_item_disabled_get()) != itc->disabled)
-           {
-              if (eo_do(EO_OBJ(it), elm_wdg_item_disabled_get()))
-                edje_object_signal_emit(VIEW(it), SIGNAL_DISABLED,"elm");
-              if (it->deco_all_view)
-                edje_object_signal_emit
-                  (it->deco_all_view, SIGNAL_DISABLED, "elm");
-           }
-         if (it->item->expanded != itc->expanded)
-           {
-              if (it->item->expanded)
-                edje_object_signal_emit(VIEW(it), SIGNAL_EXPANDED, "elm");
-              if (it->deco_all_view)
-                edje_object_signal_emit
-                  (it->deco_all_view, SIGNAL_EXPANDED, "elm");
-           }
+         edje_object_signal_emit(VIEW(it), SIGNAL_SELECTED, "elm");
+         if (it->deco_all_view)
+           edje_object_signal_emit
+              (it->deco_all_view, SIGNAL_SELECTED, "elm");
       }
-    else
+    if (eo_do_ret(EO_OBJ(it), tmp, elm_wdg_item_disabled_get()))
       {
-         if (it->selected)
-           {
-              edje_object_signal_emit(VIEW(it), SIGNAL_SELECTED, "elm");
-              if (it->deco_all_view)
-                edje_object_signal_emit
-                  (it->deco_all_view, SIGNAL_SELECTED, "elm");
-           }
-         if (eo_do(EO_OBJ(it), elm_wdg_item_disabled_get()))
-           {
-              edje_object_signal_emit(VIEW(it), SIGNAL_DISABLED, "elm");
-              if (it->deco_all_view)
-                edje_object_signal_emit
-                  (it->deco_all_view, SIGNAL_DISABLED, "elm");
-           }
-         if (it->item->expanded)
-           {
-              edje_object_signal_emit(VIEW(it), SIGNAL_EXPANDED, "elm");
-              if (it->deco_all_view)
-                edje_object_signal_emit
-                  (it->deco_all_view, SIGNAL_EXPANDED, "elm");
-           }
+         edje_object_signal_emit(VIEW(it), SIGNAL_DISABLED, "elm");
+         if (it->deco_all_view)
+           edje_object_signal_emit
+              (it->deco_all_view, SIGNAL_DISABLED, "elm");
+      }
+    if (it->item->expanded)
+      {
+         edje_object_signal_emit(VIEW(it), SIGNAL_EXPANDED, "elm");
+         if (it->deco_all_view)
+           edje_object_signal_emit
+              (it->deco_all_view, SIGNAL_EXPANDED, "elm");
       }
     if (it == (Elm_Gen_Item *)GL_IT(it)->wsd->focused_item &&
++<<<<<<< HEAD
 +       elm_widget_focus_highlight_enabled_get(WIDGET(it)))
++=======
+        (elm_widget_focus_highlight_enabled_get(WIDGET(it)) || _elm_config->win_auto_focus_enable))
++>>>>>>> opensource/master
       edje_object_signal_emit(VIEW(it), SIGNAL_FOCUSED, "elm");
  }
  
@@@ -1744,14 -1801,7 +1808,18 @@@ _item_realize(Elm_Gen_Item *it
  
          if (EO_OBJ(it) == sd->focused_item)
            {
++<<<<<<< HEAD
 +             const char *focus_raise;
 +             if (elm_widget_focus_highlight_enabled_get(WIDGET(it)))
 +               edje_object_signal_emit(VIEW(it), SIGNAL_FOCUSED, "elm");
 +
 +             focus_raise = edje_object_data_get(VIEW(it), "focusraise");
 +             if ((focus_raise) && (!strcmp(focus_raise, "on")))
 +               evas_object_raise(VIEW(it));
 +
++=======
+              _elm_genlist_item_focus_update(it);
++>>>>>>> opensource/master
               _elm_widget_item_highlight_in_theme(WIDGET(it), EO_OBJ(it));
               _elm_widget_highlight_in_theme_update(WIDGET(it));
               _elm_widget_focus_highlight_start(WIDGET(it));
@@@ -2594,15 -2656,8 +2674,20 @@@ _elm_genlist_item_focused(Elm_Object_It
     sd->focused_item = eo_it;
  
     if (it->realized)
++<<<<<<< HEAD
 +     {
 +        if (elm_widget_focus_highlight_enabled_get(obj))
 +          edje_object_signal_emit(VIEW(it), SIGNAL_FOCUSED, "elm");
 +
 +        focus_raise = edje_object_data_get(VIEW(it), "focusraise");
 +        if ((focus_raise) && (!strcmp(focus_raise, "on")))
 +          evas_object_raise(VIEW(it));
 +     }
 +   evas_object_smart_callback_call(obj, SIG_ITEM_FOCUSED, eo_it);
++=======
+      _elm_genlist_item_focus_update(it);
+    eo_do(obj, eo_event_callback_call(ELM_GENLIST_EVENT_ITEM_FOCUSED, eo_it));
++>>>>>>> opensource/master
     if (_elm_config->atspi_mode)
       elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
  }
@@@ -2630,7 -2685,7 +2715,11 @@@ _elm_genlist_item_unfocused(Elm_Object_
       }
  
     sd->focused_item = NULL;
++<<<<<<< HEAD
 +   evas_object_smart_callback_call(obj, SIG_ITEM_UNFOCUSED, eo_it);
++=======
+    eo_do(obj, eo_event_callback_call(ELM_GENLIST_EVENT_ITEM_UNFOCUSED, eo_it));
++>>>>>>> opensource/master
     if (_elm_config->atspi_mode)
       elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
  }
@@@ -2983,7 -3045,7 +3079,11 @@@ _key_action_select(Evas_Object *obj, co
          if (_item_select(it)) goto deleted;
       }
  
++<<<<<<< HEAD
 +   evas_object_smart_callback_call(WIDGET(it), SIG_ACTIVATED, EO_OBJ(it));
++=======
+    eo_do(WIDGET(it), eo_event_callback_call(ELM_GENLIST_EVENT_ACTIVATED, EO_OBJ(it)));
++>>>>>>> opensource/master
  
     return EINA_TRUE;
  
@@@ -5382,29 -5471,12 +5509,19 @@@ _elm_genlist_looping_down_cb(void *data
  }
  
  static void
- _elm_genlist_focus_highlight_move_up_end_cb(void *data,
-                                             Evas_Object *obj EINA_UNUSED,
-                                             const char *emission EINA_UNUSED,
-                                             const char *source EINA_UNUSED)
+ _evas_viewport_resize_cb(void *d, Evas *e EINA_UNUSED, void *ei EINA_UNUSED)
  {
-       Evas_Object *gl = data;
-       Elm_Object_Item *eo_it = elm_genlist_last_item_get(gl);
-       if (!_elm_config->item_select_on_focus_disable)
-         elm_genlist_item_selected_set(eo_it, EINA_TRUE);
-       else
-         elm_object_item_focus_set(eo_it, EINA_TRUE);
-       _elm_widget_focus_highlight_signal_emit(gl, "elm,action,focus,move,home,down", "elm");
+    Elm_Genlist_Data *priv = d;
+    evas_object_smart_changed(priv->pan_obj);
  }
  
 +static void
 +_evas_viewport_resize_cb(void *d, Evas *e EINA_UNUSED, void *ei EINA_UNUSED)
 +{
 +   Elm_Genlist_Data *priv = d;
 +   evas_object_smart_changed(priv->pan_obj);
 +}
 +
  EOLIAN static void
  _elm_genlist_evas_object_smart_add(Eo *obj, Elm_Genlist_Data *priv)
  {
@@@ -5878,13 -5967,15 +6012,22 @@@ _elm_genlist_item_elm_widget_item_focus
     return EINA_FALSE;
  }
  
- EOLIAN static void
+ EOLIAN static Eo *
  _elm_genlist_item_eo_base_constructor(Eo *eo_it, Elm_Gen_Item *it)
  {
++<<<<<<< HEAD
 +   eo_do_super(eo_it, ELM_GENLIST_ITEM_CLASS, eo_constructor());
 +
 +   it->base = eo_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
 +   eo_do(eo_it, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_LIST_ITEM));
++=======
+    eo_it = eo_do_super_ret(eo_it, ELM_GENLIST_ITEM_CLASS, eo_it, eo_constructor());
+    it->base = eo_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
+    eo_do(eo_it, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_LIST_ITEM));
+    return eo_it;
++>>>>>>> opensource/master
  }
  
  static Elm_Gen_Item *
@@@ -7041,15 -7127,16 +7194,22 @@@ _elm_genlist_item_elm_widget_item_toolt
  EAPI const char *
  elm_genlist_item_tooltip_style_get(const Elm_Object_Item *it)
  {
-    return eo_do(it, elm_wdg_item_tooltip_style_get());
+    const char *ret;
+    return eo_do_ret(it, ret, elm_wdg_item_tooltip_style_get());
+ }
+ EOLIAN static const char *
+ _elm_genlist_item_elm_widget_item_tooltip_style_get(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *it)
+ {
+    return it->tooltip.style;
  }
  
 +EOLIAN static const char *
 +_elm_genlist_item_elm_widget_item_tooltip_style_get(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *it)
 +{
 +   return it->tooltip.style;
 +}
 +
  EAPI Eina_Bool
  elm_genlist_item_tooltip_window_mode_set(Elm_Object_Item *item,
                                           Eina_Bool disable)
@@@ -7074,7 -7166,14 +7239,18 @@@ _elm_genlist_item_elm_widget_item_toolt
  EAPI Eina_Bool
  elm_genlist_item_tooltip_window_mode_get(const Elm_Object_Item *eo_it)
  {
++<<<<<<< HEAD
 +   return eo_do(eo_it, elm_wdg_item_tooltip_window_mode_get());
++=======
+    Eina_Bool ret;
+    return eo_do_ret(eo_it, ret, elm_wdg_item_tooltip_window_mode_get());
+ }
+ EOLIAN static Eina_Bool
+ _elm_genlist_item_elm_widget_item_tooltip_window_mode_get(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *it)
+ {
+    return it->tooltip.free_size;
++>>>>>>> opensource/master
  }
  
  EAPI void
@@@ -7679,6 -8001,13 +8078,16 @@@ _elm_genlist_item_elm_interface_atspi_a
     if (sel)
        STATE_TYPE_SET(ret, ELM_ATSPI_STATE_SELECTED);
  
++<<<<<<< HEAD
++=======
+    if (elm_genlist_item_type_get(eo_it) == ELM_GENLIST_ITEM_TREE)
+      {
+         STATE_TYPE_SET(ret, ELM_ATSPI_STATE_EXPANDABLE);
+         if (elm_genlist_item_expanded_get(eo_it))
+            STATE_TYPE_SET(ret, ELM_ATSPI_STATE_EXPANDED);
+      }
++>>>>>>> opensource/master
     return ret;
  }
  
@@@ -7701,16 -8030,17 +8110,30 @@@ _elm_genlist_item_elm_interface_atspi_a
  
          EINA_LIST_FREE(texts, key)
            {
++<<<<<<< HEAD
 +             char *s = it->itc->func.text_get
 +                ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key);
 +
 +             s = _elm_util_mkup_to_text(s);
 +
 +             if (s)
 +               {
 +                  if (eina_strbuf_length_get(buf) > 0) eina_strbuf_append(buf, ", ");
 +                  eina_strbuf_append(buf, s);
 +                  free(s);
++=======
+              char *str_markup = it->itc->func.text_get
+                 ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key);
+              char *str_utf8 = _elm_util_mkup_to_text(str_markup);
+              free(str_markup);
+              if (str_utf8)
+                {
+                   if (eina_strbuf_length_get(buf) > 0) eina_strbuf_append(buf, ", ");
+                   eina_strbuf_append(buf, str_utf8);
+                   free(str_utf8);
++>>>>>>> opensource/master
                 }
            }
       }
@@@ -7955,5 -8270,105 +8363,108 @@@ _elm_genlist_elm_interface_atspi_access
     return ret;
  }
  
++<<<<<<< HEAD
++=======
+ EOLIAN int
+ _elm_genlist_elm_interface_atspi_selection_selected_children_count_get(Eo *objm EINA_UNUSED, Elm_Genlist_Data *pd)
+ {
+    return eina_list_count(pd->selected);
+ }
+ EOLIAN Eo*
+ _elm_genlist_elm_interface_atspi_selection_selected_child_get(Eo *obj EINA_UNUSED, Elm_Genlist_Data *pd, int child_idx)
+ {
+    return eina_list_nth(pd->selected, child_idx);
+ }
+ EOLIAN Eina_Bool
+ _elm_genlist_elm_interface_atspi_selection_child_select(Eo *obj EINA_UNUSED, Elm_Genlist_Data *pd, int child_index)
+ {
+    Elm_Gen_Item *item;
+    if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
+      {
+         EINA_INLIST_FOREACH(pd->items, item)
+           {
+              if (child_index-- == 0)
+                {
+                   elm_genlist_item_selected_set(EO_OBJ(item), EINA_TRUE);
+                   return EINA_TRUE;
+                }
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_genlist_elm_interface_atspi_selection_selected_child_deselect(Eo *obj EINA_UNUSED, Elm_Genlist_Data *pd, int child_index)
+ {
+    Eo *item;
+    Eina_List *l;
+    EINA_LIST_FOREACH(pd->selected, l, item)
+      {
+         if (child_index-- == 0)
+           {
+              elm_genlist_item_selected_set(item, EINA_FALSE);
+              return EINA_TRUE;
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_genlist_elm_interface_atspi_selection_is_child_selected(Eo *obj EINA_UNUSED, Elm_Genlist_Data *pd, int child_index)
+ {
+    Elm_Gen_Item *item;
+    EINA_INLIST_FOREACH(pd->items, item)
+      {
+         if (child_index-- == 0)
+           {
+              return elm_genlist_item_selected_get(EO_OBJ(item));
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_genlist_elm_interface_atspi_selection_all_children_select(Eo *obj, Elm_Genlist_Data *pd)
+ {
+    Elm_Gen_Item *item;
+    if (!elm_genlist_multi_select_get(obj))
+      return EINA_FALSE;
+    EINA_INLIST_FOREACH(pd->items, item)
+       elm_genlist_item_selected_set(EO_OBJ(item), EINA_TRUE);
+    return EINA_TRUE;
+ }
+ EOLIAN Eina_Bool
+ _elm_genlist_elm_interface_atspi_selection_clear(Eo *obj EINA_UNUSED, Elm_Genlist_Data *pd)
+ {
+    return _all_items_deselect(pd);
+ }
+ EOLIAN Eina_Bool
+ _elm_genlist_elm_interface_atspi_selection_child_deselect(Eo *obj EINA_UNUSED, Elm_Genlist_Data *pd, int child_index)
+ {
+    Elm_Gen_Item *item;
+    if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
+      {
+         EINA_INLIST_FOREACH(pd->items, item)
+           {
+              if (child_index-- == 0)
+                {
+                   elm_genlist_item_selected_set(EO_OBJ(item), EINA_FALSE);
+                   return EINA_TRUE;
+                }
+           }
+      }
+    return EINA_FALSE;
+ }
++>>>>>>> opensource/master
  #include "elm_genlist.eo.c"
  #include "elm_genlist_item.eo.c"
index 537a801251f0a0bf60c80d76560679a785e73c03,5bf03a58899c9a2d717e71d37607f9f38b71c3ad..5b90cd908dd65faae66e4e8e3a7536175ca0f6b2
- class Elm_Genlist (Elm_Layout, Elm_Interface_Scrollable, Evas.Clickable_Interface,
-                    Elm_Interface_Atspi_Widget_Action)
+ import elm_general;
+ class Elm.Genlist (Elm.Layout, Elm_Interface_Scrollable, Evas.Clickable_Interface,
+                    Elm_Interface_Atspi_Widget_Action, Elm_Interface_Atspi_Selection,
+                    Evas.Selectable_Interface)
  {
     eo_prefix: elm_obj_genlist;
-    properties {
-       homogeneous {
+    methods {
+       @property homogeneous {
           set {
-             /*@
-             Enable/disable homogeneous mode.
-             This will enable the homogeneous mode where items are of the same
-             height and width so that genlist may do the lazy-loading at its
-             maximum (which increases the performance for scrolling the list).
-             In the normal mode, genlist will pre-calculate all the items' sizes even
-             though they are not in use. So items' callbacks are called many times than
-             expected. But homogeneous mode will skip the item size pre-calculation
-             process so items' callbacks are called only when the item is needed.
-             @note This also works well with group index.
+             [[Enable/disable homogeneous mode.
  
-             @see elm_genlist_mode_set()
-             @see elm_genlist_homogeneous_get()
+               This will enable the homogeneous mode where items are of the
+               same height and width so that genlist may do the lazy-loading
+               at its maximum (which increases the performance for scrolling
+               the list). In the normal mode, genlist will pre-calculate all
+               the items' sizes even though they are not in use. So items'
+               callbacks are called many times than expected. But homogeneous
+               mode will skip the item size pre-calculation  process so
+               items' callbacks are called only when the item is needed.
  
-             @ingroup Genlist */
+               Note: This also works well with group index.
+             ]]
           }
           get {
-             /*@
-             Get whether the homogeneous mode is enabled.
-             @return Assume the items within the genlist are of the same height
-             and width (EINA_TRUE = on, EINA_FALSE = off)
-             @see elm_genlist_homogeneous_set()
-             @ingroup Genlist */
+             [[Get whether the homogeneous mode is enabled.]]
           }
           values {
-             bool homogeneous; /*@ Assume the items within the genlist are of the
-             same height and width (EINA_TRUE = on, EINA_FALSE = off). Default is @c
-             EINA_FALSE. */
+             homogeneous: bool; [[Assume the items within the genlist are of
+                                  the same height and width. Default is $false.]]
           }
        }
-       select_mode {
+       @property select_mode {
           set {
-             /*@
-             Set the genlist select mode.
-             elm_genlist_select_mode_set() changes item select mode in the genlist widget.
-             - #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will call their selection func and
-             callback once when first becoming selected. Any further clicks will
-             do nothing, unless you set always select mode.
-             - #ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
-             every click will make the selected callbacks be called.
-             - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
-             entirely and they will neither appear selected nor call selected
-             callback functions.
-             @see elm_genlist_select_mode_get()
-             @ingroup Genlist */
+             [[Set the genlist select mode.
+               #ELM_OBJECT_SELECT_MODE_DEFAULT means that items will call
+               their selection func and callback once when first becoming
+               selected. Any further clicks will do nothing, unless you set
+               always select mode. ELM_OBJECT_SELECT_MODE_ALWAYS means that
+               even if selected, every click will make the selected callbacks
+               be called. #ELM_OBJECT_SELECT_MODE_NONE will turn off the
+               ability to select items entirely and they will neither appear
+               selected nor call selected callback functions.
+             ]]
           }
           get {
-             /*@
-             Get the genlist select mode.
-             @return The select mode
-             (If getting mode fails, it returns #ELM_OBJECT_SELECT_MODE_MAX)
-             @see elm_genlist_select_mode_set()
-             @ingroup Genlist */
+             [[Get the genlist select mode.]]
           }
           values {
++<<<<<<< HEAD
 +            Elm_Object_Select_Mode mode(4); /*@ The select mode */
++=======
+             mode: Elm.Object.Select_Mode(Elm.Object.Select_Mode.max); [[The select mode.]]
++>>>>>>> opensource/master
           }
        }
-       focus_on_selection {
+       @property focus_on_selection {
           set {
-             /*@
-             Set focus upon items selection mode
-             When enabled, every selection of an item inside the genlist will automatically set focus to
-             its first focusable widget from the left. This is true of course if the selection was made by
-             clicking an unfocusable area in an item or selecting it with a key movement. Clicking on a
-             focusable widget inside an item will couse this particular item to get focus as usual.
+             [[Set focus upon items selection mode
  
-             @ingroup Genlist */
+               When enabled, every selection of an item inside the genlist
+               will automatically set focus to its first focusable widget
+               from the left. This is true of course if the selection was
+               made by clicking an unfocusable area in an item or selecting
+               it with a key movement. Clicking on a focusable widget inside
+               an item will couse this particular item to get focus as usual.
+             ]]
           }
           get {
-             /*@
-             Get whether focus upon item's selection mode is enabled.
-             @return The tree effect status
-             (EINA_TRUE = enabled, EINA_FALSE = disabled)
-             @ingroup Genlist */
+             [[Get whether focus upon item's selection mode is enabled.]]
           }
           values {
-             bool enabled; /*@ The tree effect status
-             (EINA_TRUE = enabled, EINA_FALSE = disabled) */
+             enabled: bool; [[The tree effect status.]]
           }
        }
-       longpress_timeout {
+       @property longpress_timeout {
           set {
-             /*@
-             Set the timeout in seconds for the longpress event.
-             This option will change how long it takes to send an event "longpressed"
-             after the mouse down signal is sent to the list. If this event occurs, no
-             "clicked" event will be sent.
-             @warning If you set the longpress timeout value with this API, your genlist
-             will not be affected by the longpress value of elementary config value
-             later.
+             [[Set the timeout in seconds for the longpress event.
  
-             @see elm_genlist_longpress_timeout_set()
+               This option will change how long it takes to send an event
+               "longpressed" after the mouse down signal is sent to the list.
+               If this event occurs, no "clicked" event will be sent.
  
-             @ingroup Genlist */
+               Warning: If you set the longpress timeout value with this API,
+               your genlist will not be affected by the longpress value of
+               elementary config value later.
+             ]]
           }
           get {
-             /*@
-             Get the timeout in seconds for the longpress event.
-             @return timeout in seconds
-             @see elm_genlist_longpress_timeout_get()
-             @ingroup Genlist */
+             [[Get the timeout in seconds for the longpress event.]]
           }
           values {
-             double timeout; /*@ timeout in seconds. Default is elm config value(1.0) */
+             timeout: double; [[Timeout in seconds. Default is elm config value (1.0).]]
           }
        }
-       multi_select {
+       @property multi_select {
           set {
-             /*@
-             Enable or disable multi-selection in the genlist
+             [[Enable or disable multi-selection in the genlist.
  
-             This enables (@c EINA_TRUE) or disables (@c EINA_FALSE) multi-selection in
-             the list. This allows more than 1 item to be selected. To retrieve the list
-             of selected items, use elm_genlist_selected_items_get().
-             @see elm_genlist_selected_items_get()
-             @see elm_genlist_multi_select_get()
-             @ingroup Genlist */
+               This enables ($true) or disables ($false) multi-selection in
+               the list. This allows more than 1 item to be selected. To
+               retrieve the list of selected items, use @.selected_items.get.
+             ]]
           }
           get {
-             /*@
-             Get if multi-selection in genlist is enabled or disabled.
-             @return Multi-select enabled/disabled
-             (@c EINA_TRUE = enabled/@c EINA_FALSE = disabled). Default is @c EINA_FALSE.
-             @see elm_genlist_multi_select_set()
-             @ingroup Genlist */
+             [[Get if multi-selection in genlist is enabled or disabled.]]
           }
           values {
-             bool multi; /*@ Multi-select enable/disable. Default is disabled. */
+             multi: bool; [[Multi-select enable/disable. Default is disabled.]]
           }
        }
-       reorder_mode {
+       @property reorder_mode {
           set {
-             /*@
-             Set reorder mode
-             After turning on the reorder mode, longpress on normal item will trigger
-             reordering of the item. You can move the item up and down. However, reorder
-             does not work with group item.
+             [[Set reorder mode.
  
-             @ingroup Genlist */
+               After turning on the reorder mode, longpress on normal item
+               will trigger reordering of the item. You can move the item
+               up and down. However, reorder does not work with group item.
+             ]]
           }
           get {
-             /*@
-             Get the reorder mode
-             @return The reorder mode
-             (EINA_TRUE = on, EINA_FALSE = off)
-             @ingroup Genlist */
+             [[Get the reorder mode.]]
           }
           values {
-             bool reorder_mode; /*@ The reorder mode
-             (EINA_TRUE = on, EINA_FALSE = off) */
+             reorder_mode: bool; [[The reorder mode.]]
           }
        }
-       decorate_mode {
+       @property decorate_mode {
           set {
-             /*@
-             Set Genlist decorate mode
-             This sets Genlist decorate mode to all items.
+             [[Set Genlist decorate mode.
  
-             @ingroup Genlist */
+               This sets Genlist decorate mode to all items.
+             ]]
           }
           get {
-             /*@
-             Get Genlist decorate mode
-             @return The decorate mode status
-             (EINA_TRUE = decorate mode, EINA_FALSE = normal mode
-             @ingroup Genlist */
+             [[Get Genlist decorate mode.]]
           }
           values {
-             bool decorated; /*@ The decorate mode status
-             (EINA_TRUE = decorate mode, EINA_FALSE = normal mode */
+             decorated: bool; [[The decorate mode status.]]
           }
        }
-       multi_select_mode {
+       @property multi_select_mode {
           set {
-             /*@
-             Set the genlist multi select mode.
+             [[Set the genlist multi select mode.
  
-             - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever each
-             item is clicked.
-             - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only one item will be selected
-             although multi-selection is enabled, if clicked without pressing control
-             key. This mode is only available with multi-selection.
+               #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT means that
+               select/unselect items whenever each item is clicked.
+               #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL means that only
+               one item will be selected although multi-selection is enabled,
+               if clicked without pressing control key. This mode is only
+               available with multi-selection.
  
-             @see elm_genlist_multi_select_set()
-             @see elm_genlist_multi_select_mode_get()
-             @ingroup Genlist
-             @since 1.8 */
+               @since 1.8
+             ]]
           }
           get {
-             /*@
-             Get the genlist multi select mode.
-             @return The multi select mode
-             (If getting mode fails, it returns #ELM_OBJECT_MULTI_SELECT_MODE_MAX)
-             @see elm_genlist_multi_select_set()
-             @see elm_genlist_multi_select_mode_set()
+             [[Get the genlist multi select mode.
  
-             @ingroup Genlist
-             @since 1.8 */
+               @since 1.8
+             ]]
           }
           values {
++<<<<<<< HEAD
 +            Elm_Object_Multi_Select_Mode mode(2); /*@ The multi select mode */
++=======
+             mode: Elm.Object.Multi_Select_Mode(Elm.Object.Multi_Select_Mode.max); [[The multi select mode]]
++>>>>>>> opensource/master
           }
        }
-       block_count {
+       @property block_count {
           set {
-             /*@
-             Set the maximum number of items within an item block
+             [[Set the maximum number of items within an item block.
  
-             This will configure the block count to tune to the target with particular
-             performance matrix.
+               This will configure the block count to tune to the target
+               with particular performance matrix.
  
-             A block of objects will be used to reduce the number of operations due to
-             many objects in the screen. It can determine the visibility, or if the
-             object has changed, it theme needs to be updated, etc. doing this kind of
-             calculation to the entire block, instead of per object.
+               A block of objects will be used to reduce the number of
+               operations due to many objects in the screen. It can
+               determine the visibility, or if the object has changed,
+               it theme needs to be updated, etc. doing this kind of
+               calculation to the entire block, instead of per object.
  
-             The default value for the block count is enough for most lists, so unless
-             you know you will have a lot of objects visible in the screen at the same
-             time, don't try to change this.
-             @see elm_genlist_block_count_get()
-             @see @ref Genlist_Implementation
-             @ingroup Genlist */
+               The default value for the block count is enough for most
+               lists, so unless you know you will have a lot of objects
+               visible in the screen at the same time, don't try to
+               change this.
+             ]]
           }
           get {
-             /*@
-             Get the maximum number of items within an item block
-             @return Maximum number of items within an item block
-             @see elm_genlist_block_count_set()
-             @ingroup Genlist */
+             [[Get the maximum number of items within an item block.]]
           }
           values {
-             int count; /*@ Maximum number of items within an item block. Default is 32. */
+             count: int; [[Maximum number of items within an item block. Default is 32.]]
           }
        }
-       tree_effect_enabled {
-          set {
-             /*@
-             Set Genlist tree effect
-             @ingroup Genlist */
-          }
-          get {
-             /*@
-             Get Genlist tree effect
-             @return The tree effect status
-             (EINA_TRUE = enabled, EINA_FALSE = disabled
-             @ingroup Genlist */
-          }
+       @property tree_effect_enabled {
+          [[Control genlist tree effect.]]
+          set {}
+          get {}
           values {
-             bool enabled; /*@ The tree effect status
-             (EINA_TRUE = enabled, EINA_FALSE = disabled */
+             enabled: bool; [[The tree effect status.]]
           }
        }
-       highlight_mode {
+       @property highlight_mode {
           set {
-             /*@
-             Set whether the genlist items should be highlighted on item selection.
-             This will turn on/off the highlight effect on item selection. The selected
-             and clicked callback functions will still be called.
-             Highlight is enabled by default.
+             [[Set whether the genlist items should be highlighted on item
+               selection.
  
-             @see elm_genlist_highlight_mode_get().
+               This will turn on/off the highlight effect on item selection.
+               The selected and clicked callback functions will still be
+               called.
  
-             @ingroup Genlist */
+               Highlight is enabled by default.
+             ]]
           }
           get {
-             /*@
-             Get whether the genlist items' should be highlighted when item selected.
-             @return @c EINA_TRUE means items can be highlighted. @c EINA_FALSE indicates
-             they can't. If @p obj is @c NULL, @c EINA_FALSE is returned.
-             @see elm_genlist_highlight_mode_set() for details.
-             @ingroup Genlist */
+             [[Get whether the genlist items' should be highlighted when
+               item selected.
+             ]]
           }
           values {
-             bool highlight; /*@ @c EINA_TRUE to enable highlighting or @c EINA_FALSE to
-             disable it. */
+             highlight: bool; [[$true to enable highlighting or $false to
+                                disable it.]]
           }
        }
-       mode {
+       @property mode {
           set {
-             /*@
-             This sets the horizontal stretching mode.
-             This sets the mode used for sizing items horizontally. Valid modes
-             are #ELM_LIST_LIMIT, #ELM_LIST_SCROLL, and #ELM_LIST_COMPRESS. The default is
-             #ELM_LIST_SCROLL. This mode means that if items are too wide to fit,
-             the scroller will scroll horizontally. Otherwise items are expanded
-             to fill the width of the viewport of the scroller. If it is
-             #ELM_LIST_LIMIT, items will be expanded to the viewport width and
-             limited to that size. If it is #ELM_LIST_COMPRESS, the item width will be
-             fixed (restricted to a minimum of) to the list width when calculating its
-             size in order to allow the height to be calculated based on it. This allows,
-             for instance, text block to wrap lines if the Edje part is configured with
-             "text.min: 0 1".
-             @note #ELM_LIST_COMPRESS will make list resize slower as it will have to
-             recalculate every item height again whenever the list width
-             changes!
-             @note Homogeneous mode is for that all items in the genlist same
-             width/height. With #ELM_LIST_COMPRESS, it makes genlist items to fast
-             initializing. However there's no sub-objects in genlist which can be
-             on the flying resizable (such as TEXTBLOCK). If then, some dynamic
-             resizable objects in genlist would not diplayed properly.
-             @see elm_genlist_mode_get()
-             @ingroup Genlist */
+             [[This sets the horizontal stretching mode.
+               This sets the mode used for sizing items horizontally. Valid
+               modes are #ELM_LIST_LIMIT, #ELM_LIST_SCROLL, and
+               #ELM_LIST_COMPRESS. The default is #ELM_LIST_SCROLL. This mode
+               means that if items are too wide to fit, the scroller will
+               scroll horizontally. Otherwise items are expanded to fill
+               the width of the viewport of the scroller. If it is
+               #ELM_LIST_LIMIT, items will be expanded to the viewport width
+               and limited to that size. If it is #ELM_LIST_COMPRESS, the
+               item width will be fixed (restricted to a minimum of) to the
+               list width when calculating its size in order to allow the
+               height to be calculated based on it. This allows, for
+               instance, text block to wrap lines if the Edje part is
+               configured with "text.min: 0 1".
+               Note: #ELM_LIST_COMPRESS will make list resize slower as it
+               will have to recalculate every item height again whenever
+               the list width changes!
+               Note: Homogeneous mode is for that all items in the genlist
+               same width/height. With #ELM_LIST_COMPRESS, it makes genlist
+               items to fast initializing. However there's no sub-objects
+               in genlist which can be on the flying resizable (such as
+               TEXTBLOCK). If then, some dynamic esizable objects in
+               genlist would not diplayed properly.
+             ]]
           }
           get {
-             /*@
-             Get the horizontal stretching mode.
-             @return The mode to use
-             (#ELM_LIST_LIMIT, #ELM_LIST_SCROLL)
-             @see elm_genlist_mode_set()
-             @ingroup Genlist */
+             [[Get the horizontal stretching mode.]]
           }
           values {
++<<<<<<< HEAD
 +            Elm_List_Mode mode(4); /*@ The mode to use (one of #ELM_LIST_SCROLL or #ELM_LIST_LIMIT). */
++=======
+             mode: Elm_List_Mode(4); [[The mode to use (one of #ELM_LIST_SCROLL or #ELM_LIST_LIMIT).]]
++>>>>>>> opensource/master
           }
        }
-       decorated_item {
+       @property decorated_item {
           get {
-             /*@
-             Get active genlist mode item
+             [[Get active genlist mode item.
  
-             @return The active item for that current mode. Or @c NULL if no item is
-             activated with any mode.
-             This function returns the item that was activated with a mode, by the
-             function elm_genlist_item_decorate_mode_set().
-             @see elm_genlist_item_decorate_mode_set()
-             @see elm_genlist_mode_get()
-             @ingroup Genlist */
-             return: Elm_Object_Item *;
+               This function returns the item that was activated with a mode,
+               by the function @.decorate_mode.set.
+             ]]
+             return: Elm.Widget_Item *; [[The active item for that current mode.
+                                          Or $null if no item is activated with any mode.]]
           }
        }
-       selected_item {
+       @property selected_item {
           get {
-             /*@
-             Get the selected item in the genlist.
-             @return The selected item, or NULL if none is selected.
+             [[Get the selected item in the genlist.
  
-             This gets the selected item in the list (if multi-selection is enabled, only
-             the item that was first selected in the list is returned - which is not very
-             useful, so see elm_genlist_selected_items_get() for when multi-selection is
-             used).
+               This gets the selected item in the list (if multi-selection
+               is enabled, only the item that was first selected in the list
+               is returned - which is not very useful, so see
+               @.selected_items.get for when multi-selection is used).
  
-             If no item is selected, NULL is returned.
-             @see elm_genlist_selected_items_get()
-             @ingroup Genlist */
-             return: Elm_Object_Item *;
+               If no item is selected, $null is returned.
+             ]]
+             return: Elm.Widget_Item *; [[The selected item, or $null if none is selected.]]
           }
        }
-       first_item {
+       @property first_item {
           get {
-             /*@
-             Get the first item in the genlist
-             This returns the first item in the list.
+             [[Get the first item in the genlist.
  
-             @return The first item, or NULL if none
-             @ingroup Genlist */
-             return: Elm_Object_Item *;
+               This returns the first item in the list.
+             ]]
+             return: Elm.Widget_Item *; [[The first item or $null.]]
           }
        }
-       realized_items {
+       @property realized_items {
           get {
-             /*@
-             Get a list of realized items in genlist
-             @return The list of realized items, nor NULL if none are realized.
-             This returns a list of the realized items in the genlist. The list
-             contains genlist item pointers. The list must be freed by the
-             caller when done with eina_list_free(). The item pointers in the
-             list are only valid so long as those items are not deleted or the
-             genlist is not deleted.
-             @see elm_genlist_realized_items_update()
+             [[Get a list of realized items in genlist.
  
-             @ingroup Genlist */
-             return: list *;
+               This returns a list of the realized items in the genlist.
+               The list contains genlist item pointers. The list must be
+               freed by the caller when done with \@ref eina_list_free. The 
+               item pointers in the list are only valid so long as those
+               items are not deleted or the genlist is not deleted.
+             ]]
+             return: free(own(list<Elm_Gen_Item *> *), eina_list_free) @warn_unused;
           }
        }
-       selected_items {
+       @property selected_items {
           get {
-             /*@
-             Get a list of selected items in the genlist.
-             @return The list of selected items, or NULL if none are selected.
-             It returns a list of the selected items. This list pointer is only valid so
-             long as the selection doesn't change (no items are selected or unselected, or
-             unselected implicitly by deletion). The list contains genlist items
-             pointers. The order of the items in this list is the order which they were
-             selected, i.e. the first item in this list is the first item that was
-             selected, and so on.
-             @note If not in multi-select mode, consider using function
-             elm_genlist_selected_item_get() instead.
+             [[Get a list of selected items in the genlist.
  
-             @see elm_genlist_multi_select_set()
-             @see elm_genlist_selected_item_get()
+               It returns a list of the selected items. This list pointer
+               is only valid so long as the selection doesn't change (no
+               items are selected or unselected, or unselected implicitl
+               by deletion). The list contains genlist items pointers. The
+               order of the items in this list is the order which they were
+               selected, i.e. the first item in this list is the first item
+               that was selected, and so on.
  
-             @ingroup Genlist */
-             return: const(list)*;
+               Note: If not in multi-select mode, consider using function
+               @.selected_item.get instead.
+             ]]
+             return: const(list<Elm.Widget_Item *>)*;
           }
        }
-       last_item {
+       @property last_item {
           get {
-             /*@
-             Get the last item in the genlist
+             [[Get the last item in the genlist
  
-             This returns the last item in the list.
-             @return The last item, or NULL if none
-             @ingroup Genlist */
-             return: Elm_Object_Item *;
+               This returns the last item in the list.
+             ]]
+             return: Elm.Widget_Item *;
           }
        }
-    }
-    methods {
        item_insert_before {
-          /*@
-          Insert an item before another in a genlist widget
-          @return A handle to the item added or @c NULL if not possible
-          This inserts an item before another in the list. It will be in the
-          same tree level or group as the item it is inserted before.
-          @see elm_genlist_item_append()
-          @see elm_genlist_item_prepend()
-          @see elm_genlist_item_insert_after()
-          @see elm_object_item_del()
+          [[Insert an item before another in a genlist widget
  
-          @ingroup Genlist */
-          return: Elm_Object_Item *;
+            This inserts an item before another in the list. It will be in
+            the same tree level or group as the item it is inserted before.
+          ]]
+          return: Elm.Widget_Item *;
           params {
-             @in const(Elm_Genlist_Item_Class)* itc; /*@ The item class for the item */
-             @in const(void)* data; /*@ The item data */
-             @in Elm_Object_Item *parent; /*@ The parent item, or NULL if none */
-             @in Elm_Object_Item *before_it; /*@ The item to place this new one before. */
-             @in Elm_Genlist_Item_Type type; /*@ Item type */
-             @in Evas_Smart_Cb func; /*@ Convenience function called when the item is selected */
-             @in const(void)* func_data; /*@ Data passed to @p func above. */
+             @in itc: const(Elm_Genlist_Item_Class)*; [[The item class for the item.]]
+             @in data: const(void)*; [[The item data.]]
+             @in parent: Elm.Widget_Item * @nullable; [[The parent item, or $null if none.]]
+             @in before_it: Elm.Widget_Item *; [[The item to place this new one before.]]
+             @in type: Elm_Genlist_Item_Type; [[Item type.]]
+             @in func: Evas_Smart_Cb @optional; [[Convenience function called when the item is selected.]]
+             @in func_data: const(void)* @optional; [[Data passed to $func above.]]
           }
        }
        realized_items_update {
index c3d3b2abb0f4cda64eccddfd4817779d6554f1dd,ef35ded795780f8c80e0d3c75930c4af6a20d98d..6e6ad4797d3b13adead12cbc0b3ad590fa2a2db3
@@@ -2,293 -39,221 +39,239 @@@ class Elm.Genlist_Item(Elm.Widget_Item
  {
        eo_prefix: elm_obj_genlist_item;
        data: Elm_Gen_Item;
-       properties {
-            prev {
+       methods {
+            @property prev {
                  get {
-                      /*@
-                       Get the @b previous item in a genlist widget's internal list of items,
-                       given a handle to one of those items.
-                       This returns the item placed before the @p item, on the container
-                       genlist.
-                       @see elm_genlist_item_next_get()
+                      [[Get the previous item in a genlist widget's internal
+                        list of items, given a handle to one of those items.
  
-                       @ingroup Genlist
-                       */
+                        This returns the item placed before the $item, on
+                        the container genlist.
+                      ]]
                  }
                  values {
-                      Elm_Object_Item *item; /*@ @return The item before @p item, or @c NULL if there's none (and on errors) */
+                      item: Elm.Widget_Item *; [[The item before $item, or $null if there's none (and on errors).]]
                  }
             }
-            next {
+            @property next {
                  get {
-                      /*@
-                       Get the @b next item in a genlist widget's internal list of items,
-                       given a handle to one of those items.
-                       This returns the item placed after the @p item, on the container
-                       genlist.
-                       @see elm_genlist_item_prev_get()
+                      [[Get the next item in a genlist widget's internal lis
+                        of items, given a handle to one of those items.
  
-                       @ingroup Genlist
-                       */
+                        This returns the item placed after the $item, on
+                        the container genlist.
+                      ]]
                  }
                  values {
-                      Elm_Object_Item *item; /*@ @return The item after @p item, or @c NULL if there's none (and on errors) */
+                      item: Elm.Widget_Item *; [[The item after $item, or $null if there's none (and on errors).]]
                  }
             }
-            parent {
+            @property parent {
                  get {
-                      /*@
-                       Get the parent item of the given item
-                       This returns the item that was specified as parent of the item @p it on
-                       elm_genlist_item_append() and insertion related functions.
+                      [[Get the parent item of the given item
  
-                       @ingroup Genlist
-                       */
+                        This returns the item that was specified as parent
+                        of the item $it on \@ref elm_genlist_item_append
+                        and insertion related functions.
+                      ]]
                  }
                  values {
-                      Elm_Object_Item *item; /*@ @return The parent of the item or @c NULL if it has no parent. */
+                      item: Elm.Widget_Item *; [[The parent of the item or $null if it has no parent.]]
                  }
             }
-            subitems {
+            @property subitems {
                  get {
-                      /*@
-                       Get the list of subitems of a given item
+                      [[et the list of subitems of a given item
  
-                       This returns the list of subitems that an item possesses. It cannot be changed.
+                        This returns the list of subitems that an item
+                        possesses. It cannot be changed.
  
-                       @since 1.9
-                       @ingroup Genlist
-                       */
+                        @since 1.9
+                      ]]
                  }
                  values {
-                      const (Eina_List) *subitems; /*@ @return The list of subitems, @c NULL on error */
+                      subitems: const (list<Elm.Widget_Item *>) *; [[The list of subitems, $null on error.]]
                  }
             }
-            selected {
+            @property selected {
                  get {
-                      /*@
-                       Get whether a given genlist item is selected or not
-                       @return @c EINA_TRUE, if it's selected, @c EINA_FALSE otherwise
-                       @see elm_genlist_item_selected_set() for more details
-                       @ingroup Genlist
-                       */
+                      [[Get whether a given genlist item is selected or not.]]
                  }
                  set {
-                      /*@
-                       Set whether a given genlist item is selected or not
-                       Use @c EINA_TRUE, to make it selected, @c EINA_FALSE to make it unselected
+                      [[Set whether a given genlist item is selected or not
  
-                       This sets the selected state of an item. If multi selection is
-                       not enabled on the containing genlist and @p selected is @c
-                       EINA_TRUE, any other previously selected items will get
-                       unselected in favor of this new one.
-                       @see elm_genlist_item_selected_get()
-                       @ingroup Genlist
-                       */
+                       This sets the selected state of an item. If multi
+                       selection is not enabled on the containing genlist
+                       and $selected is $true, any other previously selected
+                       items will get unselected in favor of this new one.
+                      ]]
                  }
                  values {
-                      Eina_Bool selected; /*@ the selected state (@c EINA_TRUE selected, @c EINA_FALSE not selected) */
+                      selected: bool; [[The selected state ($true selected, $false not selected).]]
                  }
             }
-            expanded {
+            @property expanded {
                  get {
-                      /*@
-                       Get the expanded state of an item
-                       This gets the expanded state of an item.
-                       @see elm_genlist_item_expanded_set()
+                      [[Get the expanded state of an item
  
-                       @ingroup Genlist
-                       */
+                        This gets the expanded state of an item.
+                      ]]
                  }
                  set {
-                      /*@
-                       Sets the expanded state of an item.
-                       This function flags the item of type #ELM_GENLIST_ITEM_TREE as
-                       expanded or not.
+                      [[Sets the expanded state of an item.
  
-                       The theme will respond to this change visually, and a signal "expanded" or
-                       "contracted" will be sent from the genlist with a pointer to the item that
-                       has been expanded/contracted.
+                        This function flags the item of type
+                        #ELM_GENLIST_ITEM_TREE as expanded or not.
  
-                       Calling this function won't show or hide any child of this item (if it is
-                       a parent). You must manually delete and create them on the callbacks of
-                       the "expanded" or "contracted" signals.
+                        The theme will respond to this change visually, and
+                        a signal "expanded" or "contracted" will be sent
+                        from the genlist with a pointer to the item that
+                        has been expanded/contracted.
  
-                       @see elm_genlist_item_expanded_get()
-                       @ingroup Genlist
-                       */
+                        Calling this function won't show or hide any child
+                        of this item (if it is a parent). You must manually
+                        delete and create them on the callbacks of
+                        the "expanded" or "contracted" signals.
+                      ]]
                  }
                  values {
-                      Eina_Bool expanded; /*@ The expanded state (@c EINA_TRUE expanded, @c EINA_FALSE not expanded). */
+                      expanded: bool; [[The expanded state ($true expanded, $false not expanded).]]
                  }
             }
-            expanded_depth {
+            @property expanded_depth {
                  get {
-                      /*@
-                       Get the depth of expanded item
-                       @ingroup Genlist
-                       */
+                      [[Get the depth of expanded item.]]
                  }
                  values {
-                      int depth; /*@ @return The depth of expanded item */
+                      depth: int; [[The depth of expanded item.]]
                  }
             }
-            item_class {
+            @property item_class {
                  get {
-                      /*@
-                       Get the Genlist Item class for the given Genlist Item.
+                      [[Get the Genlist Item class for the given Genlist Item.
  
-                       This returns the Genlist_Item_Class for the given item. It can be used to
-                       examine the function pointers and item_style.
-                       @ingroup Genlist
-                       */
+                        This returns the Genlist_Item_Class for the given item.
+                        It can be used to examine the function pointers and
+                        item_style.
+                      ]]
                  }
                  values {
-                      const (Elm_Genlist_Item_Class) *itc; /*@ Genlist Item class for the given item */
+                      itc: const (Elm_Genlist_Item_Class) *; [[Genlist Item class for the given item.]]
                  }
             }
-            index {
+            @property index {
                  get {
-                      /*@
-                       Get the index of the item. It is only valid once displayed.
+                      [[Get the index of the item. It is only valid once displayed.
  
++<<<<<<< HEAD
 +                      The index start from 1.
 +
 +                      @ingroup Genlist
 +                      */
 +                }
 +                values {
 +                     int index(-1); /*@ @return the position inside the list of item. */
++=======
+                        The index start from 1.
+                      ]]
+                 }
+                 values {
+                      index: int(-1); [[The position inside the list of item.]]
++>>>>>>> opensource/master
                  }
             }
-            decorate_mode {
+            @property decorate_mode {
                  get {
-                      /*@
-                       Get the item's decorate mode.
-                       This function just returns the name of the item's decorate mode.
+                      [[Get the item's decorate mode.
  
-                       @see elm_genlist_item_decorate_mode_set()
-                       @see elm_genlist_decorated_item_get()
-                       @ingroup Genlist
-                       */
+                        This function just returns the name of the item's
+                        decorate mode.
+                      ]]
                  }
                  values {
-                      const(char)* decorate_it_type; /*@ name of the item's decorate mode. */
+                      decorate_it_type: const(char)*; [[Name of the item's decorate mode.]]
                  }
             }
-            flip {
+            @property flip {
                  get {
-                      /*@
-                       Get the flip state of a given genlist item.
-                       This function returns the flip state of a given genlist item.
-                       If the parameter is invalid, it returns @c EINA_FALSE.
+                      [[Get the flip state of a given genlist item.
  
-                       @see elm_genlist_item_flip_set()
-                       @ingroup Genlist
-                       */
+                        This function returns the flip state of a given
+                        genlist item. If the parameter is invalid, it
+                        returns $false.
+                      ]]
                  }
                  set {
-                      /*@
-                       Set the flip state of a given genlist item.
+                      [[Set the flip state of a given genlist item.
  
-                       (@c EINA_TRUE = on, @c EINA_FALSE = off)
-                       This function sets the flip state of a given genlist item.
-                       Flip mode overrides current item object.
-                       It can be used for on-the-fly item replace.
-                       Flip mode can be used with/without decorate mode.
-                       @see elm_genlist_item_flip_get()
-                       @ingroup Genlist
-                       */
+                        This function sets the flip state of a given genlist
+                        item. Flip mode overrides current item object.
+                        It can be used for on-the-fly item replace.
+                        Flip mode can be used with/without decorate mode.
+                      ]]
                  }
                  values {
-                      Eina_Bool flip; /*@ The flip mode */
+                      flip: bool; [[The flip mode.]]
                  }
             }
-            select_mode {
+            @property select_mode {
                  get {
-                      /*@
-                       Get the genlist item's select mode.
-                       @return The select mode
-                       (If getting mode fails, it returns ELM_OBJECT_SELECT_MODE_MAX)
-                       @see elm_genlist_item_select_mode_set()
-                       @ingroup Genlist
-                       */
+                      [[Get the genlist item's select mode.
+  
+                        It's ELM_OBJECT_SELECT_MODE_MAX on failure.
+                      ]]
                  }
                  set {
-                      /*@
-                       Set the genlist item's select mode.
-                       elm_genlist_select_mode_set() changes item's select mode.
-                       - ELM_OBJECT_SELECT_MODE_DEFAULT : The item will only call their selection func and
-                            callback when first becoming selected. Any further clicks will
-                            do nothing, unless you set always select mode.
-                       - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
-                            every click will make the selected callbacks be called.
-                       - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select the item
-                            entirely and they will neither appear selected nor call selected
-                            callback functions.
-                       - ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY : This will apply no-finger-size rule
-                            with ELM_OBJECT_SELECT_MODE_NONE. No-finger-size rule makes an item can be
-                            smaller than lower limit. Clickable objects should be bigger than
-                            human touch point device (your finger) for some touch or
-                            small screen devices. So it is enabled, the item can be shrink than
-                            predefined finger-size value. And the item will be updated.
-                       @see elm_genlist_item_select_mode_get()
-                       @ingroup Genlist
-                       */
+                      [[Set the genlist item's select mode.
+                        ELM_OBJECT_SELECT_MODE_DEFAULT means that the item
+                        will only call their selection func and callback
+                        when first becoming selected. Any further clicks will
+                        do nothing, unless you set always select mode.
+                        ELM_OBJECT_SELECT_MODE_ALWAYS means that even if
+                        selected, every click will make the selected
+                        callbacks be called.
+                        ELM_OBJECT_SELECT_MODE_NONE will turn off the ability
+                        to select the item entirely and they will neither
+                        appear selected nor call selected callback functions.
+                        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY will apply
+                        no-finger-size rule with ELM_OBJECT_SELECT_MODE_NONE.
+                        No-finger-size rule makes an item can be smaller
+                        than lower limit. Clickable objects should be bigger
+                        than human touch point device (your finger) for
+                        some touch or small screen devices. So it is
+                        enabled, the item can be shrink than predefined
+                        finger-size value. And the item will be updated.
+                      ]]
                  }
                  values {
++<<<<<<< HEAD
 +                     Elm_Object_Select_Mode mode(4); /*@ The selected mode */
++=======
+                      mode: Elm.Object.Select_Mode(Elm.Object.Select_Mode.max); [[The selected mode.]]
++>>>>>>> opensource/master
                  }
             }
-            type {
+            @property type {
                  get {
-                      /*@
-                       Get the Item's Type
+                      [[Get the Item's type.
  
-                       @return The item type.
-                       This function returns the item's type. Normally the item's type.
-                       If it failed, return value is ELM_GENLIST_ITEM_MAX
-                       @ingroup Genlist
-                       */
+                        This function returns the item's type. Normally the
+                        item's type. If it failed, return value is
+                        ELM_GENLIST_ITEM_MAX.
+                      ]]
                  }
                  values {
++<<<<<<< HEAD
 +                     Elm_Genlist_Item_Type type(4); /*@ Item tupe */
++=======
+                      type: Elm.Genlist.Item.Type(Elm.Genlist.Item.Type.max); [[Item type.]]
++>>>>>>> opensource/master
                  }
             }
-       }
-       methods {
             /*      init { FIXME
                     params {
                     Evas_Smart_Cb func;
        }
        implements {
             Eo.Base.constructor;
++<<<<<<< HEAD
 +           Elm_Widget_Item.del_pre;
 +           Elm_Widget_Item.disable;
 +           Elm_Widget_Item.signal_emit;
 +           Elm_Widget_Item.focus.set;
 +           Elm_Widget_Item.focus.get;
 +           Elm_Widget_Item.part_text.get;
 +           Elm_Widget_Item.part_content.get;
 +           Elm_Widget_Item.tooltip_text_set;
 +           Elm_Widget_Item.tooltip_style.set;
 +           Elm_Widget_Item.tooltip_style.get;
 +           Elm_Widget_Item.tooltip_window_mode.set;
 +           Elm_Widget_Item.tooltip_content_cb_set;
 +           Elm_Widget_Item.tooltip_unset;
 +           Elm_Widget_Item.cursor.set;
 +           Elm_Widget_Item.cursor_unset;
++=======
+            Elm.Widget_Item.del_pre;
+            Elm.Widget_Item.disable;
+            Elm.Widget_Item.signal_emit;
+            Elm.Widget_Item.focus.set;
+            Elm.Widget_Item.focus.get;
+            Elm.Widget_Item.part_text.get;
+            Elm.Widget_Item.part_content.get;
+            Elm.Widget_Item.tooltip_text_set;
+            Elm.Widget_Item.tooltip_style.set;
+            Elm.Widget_Item.tooltip_style.get;
+            Elm.Widget_Item.tooltip_window_mode.set;
+            Elm.Widget_Item.tooltip_window_mode.get;
+            Elm.Widget_Item.tooltip_content_cb_set;
+            Elm.Widget_Item.tooltip_unset;
+            Elm.Widget_Item.cursor.set;
+            Elm.Widget_Item.cursor_unset;
++>>>>>>> opensource/master
             Elm_Interface_Atspi_Accessible.name.get;
             Elm_Interface_Atspi_Accessible.state_set.get;
             Elm_Interface_Atspi_Accessible.children.get;
index 36e0cc042aab6f9e1a76224b2f16be9118dd3168,0c0a213fcd0a97ea007441c701d0c671a80ff4c5..6981eb644ec170da99a54aba5e13c1c3a7dbcec8
@@@ -195,25 -215,36 +215,44 @@@ _elm_interface_atspi_accessible_role_na
  }
  
  EOLIAN char *
++<<<<<<< HEAD
 +_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED)
++=======
+ _elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd)
++>>>>>>> opensource/master
  {
-    WRN("The %s object does not implement the \"accessible_name_get\" function.",
-        eo_class_name_get(eo_class_get(obj)));
+    if (pd->name)
+      {
+ #ifdef ENABLE_NLS
+         if (pd->translation_domain)
+           return strdup(dgettext(pd->translation_domain, pd->name));
+         else
+           return strdup(pd->name);
+ #else
+         return strdup(pd->name);
+ #endif
+      }
     return NULL;
  }
  
  EOLIAN static void
++<<<<<<< HEAD
 +_elm_interface_atspi_accessible_name_set(Eo *obj, void *pd EINA_UNUSED, char *val EINA_UNUSED)
++=======
+ _elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd, char *val)
++>>>>>>> opensource/master
  {
-    WRN("The %s object does not implement the \"accessible_name_set\" function.",
-        eo_class_name_get(eo_class_get(obj)));
+    eina_stringshare_replace(&pd->name, val);
  }
  
- const char * _elm_interface_atspi_accessible_description_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED)
+ const char * _elm_interface_atspi_accessible_description_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd)
  {
-    WRN("The %s object does not implement the \"accessible_description_get\" function.",
-        eo_class_name_get(eo_class_get(obj)));
-    return NULL;
+ #ifdef ENABLE_NLS
+    if (pd->translation_domain)
+       return dgettext(pd->translation_domain, pd->description);
+ #endif
+    return pd->description;
  }
  
  EOLIAN static void
index d277e3ada12e5e1ca9f8db78a5bbe82158f8ea3e,65485cd4ca52d83e9e4954d206bb3908cfcd5256..9ff6682cb30aecf3f6652df0269cc9f297f4f3ea
@@@ -2,39 -2,37 +2,46 @@@ mixin Elm_Interface_Atspi_Accessible (
  {
     legacy_prefix: null;
     eo_prefix: elm_interface_atspi_accessible;
-    data: null;
-    properties {
-       localized_role_name @protected {
+    data: Elm_Interface_Atspi_Accessible_Data;
+    methods {
+       @property localized_role_name @protected {
           get {
-             /*@ Gets an localized string describing ATSPI widget role name. */
+             [[Gets an localized string describing ATSPI widget role name.]]
           }
           values {
-             const(char)* localized_name;
+             localized_name: const(char)*;
           }
        }
-       name @protected {
+       @property name @protected {
           get {
++<<<<<<< HEAD
 +            /*@ Gets an string describing ATSPI widget role name. 
 +                Should be free by a user. */
++=======
+             [[Gets an string describing ATSPI widget role name.  Should be free by a user.]]
++>>>>>>> opensource/master
           }
           set {
           }
           values {
++<<<<<<< HEAD
 +            char* name; /*@ obj name */
++=======
+             name: char*; [[obj name]]
++>>>>>>> opensource/master
           }
        }
-       relation_set @protected {
+       @property relation_set @protected {
           get {
-             /*@ Gets an string describing ATSPI widget role name. Lists and
-             elements Should be free by a user. */
+             [[Gets an string describing ATSPI widget role name. Lists and elements Should be free by a user.]]
           }
           values {
-             list *relations;
+             relations: Elm_Atspi_Relation_Set;
           }
        }
-       role @protected {
+       @property role @protected {
           get {
-             /*@ Gets the role of the widget in ATSPI Accessibility domain. */
+             [[Gets the role of the widget in ATSPI Accessibility domain.]]
           }
           set {
           }
index acd152e1bd348b10c9b6cc3dc1a0cef1ebd84f6e,dd3112f7b3ee40723abbc543a01e4ea640e77b39..a7daaf69ec35a5f2eac0f242bf627ce3c989ba77
@@@ -305,7 -348,7 +348,11 @@@ EAPI Elm_Atspi_Relation_Set elm_atspi_r
  #define elm_interface_atspi_accessible_children_changed_added_signal_emit(obj, child) \
     do { \
        Elm_Atspi_Event_Children_Changed_Data atspi_data = { EINA_TRUE, child }; \
++<<<<<<< HEAD
 +      eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, &atspi_data)); \
++=======
+    eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, elm_interface_atspi_accessible_event_emit(obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, &atspi_data)); \
++>>>>>>> opensource/master
     } while(0);
  
  /**
  #define elm_interface_atspi_accessible_children_changed_del_signal_emit(obj, child) \
     do { \
        Elm_Atspi_Event_Children_Changed_Data atspi_data = { EINA_FALSE, child }; \
++<<<<<<< HEAD
 +      eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, &atspi_data)); \
++=======
+       eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, elm_interface_atspi_accessible_event_emit(obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, &atspi_data)); \
++>>>>>>> opensource/master
     } while(0);
  
  /**
index 1a9901692111b9e3f520781b54e4e0083b48dbb7,23d0ebba1e6d355d88ee0cea82409adb942d8482..1ae8e190cdb8f43bfc6c04f350d7f9637feead0b
@@@ -1209,15 -1231,15 +1231,24 @@@ _elm_scroll_wanted_coordinates_update(E
     eo_do(sid->obj, elm_interface_scrollable_content_viewport_geometry_get
           (NULL, NULL, &sid->ww, &sid->wh));
  
++<<<<<<< HEAD
 +   if (x < minx)
++=======
+    if (x < minx && !sid->is_mirrored)
++>>>>>>> opensource/master
       {
          if (!sid->loop_h) sid->wx = minx;
          else sid->wx = mx;
       }
++<<<<<<< HEAD
 +   else if (!sid->loop_h && (x > mx)) sid->wx = mx;
 +   else if (sid->loop_h && x >= (sid->ww + mx)) sid->wx = 0;
++=======
++>>>>>>> opensource/master
     else if (sid->is_mirrored)
       sid->wx = _elm_scroll_x_mirrored_get(sid->obj, x);
+    else if (!sid->loop_h && (x > mx)) sid->wx = mx;
+    else if (sid->loop_h && x >= (sid->ww + mx)) sid->wx = 0;
     else sid->wx = x;
  
     if (y < miny)
@@@ -2027,7 -2121,7 +2130,11 @@@ _elm_scroll_momentum_animator(void *dat
          if (!_elm_config->thumbscroll_bounce_enable || !sid->bounce_vert)
            {
               if (y <= miny) no_bounce_y_end = EINA_TRUE;
++<<<<<<< HEAD
 +             if (sid->loop_v && (y - miny) >= maxy) no_bounce_y_end = EINA_TRUE;
++=======
+              if (!sid->loop_v && (y - miny) >= maxy) no_bounce_y_end = EINA_TRUE;
++>>>>>>> opensource/master
            }
          if ((dt >= 1.0) ||
              ((sid->down.bounce_x_hold) && (sid->down.bounce_y_hold)) ||
@@@ -4332,6 -4460,16 +4473,19 @@@ _elm_interface_scrollable_loop_set(Eo *
  
     sid->loop_h = loop_h;
     sid->loop_v = loop_v;
++<<<<<<< HEAD
++=======
+    if(sid->loop_h)
+      edje_object_signal_emit(sid->edje_obj, "elm,loop_x,set", "elm");
+    else
+      edje_object_signal_emit(sid->edje_obj, "elm,loop_x,unset", "elm");
+    if(sid->loop_v)
+      edje_object_signal_emit(sid->edje_obj, "elm,loop_y,set", "elm");
+    else
+      edje_object_signal_emit(sid->edje_obj, "elm,loop_y,unset", "elm");
++>>>>>>> opensource/master
  }
  
  EOLIAN static void
index 6b6e1ba5e0bf26d438db28596a90157485772d3f,ed00a7aa1c18feec730a14ad062e0441f8d5a855..f45572d9da3285ab0d50cef2a26b93d896144ef4
@@@ -282,425 -239,299 +239,329 @@@ mixin Elm_Interface_Scrollable(Evas.Scr
           get {
           }
           values {
-             Elm_Scroller_Single_Direction single_dir; /*@ The single direction scroll policy */
+             x: Evas.Coord;
+             y: Evas.Coord;
           }
        }
-       step_size {
+       @property loop {
+          [[Controls an infinite loop for a scroller.
+            @since 1.14]]
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             Evas_Coord x;
-             Evas_Coord y;
+             loop_h: bool; [[The scrolling horizontal loop]]
+             loop_v: bool; [[The scrolling vertical loop]]
           }
        }
++<<<<<<< HEAD
 +      loop {
 +         set {
 +            /*@ Sets an infinite loop for a scroller.
 +
 +             This sets an infinite loop for a scroller.
 +
 +             @since 1.14
 +
 +             @ingroup Widget
 +             */
 +         }
 +         get {
 +            /*@ Gets an infinite loop for a scroller.
 +
 +             This gets an infinite loop for a scroller.
 +
 +             @since 1.14
 +
 +             @ingroup Widget
 +             */
 +         }
 +         values {
 +            Eina_Bool loop_h; /*@ The scrolling horizontal loop */
 +            Eina_Bool loop_v; /*@ The scrolling vertical loop */
 +         }
 +      }
 +      scroll_up_cb {
++=======
+       @property scroll_up_cb {
++>>>>>>> opensource/master
           set {
-             /*@ Set the callback to run when the content has been moved up.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the content has been moved up.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb scroll_up_cb; /*@ The callback */
+             scroll_up_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       hbar_drag_cb {
+       @property hbar_drag_cb {
           set {
-             /*@ Set the callback to run when the horizontal scrollbar is dragged.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the horizontal scrollbar is dragged.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb hbar_drag_cb; /*@ The callback */
+             hbar_drag_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       drag_start_cb {
+       @property drag_start_cb {
           set {
-             /*@ Set the callback to run when dragging of the contents has started.
-              @ingroup Widget
-              */
+             [[Set the callback to run when dragging of the contents has started.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb drag_start_cb; /*@ The callback */
+             drag_start_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       freeze {
+       @property freeze {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             bool freeze;
+             freeze: bool;
           }
        }
-       content_viewport_resize_cb {
+       @property content_viewport_resize_cb {
           set {
-             /*@ When the viewport is resized, the callback is called. */
+             [[When the viewport is resized, the callback is called.]]
           }
           values {
-             Elm_Interface_Scrollable_Resize_Cb viewport_resize_cb;
+             viewport_resize_cb: Elm_Interface_Scrollable_Resize_Cb @nullable;
           }
        }
-       scroll_left_cb {
+       @property scroll_left_cb {
           set {
-             /*@ Set the callback to run when the content has been moved to the left
-              @ingroup Widget
-              */
+             [[Set the callback to run when the content has been moved to the left]]
           }
           values {
-             Elm_Interface_Scrollable_Cb scroll_left_cb; /*@ The callback */
+             scroll_left_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       vbar_press_cb {
+       @property vbar_press_cb {
           set {
-             /*@ Set the callback to run when the vertical scrollbar is pressed.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the vertical scrollbar is pressed.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb vbar_press_cb; /*@ The callback */
+             vbar_press_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       hbar_press_cb {
+       @property hbar_press_cb {
           set {
-             /*@ Set the callback to run when the horizontal scrollbar is pressed.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the horizontal scrollbar is pressed.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb hbar_press_cb; /*@ The callback */
+             hbar_press_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       hbar_unpress_cb {
+       @property hbar_unpress_cb {
           set {
-             /*@ Set the callback to run when the horizontal scrollbar is unpressed.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the horizontal scrollbar is unpressed.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb hbar_unpress_cb; /*@ The callback */
+             hbar_unpress_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       drag_stop_cb {
+       @property drag_stop_cb {
           set {
-             /*@ Set the callback to run when dragging of the contents has stopped.
-              *
-              @ingroup Widget
-              */
+             [[Set the callback to run when dragging of the contents has stopped.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb drag_stop_cb; /*@ The callback */
+             drag_stop_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       extern_pan {
+       @property extern_pan {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             Evas_Object *pan;
+             pan: Evas.Object * @nullable;
           }
        }
-       page_change_cb {
+       @property page_change_cb {
           set {
-             /*@ Set the callback to run when the visible page changes.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the visible page changes.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb page_change_cb; /*@ The callback */
+             page_change_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       hold {
+       @property hold {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             bool hold;
+             hold: bool;
           }
        }
-       animate_start_cb {
+       @property animate_start_cb {
           set {
-             /*@ Set the callback to run when the scrolling animation has started.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the scrolling animation has started.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb animate_start_cb; /*@ The callback */
+             animate_start_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       scroll_down_cb {
+       @property scroll_down_cb {
           set {
-             /*@ Set the callback to run when the content has been moved down.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the content has been moved down.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb scroll_down_cb; /*@ The callback */
+             scroll_down_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       page_relative {
+       @property page_relative {
           set {
-             /*@ Set scroll page size relative to viewport size. */
+             [[Set scroll page size relative to viewport size.]]
           }
           values {
-             double h_pagerel;
-             double v_pagerel;
+             h_pagerel: double;
+             v_pagerel: double;
           }
        }
-       scroll_cb {
+       @property scroll_cb {
           set {
-             /*@ Set the callback to run when the content has been moved.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the content has been moved.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb scroll_cb; /*@ The callback */
+             scroll_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       animate_stop_cb {
+       @property animate_stop_cb {
           set {
-             /*@ Set the callback to run when the scrolling animation has stopped.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the scrolling animation has stopped.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb animate_stop_cb; /*@ The callback */
+             animate_stop_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       mirrored {
+       @property mirrored {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             bool mirrored;
+             mirrored: bool;
           }
        }
-       content_min_limit_cb {
+       @property content_min_limit_cb {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             Elm_Interface_Scrollable_Min_Limit_Cb min_limit_cb;
+             min_limit_cb: Elm_Interface_Scrollable_Min_Limit_Cb @nullable;
           }
        }
-       scroll_right_cb {
+       @property scroll_right_cb {
           set {
-             /*@ Set the callback to run when the content has been moved to the right.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the content has been moved to the right.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb scroll_right_cb; /*@ The callback */
+             scroll_right_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       content {
+       @property content {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             Evas_Object *content;
+             content: Evas.Object * @nullable;
           }
        }
-       edge_left_cb {
+       @property edge_left_cb {
           set {
-             /*@ Set the callback to run when the left edge of the content has been reached.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the left edge of the content has been reached.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb edge_left_cb; /*@ The callback */
+             edge_left_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       vbar_drag_cb {
+       @property vbar_drag_cb {
           set {
-             /*@ Set the callback to run when the horizontal scrollbar is dragged.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the horizontal scrollbar is dragged.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb vbar_drag_cb; /*@ The callback */
+             vbar_drag_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       vbar_unpress_cb {
+       @property vbar_unpress_cb {
           set {
-             /*@ Set the callback to run when the horizontal scrollbar is unpressed.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the horizontal scrollbar is unpressed.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb vbar_unpress_cb; /*@ The callback */
+             vbar_unpress_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       edge_bottom_cb {
+       @property edge_bottom_cb {
           set {
-             /*@ Set the callback to run when the bottom edge of the content has been reached.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the bottom edge of the content has been reached.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb edge_bottom_cb; /*@ The callback */
+             edge_bottom_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       edge_right_cb {
+       @property edge_right_cb {
           set {
-             /*@ Set the callback to run when the right edge of the content has been reached.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the right edge of the content has been reached.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb edge_right_cb; /*@ The callback */
+             edge_right_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       edge_top_cb {
+       @property edge_top_cb {
           set {
-             /*@ Set the callback to run when the top edge of the content has been reached.
-              @ingroup Widget
-              */
+             [[Set the callback to run when the top edge of the content has been reached.]]
           }
           values {
-             Elm_Interface_Scrollable_Cb edge_top_cb; /*@ The callback */
+             edge_top_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
           }
        }
-       objects {
+       @property objects {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             Evas_Object *edje_object;
-             Evas_Object *hit_rectangle;
+             edje_object: Evas.Object *;
+             hit_rectangle: Evas.Object *;
           }
        }
-       last_page {
+       @property last_page {
           get {
-             /*@ Get scroll last page number.
-              The page number starts from 0. 0 is the first page.
-              This returns the last page number among the pages.
+             [[Get scroll last page number.
  
-              @see elm_scroller_current_page_get()
-              @see elm_scroller_page_show()
-              @see elm_scroller_page_bring_in()
+               The page number starts from 0. 0 is the first page.
+               This returns the last page number among the pages.
  
-              @ingroup Widget
-              */
+               See: @.current_page, @.page_show and @.page_bring_in.]]
           }
           values {
-             int pagenumber_h; /*@ The horizontal page number */
-             int pagenumber_v; /*@ The vertical page number */
+             pagenumber_h: int; [[The horizontal page number]]
+             pagenumber_v: int; [[The vertical page number]]
           }
        }
-       current_page {
+       @property current_page {
           get {
-             /*@ Get scroll current page number.
-              The page number starts from 0. 0 is the first page.
-              Current page means the page which meets the top-left of the viewport.
-              If there are two or more pages in the viewport, it returns the number of the page
-              which meets the top-left of the viewport.
+             [[Get scroll current page number.
  
-              @see elm_scroller_last_page_get()
-              @see elm_scroller_page_show()
-              @see elm_scroller_page_bring_in()
+               The page number starts from 0. 0 is the first page.
+               Current page means the page which meets the top-left of the viewport.
+               If there are two or more pages in the viewport, it returns the number of the page
+               which meets the top-left of the viewport.
  
-              @ingroup Widget
-              */
+               See: @.last_page, @.page_show and @.page_bring_in.]]
           }
           values {
-             int pagenumber_h; /*@ The horizontal page number */
-             int pagenumber_v; /*@ The vertical page number */
+             pagenumber_h: int; [[The horizontal page number]]
+             pagenumber_v: int; [[The vertical page number]]
           }
        }
-       content_viewport_geometry {
+       @property content_viewport_geometry {
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             Evas_Coord x;
-             Evas_Coord y;
-             Evas_Coord w;
-             Evas_Coord h;
+             x: Evas.Coord;
+             y: Evas.Coord;
+             w: Evas.Coord;
+             h: Evas.Coord;
           }
        }
-       content_size {
+       @property content_size {
           get {
-             /*@ Get the size of the content object
+             [[Get the size of the content object
  
-              This gets the size of the content object of the scroller.
-              @ingroup Scroller
-              */
+               This gets the size of the content object of the scroller.]]
           }
           values {
-             Evas_Coord w; /*@ Width of the content object. */
-             Evas_Coord h; /*@ Height of the content object. */
+             w: Evas.Coord; [[Width of the content object.]]
+             h: Evas.Coord; [[Height of the content object.]]
  
           }
        }
index 61a359ef97e6759f2355ecfcfffeea8fc1e46ac3,78e262f09293f90673d9719cc8be47082404d052..a4c2f9c9f7509a4416efc84100c49eb3e5dfa83b
  #include "elm_interface_atspi_image.eo.h"
  #include "elm_interface_atspi_selection.eo.h"
  #include "elm_interface_atspi_value.eo.h"
++<<<<<<< HEAD
 +#include "elm_interface_atspi_window.eo.h"
++=======
++>>>>>>> opensource/master
  #endif
  #endif
  #ifndef EFL_NOLEGACY_API_SUPPORT
@@@ -22,6 -22,5 +26,9 @@@
  #include "elm_interface_atspi_image.eo.legacy.h"
  #include "elm_interface_atspi_selection.eo.legacy.h"
  #include "elm_interface_atspi_value.eo.legacy.h"
++<<<<<<< HEAD
 +#include "elm_interface_atspi_window.eo.legacy.h"
++=======
++>>>>>>> opensource/master
  #endif
  #endif
index e5847032c342d6d2fdd9a208bdce2204345fb3d7,c16b8fe8c399739b2d58f6beae54cbef28ba84c6..b3cc12d6f8f1f77a36ca3d8265c4713b66de31bc
@@@ -307,6 -307,6 +307,7 @@@ _elm_layout_highlight_in_theme(Evas_Obj
       elm_widget_access_highlight_in_theme_set(obj, EINA_FALSE);
  }
  
++<<<<<<< HEAD
  static Eina_Bool
  _visuals_refresh(Evas_Object *obj,
                   Elm_Layout_Smart_Data *sd)
@@@ -351,6 -351,6 +352,47 @@@ _elm_layout_elm_widget_disable(Eo *obj
     return EINA_TRUE;
  }
  
++=======
++>>>>>>> opensource/master
++static Eina_Bool
++_visuals_refresh(Evas_Object *obj,
++                 Elm_Layout_Smart_Data *sd)
++{
++   Eina_Bool ret = EINA_FALSE;
++
++   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
++
++   _parts_swallow_fix(sd, wd);
++   _parts_text_fix(sd);
++   _parts_signals_emit(sd);
++   _parts_cursors_apply(sd);
++
++   ret = _visuals_refresh(obj, sd);
++
++   eo_do(obj, ret = elm_obj_widget_disable());
++
++<<<<<<< HEAD
++=======
++   eo_do(obj, elm_obj_layout_sizing_eval());
++
++   return ret;
++}
++
++EOLIAN static Eina_Bool
++_elm_layout_elm_widget_disable(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED)
++{
++   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
++
++   if (elm_object_disabled_get(obj))
++     edje_object_signal_emit
++       (wd->resize_obj, "elm,state,disabled", "elm");
++   else
++     edje_object_signal_emit
++       (wd->resize_obj, "elm,state,enabled", "elm");
++
++   return EINA_TRUE;
++}
++
  static Eina_Bool
  _elm_layout_theme_internal(Eo *obj, Elm_Layout_Smart_Data *sd)
  {
     ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
  
     /* function already prints error messages, if any */
-    if (!elm_widget_theme_object_set(obj, wd->resize_obj, sd->klass, sd->group,
-                                     elm_widget_style_get(obj)))
-      return EINA_FALSE;
+    if (!sd->file_set)
+      {
+         ret = elm_widget_theme_object_set
+                 (obj, wd->resize_obj, sd->klass, sd->group,
+                  elm_widget_style_get(obj));
+      }
  
-    ret = _visuals_refresh(obj, sd);
+    if (ret)
+      eo_do(obj, eo_event_callback_call(ELM_LAYOUT_EVENT_THEME_CHANGED, NULL));
  
-    evas_object_smart_callback_call(obj, SIG_THEME_CHANGED, NULL);
+    ret = _visuals_refresh(obj, sd) && ret;
  
++>>>>>>> opensource/master
     return ret;
  }
  
index 7d0a87505a0e584517e30d26280a9e708fc4acfb,065caa4e423d45d4f5f4eb4d050254c811b6548d..d1d40f200d3f207e4539225359f4036ef2793de0
@@@ -1159,8 -1161,8 +1161,13 @@@ _elm_list_item_focused(Elm_Object_Item 
     focus_raise = edje_object_data_get(VIEW(it), "focusraise");
     if ((focus_raise) && (!strcmp(focus_raise, "on")))
       evas_object_raise(VIEW(it));
++<<<<<<< HEAD
 +   evas_object_smart_callback_call
 +      (WIDGET(it), SIG_ITEM_FOCUSED, eo_it);
++=======
+    eo_do(WIDGET(it), eo_event_callback_call
+      (ELM_LIST_EVENT_ITEM_FOCUSED, eo_it));
++>>>>>>> opensource/master
     if (_elm_config->atspi_mode)
       elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
  }
@@@ -1187,7 -1189,7 +1194,11 @@@ _elm_list_item_unfocused(Elm_Object_Ite
       }
  
     sd->focused_item = NULL;
++<<<<<<< HEAD
 +   evas_object_smart_callback_call(obj, SIG_ITEM_UNFOCUSED, eo_it);
++=======
+    eo_do(obj, eo_event_callback_call(ELM_LIST_EVENT_ITEM_UNFOCUSED, eo_it));
++>>>>>>> opensource/master
     if (_elm_config->atspi_mode)
       elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
  }
@@@ -2172,8 -2132,13 +2141,18 @@@ _elm_list_item_elm_interface_atspi_acce
     Eina_Bool sel;
  
     eo_do_super(eo_it, ELM_LIST_ITEM_CLASS, ret = elm_interface_atspi_accessible_state_set_get());
++<<<<<<< HEAD
 +   eo_do(eo_it, sel = elm_obj_list_item_selected_get());
 +
++=======
+    if (elm_object_item_disabled_get(eo_it))
+      return ret;
+    STATE_TYPE_SET(ret, ELM_ATSPI_STATE_SELECTABLE);
+    eo_do(eo_it, sel = elm_obj_list_item_selected_get());
++>>>>>>> opensource/master
     if (sel)
       STATE_TYPE_SET(ret, ELM_ATSPI_STATE_SELECTED);
     else
@@@ -2318,12 -2283,14 +2297,17 @@@ _access_widget_item_register(Elm_List_I
       }
  }
  
- EOLIAN static void
+ EOLIAN static Eo *
  _elm_list_item_eo_base_constructor(Eo *eo_it, Elm_List_Item_Data *it)
  {
-    eo_do_super(eo_it, ELM_LIST_ITEM_CLASS, eo_constructor());
+    eo_it = eo_do_super_ret(eo_it, ELM_LIST_ITEM_CLASS, eo_it, eo_constructor());
     it->base = eo_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
     eo_do(eo_it, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_LIST_ITEM));
++<<<<<<< HEAD
++=======
+    return eo_it;
++>>>>>>> opensource/master
  }
  
  static Elm_List_Item_Data *
index 9685ca08735c2cc4c4be779c6ae9c1dc484d9d06,0505e076068a5eafb802aec9a4fe20e2d43658ac..6877f1044b5f850a807b140d0f9a7137f27ed75a
++<<<<<<< HEAD
 +class Elm_List (Elm_Layout, Elm_Interface_Scrollable,
 +                Elm_Interface_Atspi_Widget_Action, Elm_Interface_Atspi_Selection)
 +{
 +   eo_prefix: elm_obj_list;
 +   properties {
 +      horizontal {
 +         set {
 +            /*@
 +            Enable or disable horizontal mode on the list object.
++=======
+ import elm_general;
++>>>>>>> opensource/master
  
-             @note Vertical mode is set by default.
+ enum Elm.List.Mode
+ {
+    [[Set list's resizing behavior, transverse axis scrolling and items
+      cropping. See each mode's description for more details.
+      Note: Default value is @Elm.List.Mode.scroll.
+      Values here don't work as bitmasks -- only one can be chosen at
+      a time.
+      See also @Elm.List.mode.set, @Elm.List.mode.get.
+    ]]
+    legacy: elm_list;
+    compress = 0, [[The list won't set any of its size hints to inform how a
+                    possible container should resize it. Then, if it's not
+                    created as a "resize object", it might end with zeroed
+                    dimensions. The list will respect the container's geometry
+                    and, if any of its items won't fit into its transverse axis,
+                    one won't be able to scroll it in that direction.]]
+    scroll, [[Default value. This is the same as #ELM_LIST_COMPRESS, with the
+              exception that if any of its items won't fit into its transverse
+              axis, one will be able to scroll it in that direction.]]
+    limit, [[Sets a minimum size hint on the list object, so that containers may
+             respect it (and resize itself to fit the child properly). More
+             specifically, a minimum size hint will be set for its transverse
+             axis, so that the largest item in that direction fits well. This
+             is naturally bound by the list object's maximum size hints, set
+             externally.]]
+    expand, [[Besides setting a minimum size on the transverse axis, just like
+              on @Elm.List.Mode.limit, the list will set a minimum size on th
+              longitudinal axis, trying to reserve space to all its children to
+              be visible at a time. . This is naturally bound by the list
+              object's maximum size hints, set externally.]]
+    last [[Indicates error if returned by elm_list_mode_get().]]
+ }
  
-             On horizontal mode items are displayed on list from left to right,
-             instead of from top to bottom. Also, the list will scroll horizontally.
-             Each item will presents left icon on top and right icon, or end, at
-             the bottom.
+ class Elm.List (Elm.Layout, Elm_Interface_Scrollable,
+                 Elm_Interface_Atspi_Widget_Action, Elm_Interface_Atspi_Selection,
+                 Evas.Clickable_Interface, Evas.Selectable_Interface)
+ {
+    eo_prefix: elm_obj_list;
+    methods {
+       @property horizontal {
+          [[Control horizontal mode on the list object.
  
-             @see elm_list_horizontal_get()
+            Note: Vertical mode is set by default.
  
-             @ingroup List */
+            On horizontal mode items are displayed on list from left to right,
+            instead of from top to bottom. Also, the list will scroll horizontally.
+            Each item will presents left icon on top and right icon, or end, at
+            the bottom.]]
+          set {
           }
           get {
-             /*@
-             Get a value whether horizontal mode is enabled or not.
-             @return @c EINA_TRUE means horizontal mode selection is enabled.
-             @c EINA_FALSE indicates it's disabled. If @p obj is @c NULL,
-             @c EINA_FALSE is returned.
-             @see elm_list_horizontal_set() for details.
-             @ingroup List */
           }
           values {
-             bool horizontal; /*@ @c EINA_TRUE to enable horizontal or @c EINA_FALSE to
-             disable it, i.e., to enable vertical mode. */
+             horizontal: bool; [[$true to enable horizontal or $false to disable it, i.e., to enable vertical mode.]]
           }
        }
-       select_mode {
+       @property select_mode {
+          [[Control the list select mode.
+            elm_list_select_mode_set() changes item select mode in the list widget.
+            - #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
+            callback when first becoming selected. Any further clicks will
+            do nothing, unless you set always select mode.
+            - #ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+            every click will make the selected callbacks be called.
+            - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
+            entirely and they will neither appear selected nor call selected
+            callback functions.]]
           set {
-             /*@
-             Set the list select mode.
-             elm_list_select_mode_set() changes item select mode in the list widget.
-             - #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
-             callback when first becoming selected. Any further clicks will
-             do nothing, unless you set always select mode.
-             - #ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
-             every click will make the selected callbacks be called.
-             - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
-             entirely and they will neither appear selected nor call selected
-             callback functions.
-             @see elm_list_select_mode_get()
-             @ingroup List */
           }
           get {
-             /*@
-             Get the list select mode.
-             @return The select mode
-             (If getting mode fails, it returns #ELM_OBJECT_SELECT_MODE_MAX)
-             @see elm_list_select_mode_set()
-             @ingroup List */
           }
           values {
-             Elm_Object_Select_Mode mode(4); /*@ The select mode */
+             mode: Elm.Object.Select_Mode(Elm.Object.Select_Mode.max); [[The select mode]]
           }
        }
-       focus_on_selection {
-          set {
-             /*@
-             Set focus upon items selection mode
-             When enabled, every selection of an item inside the genlist will automatically set focus to
-             its first focusable widget from the left. This is true of course if the selection was made by
-             clicking an unfocusable area in an item or selecting it with a key movement. Clicking on a
-             focusable widget inside an item will couse this particular item to get focus as usual.
+       @property focus_on_selection {
+          [[Control focus upon items selection mode
  
-             @ingroup List */
+            When enabled, every selection of an item inside the genlist will automatically set focus to
+            its first focusable widget from the left. This is true of course if the selection was made by
+            clicking an unfocusable area in an item or selecting it with a key movement. Clicking on a
+            focusable widget inside an item will couse this particular item to get focus as usual.]]
+          set {
           }
           get {
-             /*@
-             Get whether focus upon item's selection mode is enabled.
-             @return The tree effect status
-             (EINA_TRUE = enabled, EINA_FALSE = disabled)
-             @ingroup List */
           }
           values {
-             bool enabled; /*@ The tree effect status
-             (EINA_TRUE = enabled, EINA_FALSE = disabled) */
+             enabled: bool; [[The tree effect status (true = enabled, false = disabled)]]
           }
        }
-       multi_select {
-          set {
-             /*@
-             Enable or disable multiple items selection on the list object.
-             Disabled by default. If disabled, the user can select a single item of
-             the list each time. Selected items are highlighted on list.
-             If enabled, many items can be selected.
+       @property multi_select {
+          [[Control multiple items selection on the list object.
  
-             If a selected item is selected again, it will be unselected.
+            Disabled by default. If disabled, the user can select a single item of
+            the list each time. Selected items are highlighted on list.
+            If enabled, many items can be selected.
  
-             @see elm_list_multi_select_get()
-             @ingroup List */
+            If a selected item is selected again, it will be unselected.]]
+          set {
           }
           get {
-             /*@
-             Get a value whether multiple items selection is enabled or not.
-             @see elm_list_multi_select_set() for details.
-             @return @c EINA_TRUE means multiple items selection is enabled.
-             @c EINA_FALSE indicates it's disabled. If @p obj is @c NULL,
-             @c EINA_FALSE is returned.
-             @ingroup List */
           }
           values {
-             bool multi; /*@ @c EINA_TRUE to enable multi selection or @c EINA_FALSE to
-             disable it. */
+             multi: bool; [[$true to enable multi selection or $false to disable it.]]
           }
        }
-       multi_select_mode {
-          set {
-             /*@
-             Set the list multi select mode.
+       @property multi_select_mode {
+          [[Control the list multi select mode.
  
-             - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever each
-             item is clicked.
-             - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only one item will be selected
-             although multi-selection is enabled, if clicked without pressing control
-             key. This mode is only available with multi-selection.
+            - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever each
+            item is clicked.
+            - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only one item will be selected
+            although multi-selection is enabled, if clicked without pressing control
+            key. This mode is only available with multi-selection.
  
-             @see elm_list_multi_select_set()
-             @see elm_list_multi_select_mode_get()
+            See: @.multi_select
  
-             @ingroup List
-             @since 1.8 */
+            @since 1.8]]
+          set {
           }
           get {
-             /*@
-             Get the list multi select mode.
-             @return The multi select mode
-             (If getting mode fails, it returns #ELM_OBJECT_MULTI_SELECT_MODE_MAX)
-             @see elm_list_multi_select_set()
-             @see elm_list_multi_select_mode_set()
-             @ingroup List
-             @since 1.8 */
           }
           values {
++<<<<<<< HEAD
 +            Elm_Object_Multi_Select_Mode mode(2); /*@ The multi select mode */
++=======
+             mode: Elm.Object.Multi_Select_Mode(Elm.Object.Multi_Select_Mode.max); [[The multi select mode]]
++>>>>>>> opensource/master
           }
        }
-       mode {
-          set {
-             /*@
-             Set which mode to use for the list object.
-             Set list's resize behavior, transverse axis scroll and
-             items cropping. See each mode's description for more details.
+       @property mode {
+          [[Control which mode to use for the list object.
  
-             @note Default value is #ELM_LIST_SCROLL.
+            Set list's resize behavior, transverse axis scroll and
+            items cropping. See each mode's description for more details.
  
-             Only one mode at a time can be set. If a previous one was set, it
-             will be changed by the new mode after this call. Bitmasks won't
-             work here as well.
+            Note: Default value is #ELM_LIST_SCROLL.
  
-             @warning This function's behavior will clash with those of
-             elm_scroller_content_min_limit(), so use either one of them, but
-             not both.
+            Only one mode at a time can be set. If a previous one was set, it
+            will be changed by the new mode after this call. Bitmasks won't
+            work here as well.
  
-             @see elm_list_mode_get()
-             @ingroup List */
+            Warning: This function's behavior will clash with those of
+            elm_scroller_content_min_limit(), so use either one of them, but
+            not both.]]
+          set {
           }
           get {
-             /*@
-             Get the mode the list is at.
-             @return One of #Elm_List_Mode: #ELM_LIST_COMPRESS, #ELM_LIST_SCROLL, #ELM_LIST_LIMIT, #ELM_LIST_EXPAND or #ELM_LIST_LAST on errors.
-             @note see elm_list_mode_set() for more information.
-             @ingroup List */
           }
           values {
++<<<<<<< HEAD
 +            Elm_List_Mode mode(4); /*@ One of #Elm_List_Mode: #ELM_LIST_COMPRESS,
 +            #ELM_LIST_SCROLL, #ELM_LIST_LIMIT or #ELM_LIST_EXPAND. */
++=======
+             mode: Elm.List.Mode(Elm.List.Mode.last); [[One of #Elm_List_Mode: #ELM_LIST_COMPRESS, #ELM_LIST_SCROLL, #ELM_LIST_LIMIT or #ELM_LIST_EXPAND.]]
++>>>>>>> opensource/master
           }
        }
-       selected_item {
+       @property selected_item {
           get {
-             /*@
-             Get the selected item.
-             @return The selected list item.
+             [[Get the selected item.
  
-             The selected item can be unselected with function
-             elm_list_item_selected_set().
+              The selected item can be unselected with function
+              elm_list_item_selected_set().
  
-             The selected item always will be highlighted on list.
+              The selected item always will be highlighted on list.]]
  
-             @see elm_list_selected_items_get()
-             @ingroup List */
-             return: Elm_Object_Item *;
+             return: Elm.Widget_Item *; [[The selected list item.]]
           }
        }
-       items {
+       @property items {
           get {
-             /*@
-             Get a list of all the list items.
-             @return A @c list of list items, #Elm_Object_Item,
-             or @c NULL on failure.
+             [[Get a list of all the list items.]]
  
-             @see elm_list_item_append()
-             @see elm_object_item_del()
-             @see elm_list_clear()
-             @ingroup List */
-             return: const(list)*;
+             return: const(list<Elm.Widget_Item *>)*; [[A $list of list items, #Elm.Widget_Item, or $NULL on failure.]]
           }
        }
-       first_item {
+       @property first_item {
           get {
-             /*@
-             Get the first item in the list
+             [[Get the first item in the list
  
-             This returns the first item in the list.
+               This returns the first item in the list.]]
  
-             @return The first item, or NULL if none
-             @ingroup List */
-             return: Elm_Object_Item *;
+             return: Elm.Widget_Item *; [[The first item, or NULL if none]]
           }
        }
-       selected_items {
+       @property selected_items {
           get {
-             /*@
-             Return a list of the currently selected list items.
+             [[Return a list of the currently selected list items.
  
-             @return An @c list of list items, #Elm_Object_Item,
-             or @c NULL on failure.
+               Multiple items can be selected if multi select is enabled. It can be
+               done with elm_list_multi_select_set().]]
  
-             Multiple items can be selected if multi select is enabled. It can be
-             done with elm_list_multi_select_set().
-             @see elm_list_selected_item_get()
-             @see elm_list_multi_select_set()
-             @ingroup List */
-             return: const(list)*;
+             return: const(list<Elm.Widget_Item *>)*; [[An $list of list items, #Elm.Widget_Item, or $NULL on failure.]]
           }
        }
-       last_item {
+       @property last_item {
           get {
-             /*@
-             Get the last item in the list
+             [[Get the last item in the list
  
-             This returns the last item in the list.
+               This returns the last item in the list.]]
  
-             @return The last item, or NULL if none
-             @ingroup List */
-             return: Elm_Object_Item *;
+             return: Elm.Widget_Item *; [[The last item, or NULL if none]]
           }
        }
-    }
-    methods {
        item_insert_before {
-          /*@
-          Insert a new item into the list object before item @p before.
-          @return The created item or @c NULL upon failure.
+          [[Insert a new item into the list object before item $before.
  
-          A new item will be created and added to the list. Its position in
-          this list will be just before item @p before.
+            A new item will be created and added to the list. Its position in
+            this list will be just before item $before.
  
-          Items created with this method can be deleted with elm_object_item_del().
+            Items created with this method can be deleted with elm_object_item_del().
  
-          Associated @p data can be properly freed when item is deleted if a
-          callback function is set with elm_object_item_del_cb_set().
+            Associated $data can be properly freed when item is deleted if a
+            callback function is set with elm_object_item_del_cb_set().
  
-          If a function is passed as argument, it will be called every time this item
-          is selected, i.e., the user clicks over an unselected item.
-          If always select is enabled it will call this function every time
-          user clicks over an item (already selected or not).
-          If such function isn't needed, just passing
-          @c NULL as @p func is enough. The same should be done for @p data.
-          @note Remember that the label parameter is copied inside the list. So if an
-          application dynamically allocated the label, the application should free the
-          label after this call.
-          @see elm_list_item_append() for a simple code example.
-          @see elm_list_select_mode_set()
-          @see elm_object_item_del()
-          @see elm_object_item_del_cb_set()
-          @see elm_list_clear()
-          @see elm_icon_add()
+            If a function is passed as argument, it will be called every time this item
+            is selected, i.e., the user clicks over an unselected item.
+            If always select is enabled it will call this function every time
+            user clicks over an item (already selected or not).
+            If such function isn't needed, just passing
+            $NULL as $func is enough. The same should be done for $data.
  
-          @ingroup List */
+            Note: Remember that the label parameter is copied inside the list. So if an
+            application dynamically allocated the label, the application should free the
+            label after this call.]]
  
-          return: Elm_Object_Item *;
+          return: Elm.Widget_Item *; [[The created item or $NULL upon failure.]]
           params {
-             @in Elm_Object_Item *before; /*@ The list item to insert before. */
-             @in const(char)* label; /*@ The label of the list item. */
-             @in Evas_Object *icon; /*@ The icon object to use for the left side of the item. An
-             icon can be any Evas object, but usually it is an icon created
-             with elm_icon_add(). */
-             @in Evas_Object *end; /*@ The icon object to use for the right side of the item. An
-             icon can be any Evas object. */
-             @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
-             @in const(void)* data; /*@ The data to associate with the item for related callbacks. */
+             @in before: Elm.Widget_Item *; [[The list item to insert before.]]
+             @in label: const(char)*; [[The label of the list item.]]
+             @in icon: Evas.Object * @optional; [[The icon object to use for the left side of the item. An icon can be any Evas object, but usually it is an icon created with elm_icon_add().]]
+             @in end: Evas.Object * @optional; [[The icon object to use for the right side of the item. An icon can be any Evas object.]]
+             @in func: Evas_Smart_Cb @optional; [[The function to call when the item is clicked.]]
+             @in data: const(void)* @optional; [[The data to associate with the item for related callbacks.]]
           }
        }
        go {
index 7fa8c842002a173ef99162a7c9f089a0c4254dde,92b8d3fdae7ed249040c72ac069e674556da8888..6b35413772416ebf655513da3b2fbffe1a8f3596
@@@ -1,97 -1,66 +1,74 @@@
- class Elm_List_Item(Elm_Widget_Item)
+ class Elm.List_Item(Elm.Widget_Item)
  {
        eo_prefix: elm_obj_list_item;
-       properties {
-            separator {
+       methods {
+            @property separator {
                  get {
++<<<<<<< HEAD
 +                     /*@
 +                      Get a value whether item is a separator or not.
 +@see elm_list_item_separator_set() for details.  
 +                      @ingroup List
 +                      */
++=======
+                      [[Get a value whether item is a separator or not.]]
++>>>>>>> opensource/master
                  }
                  set {
-                      /*@
-                       Set or unset item as a separator.
-                       Items aren't set as separator by default.
+                      [[Set or unset item as a separator.
  
-                       If set as separator it will display separator theme, so won't display
-                       icons or label.
+                        Items aren't set as separator by default.
  
-                       @see elm_list_item_separator_get()
-                       @ingroup List
-                       */
+                        If set as separator it will display separator theme,
+                        so won't display icons or label.
+                      ]]
                  }
                  values {
-                      Eina_Bool setting; /*@ @c EINA_TRUE means item @p it is a separator. @c EINA_FALSE
-                                          indicates it's not. */
+                      setting: bool; [[$true means item $it is a separator.
+                                       $false indicates it's not.]]
                  }
             }
-            selected {
+            @property selected {
                  get {
-                      /*
-                       Get whether the @p item is selected or not.
-                       @see elm_list_selected_item_set() for details.
-                       @see elm_list_item_selected_get()
-                       @ingroup List
-                       */
+                      [[Get whether the item is selected or not.]]
                  }
                  set {
-                      /*@
-                       Set the selected state of an item.
-                       This sets the selected state of the given item @p it.
-                       @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
-                       If a new item is selected the previously selected will be unselected,
-                       unless multiple selection is enabled with elm_list_multi_select_set().
-                       Previously selected item can be get with function
-                       elm_list_selected_item_get().
+                      [[Set the selected state of an item.
  
-                       Selected items will be highlighted.
+                        This sets the selected state of the given item.
  
-                       @see elm_list_item_selected_get()
-                       @see elm_list_selected_item_get()
-                       @see elm_list_multi_select_set()
+                        If a new item is selected the previously selected
+                        will be unselected, unless multiple selection is
+                        enabled with \@ref elm_list_multi_select_set.
+                        Previously selected item can be get with function
+                        \@ref elm_list_selected_item_get.
  
-                       @ingroup List
-                       */
+                        Selected items will be highlighted.
+                      ]]
                  }
                  values {
-                      Eina_Bool selected; /*@ the selected state (@c EINA_TRUE selected, @c EINA_FALSE not selected) */
+                      selected: bool; [[The selected state.]]
                  }
             }
-            object {
+            @property object {
                  get {
-                      /*@
-                       Get the real Evas(Edje) object created to implement the view of a given
-                       list @p item.
-                       Base object is the @c Evas_Object that represents that item.
+                      [[Get the real Evas(Edje) object created to implement
+                        the view of a given list item.
  
-                       @ingroup List
-                       */
+                        Base object is the $Evas_Object that represents that
+                        item.
+                      ]]
                  }
                  values {
-                      Evas_Object *obj; /*@ The base Edje object associated with @p it. */
+                      obj: Evas.Object *; [[The base Edje object associated with the item.]]
                  }
             }
-            prev {
+            @property prev {
                  get {
-                      /*@
-                       Get the item before @p it in list.
-                       @note If it is the first item, @c NULL will be returned.
-                       @see elm_list_item_append()
-                       @see elm_list_items_get()
+                      [[Get the item before the item in list.
  
-                       @ingroup List
-                       */
+                        Note: If it is the first item, $null will be returned.
+                      ]]
                       legacy: elm_list_item_prev;
                  }
                  values {
        }
        implements {
             Eo.Base.constructor;
++<<<<<<< HEAD
 +           Elm_Widget_Item.disable;
 +           Elm_Widget_Item.del_pre;
 +           Elm_Widget_Item.signal_emit;
 +           Elm_Widget_Item.focus.set;
 +           Elm_Widget_Item.focus.get;
 +           Elm_Widget_Item.part_text.get;
 +           Elm_Widget_Item.part_text.set;
 +           Elm_Widget_Item.part_content.get;
 +           Elm_Widget_Item.part_content.set;
 +           Elm_Widget_Item.part_content_unset;
++=======
+            Elm.Widget_Item.disable;
+            Elm.Widget_Item.del_pre;
+            Elm.Widget_Item.signal_emit;
+            Elm.Widget_Item.focus.set;
+            Elm.Widget_Item.focus.get;
+            Elm.Widget_Item.part_text.get;
+            Elm.Widget_Item.part_text.set;
+            Elm.Widget_Item.part_content.get;
+            Elm.Widget_Item.part_content.set;
+            Elm.Widget_Item.part_content_unset;
++>>>>>>> opensource/master
             Elm_Interface_Atspi_Accessible.name.get;
             Elm_Interface_Atspi_Accessible.state_set.get;
             Elm_Interface_Atspi_Accessible.children.get;
index c786c68a0892cd996e58e2c444781f0573975da2,61b33775a57b71996e92ee21e925976ad79b8431..a748f22cd9361a1ad0fd5678a5f09a94ae11b25c
@@@ -1,7 -1,7 +1,11 @@@
  /* handy macros */
  #define ELM_RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) (((x) < ((xx) + (ww))) && ((y) < ((yy) + (hh))) && (((x) + (w)) > (xx)) && (((y) + (h)) > (yy)))
  #define ELM_PI 3.14159265358979323846
++<<<<<<< HEAD
 +#define ELM_SCALE_SIZE(x) (int)(((double)(x) / elm_app_base_scale_get()) * elm_config_scale_get())
++=======
+ #define ELM_SCALE_SIZE(x) (int)(((double)(x) * elm_config_scale_get()) / elm_app_base_scale_get())
++>>>>>>> opensource/master
  
  // checks if the point(xx, yy) stays out of the rectangle(x, y, w, h) area.
  #define ELM_RECTS_POINT_OUT(x, y, w, h, xx, yy) (((xx) < (x)) || ((yy) < (y)) || ((xx) > ((x) + (w))) || ((yy) > ((y) + (h))))
index 06904b3ef0962234cac5532e940c111c6d25a4ee,faa8624321dd5e0f304943d9ddab5712da50d831..86c9ae3251fa417dd4547994aba4acff5a0f94bc
@@@ -1510,7 -1509,7 +1509,11 @@@ elm_object_focus_move_policy_set(Evas_O
  }
  
  EAPI Elm_Focus_Move_Policy
++<<<<<<< HEAD
 +elm_object_focus_move_policy_get(Evas_Object *obj)
++=======
+ elm_object_focus_move_policy_get(const Evas_Object *obj)
++>>>>>>> opensource/master
  {
     EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
     return elm_widget_focus_move_policy_get(obj);
index 83d030a117a9ab256a4eba4f56b8b46842681414,d5a27c226bca451b35bb11023135a5a6e964f1c6..e4148cf0d9e2732b505bf9c55dbd85becf535cce
@@@ -583,6 -468,8 +590,11 @@@ _grid_clear(Evas_Object *obj
                         edje_object_signal_emit
                           (wd->resize_obj,
                           "elm,state,busy,stop", "elm");
++<<<<<<< HEAD
++=======
+                        eo_do(obj, eo_event_callback_call
+                          (ELM_PHOTOCAM_EVENT_LOAD_DETAIL, NULL));
++>>>>>>> opensource/master
                      }
                 }
            }
@@@ -767,7 -698,15 +779,19 @@@ _main_img_preloaded_cb(void *data
       }
     ecore_job_del(sd->calc_job);
     sd->calc_job = ecore_job_add(_calc_job_cb, data);
++<<<<<<< HEAD
 +   evas_object_smart_callback_call(data, SIG_LOADED, NULL);
++=======
+    eo_do(data, eo_event_callback_call(ELM_PHOTOCAM_EVENT_LOADED, NULL));
+    sd->preload_num--;
+    if (!sd->preload_num)
+      {
+         edje_object_signal_emit
+           (wd->resize_obj, "elm,state,busy,stop", "elm");
+         eo_do(obj, eo_event_callback_call
+           (ELM_PHOTOCAM_EVENT_LOADED_DETAIL, NULL));
+      }
++>>>>>>> opensource/master
  }
  
  static Eina_Bool
@@@ -838,13 -783,13 +869,13 @@@ _zoom_anim_cb(void *data
       t = 1.0;
     t = 1.0 - t;
     t = 1.0 - (t * t);
 -   go = _zoom_do(obj, t);
 +   go = _zoom_do(obj, t);*/
 +
 +   go = _zoom_do(obj, 1.0);
     if (!go)
       {
 -        sd->no_smooth--;
 -        if (!sd->no_smooth) _smooth_update(data);
          sd->zoom_animator = NULL;
-         evas_object_smart_callback_call(obj, SIG_ZOOM_STOP, NULL);
+         eo_do(obj, eo_event_callback_call(EVAS_ZOOMABLE_INTERFACE_EVENT_ZOOM_STOP, NULL));
       }
  
     return go;
@@@ -973,7 -925,19 +1011,23 @@@ static voi
  _scroll_cb(Evas_Object *obj,
             void *data EINA_UNUSED)
  {
++<<<<<<< HEAD
 +   evas_object_smart_callback_call(obj, SIG_SCROLL, NULL);
++=======
+    ELM_PHOTOCAM_DATA_GET(obj, sd);
+    if (!sd->scr_timer)
+      {
+         sd->no_smooth++;
+         if (sd->no_smooth == 1) _smooth_update(obj);
+      }
+    ecore_timer_del(sd->scr_timer);
+    sd->scr_timer = ecore_timer_add(0.5, _scroll_timeout_cb, obj);
+    eo_do(obj, eo_event_callback_call
+      (EVAS_SCROLLABLE_INTERFACE_EVENT_SCROLL, NULL));
++>>>>>>> opensource/master
  }
  
  static Eina_Bool
@@@ -1355,6 -1319,7 +1409,10 @@@ _elm_photocam_image_orient_set(Eo *obj
  
     if (sd->orient == orient) return;
  
++<<<<<<< HEAD
++=======
+    sd->orientation_changed = EINA_TRUE;
++>>>>>>> opensource/master
     sd->orient = orient;
     g = _grid_create(obj);
     if (g)
@@@ -1573,19 -1542,34 +1633,46 @@@ _internal_file_set(Eo *obj, Elm_Photoca
     sd->size.imh = h;
     sd->size.w = sd->size.imw / sd->zoom;
     sd->size.h = sd->size.imh / sd->zoom;
++<<<<<<< HEAD
++=======
+    evas_object_image_file_set(sd->img, NULL, NULL);
+    _photocam_image_file_set(sd->img, sd);
+    err = evas_object_image_load_error_get(sd->img);
+    if (err != EVAS_LOAD_ERROR_NONE)
+      {
+         ERR("Things are going bad for '%s' (%p)", file, sd->img);
+         if (ret) *ret = err;
+         return;
+      }
++>>>>>>> opensource/master
  
 +   // load low resolution image
 +   evas_object_image_load_scale_down_set(sd->img, 8);
     evas_object_image_preload(sd->img, 0);
 +   evas_object_smart_callback_call(obj, SIG_LOAD, NULL);
     sd->main_load_pending = EINA_TRUE;
  
     sd->calc_job = ecore_job_add(_calc_job_cb, obj);
++<<<<<<< HEAD
++=======
+    eo_do(obj, eo_event_callback_call(ELM_PHOTOCAM_EVENT_LOAD, NULL));
+    sd->preload_num++;
+    if (sd->preload_num == 1)
+      {
+         edje_object_signal_emit
+           (wd->resize_obj, "elm,state,busy,start", "elm");
+         eo_do(obj, eo_event_callback_call(ELM_PHOTOCAM_EVENT_LOAD_DETAIL, NULL));
+      }
++>>>>>>> opensource/master
  
     tz = sd->zoom;
     sd->zoom = 0.0;
     elm_photocam_zoom_set(obj, tz);
     sd->orient = EVAS_IMAGE_ORIENT_NONE;
++<<<<<<< HEAD
++=======
+    sd->orientation_changed = EINA_FALSE;
++>>>>>>> opensource/master
  
     if (ret) *ret = evas_object_image_load_error_get(sd->img);
  }
@@@ -1816,12 -1953,12 +1954,17 @@@ done
     if (!sd->paused)
       {
          if (started)
-           evas_object_smart_callback_call(obj, SIG_ZOOM_START, NULL);
+           eo_do(obj, eo_event_callback_call(EVAS_ZOOMABLE_INTERFACE_EVENT_ZOOM_START, NULL));
          if (!an)
-           evas_object_smart_callback_call(obj, SIG_ZOOM_STOP, NULL);
+           eo_do(obj, eo_event_callback_call(EVAS_ZOOMABLE_INTERFACE_EVENT_ZOOM_STOP, NULL));
       }
++<<<<<<< HEAD
 +   if (sd->zoom != z)
 +     evas_object_smart_callback_call(obj, SIG_ZOOM_CHANGE, NULL);
++=======
+    if (zoom_changed)
+      eo_do(obj, eo_event_callback_call(EVAS_ZOOMABLE_INTERFACE_EVENT_ZOOM_CHANGE, NULL));
++>>>>>>> opensource/master
  }
  
  EOLIAN static double
index 5482745e97e9971b144f405622ed4b7556694ff4,acfb87a6ba5b69e6e0f83635e38c373b0c5102da..7546be1cca30e110d2dea8d1cc6fc5ab23b4adb0
- class Elm_Photocam (Elm_Widget, Elm_Interface_Scrollable,
-                     Elm_Interface_Atspi_Widget_Action)
+ class Elm.Photocam (Elm.Widget, Elm_Interface_Scrollable,
+                     Elm_Interface_Atspi_Widget_Action, Efl.File,
+                     Evas.Clickable_Interface, Evas.Scrollable_Interface,
+                     Evas.Zoomable_Interface)
  {
     eo_prefix: elm_obj_photocam;
-    properties {
-       paused {
+    methods {
+       @property paused {
           set {
-             /*@
-             @brief Set the paused state for photocam
+             [[Set the paused state for photocam
  
-             This sets the paused state to on(@c EINA_TRUE) or off (@c EINA_FALSE) for
-             photocam. The default is off. This will stop zooming using animation on
-             zoom level changes and change instantly. This will stop any existing
-             animations that are running.
-             @ingroup Photocam */
+               This sets the paused state to on or off for photocam. The
+               default is off. This will stop zooming using animation on
+               zoom level changes and change instantly. This will stop any
+               existing animations that are running.
+             ]]
           }
           get {
-             /*@
-             @brief Get the paused state for photocam
-             @return The current paused state
-             This gets the current paused state for the photocam object.
-             @see elm_photocam_paused_set()
+             [[Get the paused state for photocam
  
-             @ingroup Photocam */
+               This gets the current paused state for the photocam object.
+             ]]
           }
           values {
-             bool paused; /*@ The pause state to set */
+             paused: bool; [[The pause state.]]
           }
        }
-       file {
+       @property gesture_enabled {
           set {
-             /*@
-             @brief Set the photo file to be shown
-             @return The return error (see EVAS_LOAD_ERROR_NONE, EVAS_LOAD_ERROR_GENERIC etc.)
-             This sets (and shows) the specified file (with a relative or absolute
-             path) and will return a load error (same error that
-             evas_object_image_load_error_get() will return). The image will change and
-             adjust its size at this point and begin a background load process for this
-             photo that at some time in the future will be displayed at the full
-             quality needed.
+             [[Set the gesture state for photocam.
  
-             @ingroup Photocam */
-             return: Evas_Load_Error;
+               This sets the gesture state to on or off for photocam. The
+               default is off. This will start multi touch zooming.
+             ]]
           }
           get {
-             /*@
-             @brief Returns the path of the current image file
-             @return Returns the path
+             [[Get the gesture state for photocam.
  
-             @see elm_photocam_file_set()
-             @ingroup Photocam */
+               This gets the current gesture state for the photocam object.
+             ]]
           }
           values {
-             const(char)* file; /*@ The photo file */
+             gesture: bool; [[The gesture state.]]
           }
        }
-       gesture_enabled {
+       @property zoom {
           set {
-             /*@
-             @brief Set the gesture state for photocam.
-             This sets the gesture state to on(@c EINA_TRUE) or off (@c EINA_FALSE) for
-             photocam. The default is off. This will start multi touch zooming.
-             @ingroup Photocam */
+             [[Set the zoom level of the photo
+               This sets the zoom level. If $zoom is 1, it means no zoom. If
+               it's smaller than 1, it means zoom in. If it's bigger than 1,
+               it means zoom out. For  example, $zoom 1 will be 1:1 pixel for
+               pixel. $zoom 2 will be 2:1 (that is 2x2 photo pixels will
+               display as 1 on-screen pixel) which is a zoom out. 4:1 will
+               be 4x4 photo pixels as 1 screen pixel, and so on. The $zoom
+               parameter must be greater than 0. It is suggested to stick
+               to powers of 2. (1, 2, 4, 8, 16, 32, etc.).
+             ]]
           }
           get {
-             /*@
-             @brief Get the gesture state for photocam.
-             @return The current gesture state
+             [[Get the zoom level of the photo
  
-             This gets the current gesture state for the photocam object.
-             @see elm_photocam_gesture_enabled_set()
-             @ingroup Photocam */
+               This returns the current zoom level of the photocam object.
+               Note that if you set the fill mode to other than
+               #ELM_PHOTOCAM_ZOOM_MODE_MANUAL (which is the default), the
+               zoom level may be changed at any time by the  photocam object
+               itself to account for photo size and photocam viewport size.
+             ]]
           }
           values {
-             bool gesture; /*@ The gesture state to set */
+             zoom: double; [[The zoom level to set]]
           }
        }
-       zoom {
+       @property zoom_mode {
           set {
-             /*@
-             @brief Set the zoom level of the photo
+             [[Set the zoom mode
  
-             This sets the zoom level. If @p zoom is 1, it means no zoom. If it's smaller
-             than 1, it means zoom in. If it's bigger than 1, it means zoom out. For
-             example, @p zoom 1 will be 1:1 pixel for pixel. @p zoom 2 will be 2:1
-             (that is 2x2 photo pixels will display as 1 on-screen pixel) which is a zoom
-             out. 4:1 will be 4x4 photo pixels as 1 screen pixel, and so on. The @p zoom
-             parameter must be greater than 0. It is suggested to stick to powers of 2.
-             (1, 2, 4, 8, 16, 32, etc.).
+               This sets the zoom mode to manual or one of several automatic
+               levels. Manual (ELM_PHOTOCAM_ZOOM_MODE_MANUAL) means that zoom
+               is set manually by @.zoom.set and will stay at that level until
+               changed by code or until zoom mode is changed. This is the
+               default mode. The Automatic modes will allow the photocam object
+               to automatically adjust zoom mode based on properties.
  
-             @ingroup Photocam */
+               #ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT) will adjust zoom so the photo
+               fits EXACTLY inside the scroll frame with no pixels outside this
+               region. #ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL will be similar but
+               ensure no pixels within the frame are left unfilled.
+             ]]
           }
           get {
-             /*@
-             @brief Get the zoom level of the photo
-             @return The current zoom level
+             [[Get the zoom mode
  
-             This returns the current zoom level of the photocam object. Note that if
-             you set the fill mode to other than #ELM_PHOTOCAM_ZOOM_MODE_MANUAL
-             (which is the default), the zoom level may be changed at any time by the
-             photocam object itself to account for photo size and photocam viewport
-             size.
-             @see elm_photocam_zoom_set()
-             @see elm_photocam_zoom_mode_set()
-             @ingroup Photocam */
+               This gets the current zoom mode of the photocam object.
+             ]]
           }
           values {
-             double zoom; /*@ The zoom level to set */
+             mode: Elm_Photocam_Zoom_Mode; [[The zoom mode.]]
           }
        }
-       zoom_mode {
-          set {
-             /*@
-             @brief Set the zoom mode
-             This sets the zoom mode to manual or one of several automatic levels.
-             Manual (ELM_PHOTOCAM_ZOOM_MODE_MANUAL) means that zoom is set manually by
-             elm_photocam_zoom_set() and will stay at that level until changed by code
-             or until zoom mode is changed. This is the default mode. The Automatic
-             modes will allow the photocam object to automatically adjust zoom mode
-             based on properties. #ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT) will adjust zoom so
-             the photo fits EXACTLY inside the scroll frame with no pixels outside this
-             region. #ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL will be similar but ensure no
-             pixels within the frame are left unfilled.
-             @ingroup Photocam */
-          }
+       @property image_region {
           get {
-             /*@
-             @brief Get the zoom mode
-             @return The current zoom mode
-             This gets the current zoom mode of the photocam object.
+             [[Get the region of the image that is currently shown
  
-             @see elm_photocam_zoom_mode_set()
-             @ingroup Photocam */
+               See also @.image_region_show.
+             ]]
           }
           values {
-             Elm_Photocam_Zoom_Mode mode; /*@ The desired mode */
+             x: int; [[A pointer to the X-coordinate of region]]
+             y: int; [[A pointer to the Y-coordinate of region]]
+             w: int; [[A pointer to the width]]
+             h: int; [[A pointer to the height]]
           }
        }
-       image_region {
+       @property internal_image {
           get {
-             /*@
-             @brief Get the region of the image that is currently shown
+             [[Get the internal low-res image used for photocam
  
-             @see elm_photocam_image_region_show()
-             @see elm_photocam_image_region_bring_in()
+               This gets the internal image object inside photocam. Do not
+               modify it. It is for inspection only, and hooking callbacks
+               to. Nothing else. It may be deleted at any time as well.
+             ]]
+             return: Evas.Object *; [[The internal image object handle or $null]]
+          }
+       }
+       @property image_size {
+          get {
+             [[Get the current image pixel width and height
  
-             @ingroup Photocam */
+               This gets the current photo pixel width and height (for the
+               original). The size will be returned in the integers $w and $h
+               that are pointed to.
+             ]]
           }
           values {
-             int x; /*@ A pointer to the X-coordinate of region */
-             int y; /*@ A pointer to the Y-coordinate of region */
-             int w; /*@ A pointer to the width */
-             int h; /*@ A pointer to the height */
+             w: int; [[A pointer to the width return]]
+             h: int; [[A pointer to the height return]]
           }
        }
-       internal_image {
-          get {
-             /*@
-             @brief Get the internal low-res image used for photocam
-             @return The internal image object handle, or NULL if none exists
+       @property image_orient {
+          set {
+             [[Set the photocam image orientation.
  
-             This gets the internal image object inside photocam. Do not modify it. It
-             is for inspection only, and hooking callbacks to. Nothing else. It may be
-             deleted at any time as well.
+               This function allows to rotate or flip the photocam image.
  
-             @ingroup Photocam */
-             return: Evas_Object *;
+               @since 1.14
+             ]]
           }
-       }
-       image_size {
           get {
-             /*@
-             @brief Get the current image pixel width and height
-             This gets the current photo pixel width and height (for the original).
-             The size will be returned in the integers @p w and @p h that are pointed
-             to.
+             [[Get the photocam image orientation.
  
-             @ingroup Photocam */
+               @since 1.14
+             ]]
           }
           values {
-             int w; /*@ A pointer to the width return */
-             int h; /*@ A pointer to the height return */
+             orient: Evas_Image_Orient; [[The photocam image orientation
+                                          \@ref Evas_Image_Orient. Default is
+                                          #EVAS_IMAGE_ORIENT_NONE.
+                                        ]]
           }
        }
++<<<<<<< HEAD
 +      image_orient {
 +         set {
 +            /*@
 +            Set the photocam image orientation.
 +
 +            This function allows to rotate or flip the photocam image.
 +
 +            @see elm_photocam_image_orient_get()
 +            @see @ref Evas_Image_Orient
 +
 +            @since 1.14
 +            @ingroup Photocam */
 +         }
 +         get {
 +            /*@
 +            Get the photocam image orientation.
 +
 +            @return The photocam image orientation @ref Evas_Image_Orient
 +
 +            @see elm_photocam_image_orient_set()
 +            @see @ref Evas_Image_Orient
 +
 +            @since 1.14
 +            @ingroup Photocam */
 +         }
 +         values {
 +            Evas_Image_Orient orient; /*@ The photocam image orientation @ref Evas_Image_Orient
 +            Default is #EVAS_IMAGE_ORIENT_NONE. */
 +         }
 +      }
 +   }
 +   methods {
++=======
++>>>>>>> opensource/master
        image_region_show {
-          /*@
-          @brief Set the viewed region of the image
-          This shows the region of the image without using animation.
-          @ingroup Photocam */
+          [[Set the viewed region of the image
  
+            This shows the region of the image without using animation.
+          ]]
           params {
-             @in int x; /*@ X-coordinate of region in image original pixels */
-             @in int y; /*@ Y-coordinate of region in image original pixels */
-             @in int w; /*@ Width of region in image original pixels */
-             @in int h; /*@ Height of region in image original pixels */
+             @in x: int; [[X-coordinate of region in image original pixels]]
+             @in y: int; [[Y-coordinate of region in image original pixels]]
+             @in w: int; [[Width of region in image original pixels]]
+             @in h: int; [[Height of region in image original pixels]]
           }
        }
     }
index dcc162c0f0ffb9de7538858dc5f1ae69863634a0,be92f1513d703de854e245b6eeae584cab44edfe..18f334aa3ff9cbca63afc584c66bdf458c93b6dc
@@@ -200,13 -204,12 +204,13 @@@ struct _Elm_Confi
     double        thumbscroll_border_friction;
     double        thumbscroll_sensitivity_friction;
     unsigned char scroll_smooth_start_enable;
-    double        scroll_smooth_time_interval;
+ //   double        scroll_smooth_time_interval;; // not used anymore
     double        scroll_smooth_amount;
-    double        scroll_smooth_history_weight;
-    double        scroll_smooth_future_time;
+ //   double        scroll_smooth_history_weight;; // not used anymore
+ //   double        scroll_smooth_future_time;; // not used anymore
     double        scroll_smooth_time_window;
     double        scale;
 +   int           win_no_border;
     int           bgpixmap;
     int           compositing;
     Eina_List    *font_dirs;
Simple merge
index 34be6aa157b749608f2a59e98bb6f384034f6e71,a16f16e1950d317cd5ebb56308296ef298964184..66cf0a021a5a058ade4e8a7c43a62ed6b47d29d3
@@@ -54,9 -54,23 +54,27 @@@ _state_set(Evas_Object *obj, Eina_Bool 
       {
          sd->state = state;
          if (sd->state)
-           elm_layout_signal_emit(obj, "elm,state,radio,on", "elm");
+           {
+              // FIXME: to do animation during state change , we need different signal
+              // so that we can distinguish between state change by user or state change
+              // by calling state_change() api. Keep both the signal for backward compatibility
+              // and only emit "elm,state,radio,on" when activate is false  when we can break ABI.
+              if (activate) elm_layout_signal_emit(obj, "elm,activate,radio,on", "elm");
+              elm_layout_signal_emit(obj, "elm,state,radio,on", "elm");
+           }
          else
++<<<<<<< HEAD
 +          elm_layout_signal_emit(obj, "elm,state,radio,off", "elm");
++=======
+           {
+              // FIXME: to do animation during state change , we need different signal
+              // so that we can distinguish between state change by user or state change
+              // by calling state_change() api. Keep both the signal for backward compatibility
+              // and only emit "elm,state,radio,off"when activate is false when we can break ABI.
+              if (activate) elm_layout_signal_emit(obj, "elm,activate,radio,off", "elm");
+              elm_layout_signal_emit(obj, "elm,state,radio,off", "elm");
+           }
++>>>>>>> opensource/master
          if (_elm_config->atspi_mode)
            {
               if (sd->state)
index 7a644aa5cf4d38682210c1051ed2c34242072b2a,6eecd6ccffe859fcd67493c007fa9e1278af9607..6aa1b8a2caa45b229c8a89e225578bd7b1a5ecb1
@@@ -101,17 -78,16 +78,30 @@@ class Elm.Radio (Elm.Layout, Elm_Interf
        Eo.Base.constructor;
        Evas.Object_Smart.add;
        Evas.Object_Smart.del;
++<<<<<<< HEAD
 +      Elm_Widget.theme_apply;
 +      Elm_Widget.activate;
 +      Elm_Widget.focus_next_manager_is;
 +      Elm_Widget.focus_direction_manager_is;
 +      Elm_Widget.disable;
 +      Elm_Widget.sub_object_del;
 +      Elm_Widget.event;
 +      Elm_Container.content_set;
 +      Elm_Layout.text_aliases.get;
 +      Elm_Layout.content_aliases.get;
 +      Elm_Layout.sizing_eval;
++=======
+       Elm.Widget.theme_apply;
+       Elm.Widget.activate;
+       Elm.Widget.focus_next_manager_is;
+       Elm.Widget.focus_direction_manager_is;
+       Elm.Widget.sub_object_del;
+       Elm.Widget.event;
+       Elm.Container.content_set;
+       Elm.Layout.text_aliases.get;
+       Elm.Layout.content_aliases.get;
+       Elm.Layout.sizing_eval;
++>>>>>>> opensource/master
        Elm_Interface_Atspi_Accessible.state_set.get;
        Elm_Interface_Atspi_Widget_Action.elm_actions.get;
     }
index fe41666f4c83f290d7c6d2674c2674286d2e2d28,1b5011cb1cb613114a8159da7e9c028b71536df3..9d96d038144e282a3aa2b4554812f792576e229a
@@@ -113,6 -113,8 +113,11 @@@ _key_action_move(Evas_Object *obj, cons
           elm_interface_scrollable_content_viewport_geometry_get
           (&v_x, &v_y, &v_w, &v_h));
     evas_object_geometry_get(sd->content, &c_x, &c_y, &max_x, &max_y);
++<<<<<<< HEAD
++=======
+    _elm_widget_focus_auto_show(obj);
++>>>>>>> opensource/master
  
     current_focus = elm_widget_focused_object_get(obj);
     evas_object_geometry_get(current_focus, &f_x, &f_y, &f_w, &f_h);
                    if (cur_weight == 0.0)
                      {
                         elm_widget_focus_steal(cur, NULL);
++<<<<<<< HEAD
++=======
+                        eina_list_free(can_focus_list);
++>>>>>>> opensource/master
                         return EINA_TRUE;
                      }
                    cur_weight = 1.0 / cur_weight;
          if (new_focus)
            {
               elm_widget_focus_steal(new_focus, NULL);
++<<<<<<< HEAD
++=======
+              eina_list_free(can_focus_list);
++>>>>>>> opensource/master
               return EINA_TRUE;
            }
       }
          if (r && new_focus)
            {
               elm_widget_focus_steal(new_focus, new_focus_item);
++<<<<<<< HEAD
++=======
+              eina_list_free(can_focus_list);
++>>>>>>> opensource/master
               return EINA_TRUE;
            }
       }
@@@ -694,57 -707,60 +719,108 @@@ static voi
  _page_change_cb(Evas_Object *obj,
                  void *data EINA_UNUSED)
  {
-    evas_object_smart_callback_call(obj, SIG_SCROLL_PAGE_CHANGE, NULL);
+    eo_do(obj, eo_event_callback_call
+      (ELM_SCROLLER_EVENT_SCROLL_PAGE_CHANGED, NULL));
+ }
+ static void
+ _loop_content_set(Evas_Object *obj, Elm_Scroller_Data *sd, Evas_Object *content)
+ {
+    if (!sd->contents)
+      {
+         sd->contents = elm_layout_add(obj);
+         evas_object_smart_member_add(sd->contents, obj);
+         if (!elm_layout_theme_set(sd->contents, "scroller", "contents", elm_widget_style_get(obj)))
+           CRI("Failed to set layout!");
+         evas_object_size_hint_weight_set(sd->contents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+         evas_object_size_hint_align_set(sd->contents, EVAS_HINT_FILL, EVAS_HINT_FILL);
+         elm_widget_sub_object_add(obj, sd->contents);
+         elm_widget_on_show_region_hook_set(sd->contents, _show_region_hook, obj);
+      }
+    elm_object_part_content_set(sd->contents, "elm.swallow.content", content);
+    sd->content = content;
+    if (sd->loop_h)
+      {
+        if (!sd->proxy_content[0])
+           sd->proxy_content[0] =
+              evas_object_image_add(evas_object_evas_get(sd->contents));
+         _elm_scroller_proxy_set(obj, sd, sd->proxy_content[0]);
+         elm_object_part_content_set(sd->contents, "elm.swallow.content_r",
+                                     sd->proxy_content[0]);
+      }
+    if (sd->loop_v)
+      {
+         if (!sd->proxy_content[1])
+           sd->proxy_content[1] =
+              evas_object_image_add(evas_object_evas_get(sd->contents));
+         _elm_scroller_proxy_set(obj, sd, sd->proxy_content[1]);
+         elm_object_part_content_set(sd->contents, "elm.swallow.content_b",
+                                     sd->proxy_content[1]);
+      }
+    if (sd->loop_h && sd->loop_v)
+      {
+         if (!sd->proxy_content[2])
+           sd->proxy_content[2] =
+              evas_object_image_add(evas_object_evas_get(sd->contents));
+         _elm_scroller_proxy_set(obj, sd, sd->proxy_content[2]);
+         elm_object_part_content_set(sd->contents, "elm.swallow.content_rb",
+                                     sd->proxy_content[2]);
+      }
  }
  
 +static void
 +_loop_content_set(Evas_Object *obj, Elm_Scroller_Data *sd, Evas_Object *content)
 +{
 +   if (!sd->contents)
 +     {
 +        sd->contents = elm_layout_add(obj);
 +        evas_object_smart_member_add(sd->contents, obj);
 +        elm_layout_theme_set(sd->contents, "scroller", "contents", elm_widget_style_get(obj));
 +        evas_object_size_hint_weight_set(sd->contents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 +        evas_object_size_hint_align_set(sd->contents, EVAS_HINT_FILL, EVAS_HINT_FILL);
 +
 +        elm_widget_sub_object_add(obj, sd->contents);
 +        elm_widget_on_show_region_hook_set(sd->contents, _show_region_hook, obj);
 +     }
 +   elm_object_part_content_set(sd->contents, "elm.swallow.content", content);
 +   sd->content = content;
 +
 +   if (sd->loop_h)
 +     {
 +       if (!sd->proxy_content[0])
 +          sd->proxy_content[0] =
 +             evas_object_image_add(evas_object_evas_get(sd->contents));
 +        _elm_scroller_proxy_set(obj, sd, sd->proxy_content[0]);
 +        elm_object_part_content_set(sd->contents, "elm.swallow.content_r",
 +                                    sd->proxy_content[0]);
 +     }
 +
 +   if (sd->loop_v)
 +     {
 +        if (!sd->proxy_content[1])
 +          sd->proxy_content[1] =
 +             evas_object_image_add(evas_object_evas_get(sd->contents));
 +        _elm_scroller_proxy_set(obj, sd, sd->proxy_content[1]);
 +        elm_object_part_content_set(sd->contents, "elm.swallow.content_b",
 +                                    sd->proxy_content[1]);
 +     }
 +
 +   if (sd->loop_h && sd->loop_v)
 +     {
 +        if (!sd->proxy_content[2])
 +          sd->proxy_content[2] =
 +             evas_object_image_add(evas_object_evas_get(sd->contents));
 +        _elm_scroller_proxy_set(obj, sd, sd->proxy_content[2]);
 +        elm_object_part_content_set(sd->contents, "elm.swallow.content_rb",
 +                                    sd->proxy_content[2]);
 +     }
 +}
 +
  EOLIAN static Eina_Bool
  _elm_scroller_elm_container_content_set(Eo *obj, Elm_Scroller_Data *sd, const char *part, Evas_Object *content)
  {
@@@ -1350,6 -1368,24 +1428,27 @@@ elm_scroller_loop_get(const Evas_Objec
     eo_do(obj, elm_interface_scrollable_loop_get(loop_h, loop_v));
  }
  
++<<<<<<< HEAD
++=======
+ EAPI void
+ elm_scroller_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+ {
+    ELM_SCROLLABLE_CHECK(obj);
+    eo_do((Eo *)obj, elm_interface_scrollable_wheel_disabled_set(disabled));
+ }
+ EAPI Eina_Bool
+ elm_scroller_wheel_disabled_get(const Evas_Object *obj)
+ {
+    ELM_SCROLLABLE_CHECK(obj, EINA_FALSE);
+    Eina_Bool ret;
+    return eo_do_ret((Eo *) obj, ret, elm_interface_scrollable_wheel_disabled_get());
+ }
++>>>>>>> opensource/master
  EOLIAN static void
  _elm_scroller_propagate_events_set(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, Eina_Bool propagation)
  {
index 55b3f5469a6ce5b4cf2c3cce4e651a1d155ada99,3dfacc6eb7be8d8c5a001a217665bf5ac56cdbca..a939a421d051610d27e9d9e6c54ce150c24c4656
@@@ -79,18 -98,18 +98,33 @@@ class Elm.Scroller (Elm.Layout, Elm_Int
        Evas.Object_Smart.add;
        Evas.Object_Smart.member_add;
        Evas.Object_Smart.resize;
++<<<<<<< HEAD
 +      Elm_Widget.theme_apply;
 +      Elm_Widget.activate;
 +      Elm_Widget.focus_next_manager_is;
 +      Elm_Widget.focus_direction_manager_is;
 +      Elm_Widget.focus_next;
 +      Elm_Widget.focus_direction;
 +      Elm_Widget.sub_object_del;
 +      Elm_Widget.event;
 +      Elm_Container.content_get;
 +      Elm_Container.content_set;
 +      Elm_Container.content_unset;
 +      Elm_Layout.sizing_eval;
++=======
+       Elm.Widget.theme_apply;
+       Elm.Widget.activate;
+       Elm.Widget.focus_next_manager_is;
+       Elm.Widget.focus_direction_manager_is;
+       Elm.Widget.focus_next;
+       Elm.Widget.focus_direction;
+       Elm.Widget.sub_object_del;
+       Elm.Widget.event;
+       Elm.Container.content_get;
+       Elm.Container.content_set;
+       Elm.Container.content_unset;
+       Elm.Layout.sizing_eval;
++>>>>>>> opensource/master
        Elm_Interface_Scrollable.page_size.set;
        Elm_Interface_Scrollable.policy.set;
        Elm_Interface_Scrollable.single_direction;
index 8d49b746c88c12b818ef09ab12dd9d9889688b58,ed70cb47e39a213ecc12d27621724cb7f1ca50e1..784be1bb541515882b4b65c65c94d5d3dc9f189a
@@@ -525,4 -526,35 +526,39 @@@ EAPI void                          elm_
   */
  EAPI void                          elm_scroller_loop_get(const Evas_Object *obj, Eina_Bool *loop_h, Eina_Bool *loop_v);
  
++<<<<<<< HEAD
 +#include "elm_scroller.eo.legacy.h"
++=======
+ /**
+  * @brief Enable or disable mouse wheel to be used to scroll the scroller.
+  *
+  * @param obj The scroller object
+  * @param disabled The mouse wheel disabled over the scroller.
+  *
+  * Mouse wheel can be used to scroll up and down the scroller.
+  * Wheel is enabled by default.
+  *
+  * @since 1.15
+  *
+  * @see elm_scroller_wheel_disabled_get()
+  *
+  * @ingroup Scroller
+  */
+ EAPI void                          elm_scroller_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+ /**
+  * @brief Get a value whether mouse wheel is enabled or not over the scroller.
+  *
+  * @param obj The scroller object
+  * @return @c EINA_TRUE means scroller wheel is disabled. @c EINA_FALSE indicates it is enabled.
+  *
+  * Mouse wheel can be used to scroll up and down the scroller.
+  *
+  * @since 1.15
+  *
+  * @see elm_scroller_wheel_disabled_set()
+  *
+  * @ingroup Scroller
+  */
+ EAPI Eina_Bool                     elm_scroller_wheel_disabled_get(const Evas_Object *obj);
++>>>>>>> opensource/master
index 2dbdac71f3c9fb225b954b811de41704a159c711,16c5ac6d45fd0e2f5436c57e25694be7d72cce95..2d00a598c231ee9dde2c08e8762710c617674ce5
@@@ -3,52 -3,33 +3,41 @@@ class Elm.Segment_Control_Item(Elm.Widg
     eo_prefix: elm_obj_segment_control_item;
     methods {
        index_get @const {
-              /*@
-               Get the index of an item.
+              [[Get the index of an item.
  
-               Index is the position of an item in segment control widget. Its
-               range is from @c 0 to <tt> count - 1 </tt>.
-               Count is the number of items, that can be get with
-               elm_segment_control_item_count_get().
+                Index is the position of an item in segment control widget. Its
+                range is from 0 to (count - 1).
+                Count is the number of items, that can be get with elm_segment_control_item_count_get()]]
  
++<<<<<<< HEAD
 +              @return The position of item in segment control widget.
 +
 +              @ingroup SegmentControl
 +             */
 +             return: int(-1);
++=======
+              return: int(-1); [[The position of item in segment control widget.]]
++>>>>>>> opensource/master
          }
        object_get @const {
-              /*@
-               Get the real Evas(Edje) object created to implement the view of a given
-               segment_control @p item.
+              [[Get the real Evas(Edje) object created to implement the view of a given segment_control item.
  
-               Base object is the @c Evas_Object that represents that item.
-               @return The base Edje object associated with @p it.
-               @ingroup SegmentControl
-              */
-              return: Evas_Object*;
+                Base object is the @Evas.Object that represents that item.]]
+              return: Evas.Object*; [[The base Edje object associated with $it]]
          }
        selected_set {
-              /*@
-               Set the selected state of an item.
+              [[Set the selected state of an item.
  
-               This sets the selected state of the given item @p it.
-               @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+                This sets the selected state of the given item $it.
+                $true for selected, $false for not selected.
  
-               If a new item is selected the previously selected will be unselected.
-               Selected item can be got with function
-               elm_segment_control_item_selected_get().
+                If a new item is selected the previously selected will be unselected.
+                Selected item can be got with function elm_segment_control_item_selected_get().
  
-               The selected item always will be highlighted on segment control.
+                The selected item always will be highlighted on segment control.]]
  
-               @see elm_segment_control_item_selected_get()
-               @ingroup SegmentControl
-              */
               params {
-                   Eina_Bool selected; /* @ The selected state. */
+                   selected: bool; [[The selected state.]]
               }
          }
     }
index 2f173bec0eff637121303a6af9e18b4d2964c6c6,25cd4a791689abd29ea53f853040eb60ebb03041..8f68fa9802ba1970fd60cbcd1c76a0886e105e34
@@@ -505,10 -507,11 +507,10 @@@ _popup_add(Elm_Slider_Data *sd, Eo *obj
  
     // XXX popup needs to adapt to theme etc.
     sd->popup = edje_object_add(evas_object_evas_get(obj));
 -   evas_object_smart_member_add(sd->popup, obj);
     if (sd->horizontal)
-      _elm_theme_set(NULL, sd->popup, "slider", "horizontal/popup", elm_widget_style_get(obj));
+      _elm_theme_set(elm_widget_theme_get(obj), sd->popup, "slider", "horizontal/popup", elm_widget_style_get(obj));
     else
-      _elm_theme_set(NULL, sd->popup, "slider", "vertical/popup", elm_widget_style_get(obj));
+      _elm_theme_set(elm_widget_theme_get(obj), sd->popup, "slider", "vertical/popup", elm_widget_style_get(obj));
     edje_object_scale_set(sd->popup, elm_widget_scale_get(obj) *
                           elm_config_scale_get());
     edje_object_signal_callback_add(sd->popup, "popup,hide,done", "elm", // XXX: for compat
index de70b994e166c303b287b970dcdaf4cc71668249,db3781a20217f7f9d4985b047c3c7c867b3cc25b..452f2950117557a12962eb2b5de00a0a0b96e291
@@@ -47,6 -69,21 +69,24 @@@ static const Elm_Action key_actions[] 
     {NULL, NULL}
  };
  
++<<<<<<< HEAD
++=======
+ EO_CALLBACKS_ARRAY_DEFINE(_inc_button_cb,
+    { EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _inc_button_clicked_cb},
+    { EVAS_CLICKABLE_INTERFACE_EVENT_PRESSED, _inc_button_pressed_cb},
+    { EVAS_CLICKABLE_INTERFACE_EVENT_UNPRESSED, _inc_button_unpressed_cb},
+    { EVAS_OBJECT_EVENT_MOUSE_MOVE, _inc_dec_button_mouse_move_cb }
+ );
+ EO_CALLBACKS_ARRAY_DEFINE(_dec_button_cb,
+    { EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _dec_button_clicked_cb},
+    { EVAS_CLICKABLE_INTERFACE_EVENT_PRESSED, _dec_button_pressed_cb},
+    { EVAS_CLICKABLE_INTERFACE_EVENT_UNPRESSED, _dec_button_unpressed_cb},
+    { EVAS_OBJECT_EVENT_MOUSE_MOVE, _inc_dec_button_mouse_move_cb }
+ );
++>>>>>>> opensource/master
  static void _access_increment_decrement_info_say(Evas_Object *obj,
                                                   Eina_Bool is_incremented);
  
@@@ -119,12 -156,12 +159,19 @@@ _entry_show(Elm_Spinner_Data *sd
            }
       }
  
++<<<<<<< HEAD
 +apply:
++=======
++>>>>>>> opensource/master
     if (_is_label_format_integer(fmt))
       snprintf(buf, sizeof(buf), fmt, (int)sd->val);
     else
       snprintf(buf, sizeof(buf), fmt, sd->val);
  
++<<<<<<< HEAD
++=======
+ apply:
++>>>>>>> opensource/master
     elm_object_text_set(sd->ent, buf);
  }
  
@@@ -392,9 -432,8 +442,14 @@@ _toggle_entry(Evas_Object *obj
                      (sd->ent, EVAS_CALLBACK_SHOW, _entry_show_cb, obj);
                 }
               elm_entry_single_line_set(sd->ent, EINA_TRUE);
++<<<<<<< HEAD
 +
 +             evas_object_smart_callback_add
 +                (sd->ent, "activated", _entry_activated_cb, obj);
++=======
+              eo_do(sd->ent, eo_event_callback_add
+                (ELM_ENTRY_EVENT_ACTIVATED, _entry_activated_cb, obj));
++>>>>>>> opensource/master
               elm_layout_content_set(obj, "elm.swallow.entry", sd->ent);
            }
          if (!sd->button_layout)
@@@ -627,9 -666,9 +682,15 @@@ _button_dec_stop_cb(void *data
     _spin_stop(data);
  }
  
++<<<<<<< HEAD
 +static void
 +_inc_button_clicked_cb(void *data,
 +                       Evas_Object *obj EINA_UNUSED,
++=======
+ static Eina_Bool
+ _inc_button_clicked_cb(void *data,
+                        Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
++>>>>>>> opensource/master
                         void *event_info EINA_UNUSED)
  {
     ELM_SPINNER_DATA_GET(data, sd);
     if (sd->entry_visible) _entry_value_apply(data);
     if (_elm_config->access_mode)
       _access_increment_decrement_info_say(data, EINA_TRUE);
++<<<<<<< HEAD
 +}
 +
 +static void
 +_inc_button_pressed_cb(void *data,
 +                       Evas_Object *obj EINA_UNUSED,
++=======
+    return EINA_TRUE;
+ }
+ static Eina_Bool
+ _inc_button_pressed_cb(void *data,
+                        Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
++>>>>>>> opensource/master
                         void *event_info EINA_UNUSED)
  {
     ELM_SPINNER_DATA_GET(data, sd);
                              _val_inc_start, data);
  
     if (sd->entry_visible) _entry_value_apply(data);
++<<<<<<< HEAD
 +}
 +
 +static void
 +_inc_button_unpressed_cb(void *data,
 +                         Evas_Object *obj EINA_UNUSED,
++=======
+    return EINA_TRUE;
+ }
+ static Eina_Bool
+ _inc_button_unpressed_cb(void *data,
+                          Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
++>>>>>>> opensource/master
                           void *event_info EINA_UNUSED)
  {
     ELM_SPINNER_DATA_GET(data, sd);
          sd->longpress_timer = NULL;
       }
     _spin_stop(data);
++<<<<<<< HEAD
 +}
++=======
++>>>>>>> opensource/master
  
 -   return EINA_TRUE;
 +static void
 +_text_button_clicked_cb(void *data,
 +                        Evas_Object *obj EINA_UNUSED,
 +                        void *event_info EINA_UNUSED)
 +{
 +   _toggle_entry(data);
  }
  
++<<<<<<< HEAD
 +static void
 +_dec_button_clicked_cb(void *data,
 +                       Evas_Object *obj EINA_UNUSED,
 +                       void *event_info EINA_UNUSED)
 +{
 +   ELM_SPINNER_DATA_GET(data, sd);
 +
 +   _spin_stop(data);
 +   sd->spin_speed = -sd->step;
 +   _spin_value(data);
 +
++=======
+ static Eina_Bool
+ _text_button_clicked_cb(void *data,
+                         Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
+                         void *event_info EINA_UNUSED)
+ {
+    _toggle_entry(data);
+    return EINA_TRUE;
+ }
+ static Eina_Bool
+ _dec_button_clicked_cb(void *data,
+                        Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
+                        void *event_info EINA_UNUSED)
+ {
+    ELM_SPINNER_DATA_GET(data, sd);
+    _spin_stop(data);
+    sd->spin_speed = -sd->step;
+    _spin_value(data);
++>>>>>>> opensource/master
     if (sd->entry_visible) _entry_value_apply(data);
  
     if (_elm_config->access_mode)
       _access_increment_decrement_info_say(data, EINA_FALSE);
++<<<<<<< HEAD
 +}
 +
 +static void
 +_dec_button_pressed_cb(void *data,
 +                       Evas_Object *obj EINA_UNUSED,
++=======
+    return EINA_TRUE;
+ }
+ static Eina_Bool
+ _dec_button_pressed_cb(void *data,
+                        Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
++>>>>>>> opensource/master
                         void *event_info EINA_UNUSED)
  {
     ELM_SPINNER_DATA_GET(data, sd);
                              _val_dec_start, data);
  
     if (sd->entry_visible) _entry_value_apply(data);
++<<<<<<< HEAD
 +}
 +
 +static void
 +_dec_button_unpressed_cb(void *data,
 +                         Evas_Object *obj EINA_UNUSED,
++=======
+    return EINA_TRUE;
+ }
+ static Eina_Bool
+ _dec_button_unpressed_cb(void *data,
+                          Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
++>>>>>>> opensource/master
                           void *event_info EINA_UNUSED)
  {
     ELM_SPINNER_DATA_GET(data, sd);
          sd->longpress_timer = NULL;
       }
     _spin_stop(data);
 -   return EINA_TRUE;
++<<<<<<< HEAD
++}
++=======
+    return EINA_TRUE;
+ }
+ static Eina_Bool
+ _inc_dec_button_mouse_move_cb(void *data, Eo *obj EINA_UNUSED,
+                               const Eo_Event_Description *desc EINA_UNUSED,
+                               void *event_info)
+ {
+    Evas_Event_Mouse_Move *ev = event_info;
+    ELM_SPINNER_DATA_GET(data, sd);
+    if ((ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) && sd->longpress_timer)
+      {
+         ecore_timer_del(sd->longpress_timer);
+         sd->longpress_timer = NULL;
+      }
++>>>>>>> opensource/master
++EOLIAN static void
++_elm_spinner_elm_layout_sizing_eval(Eo *obj, Elm_Spinner_Data *_pd EINA_UNUSED)
++{
++   Evas_Coord minw = -1, minh = -1;
++   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
++
++   elm_coords_finger_size_adjust(1, &minw, 1, &minh);
++   edje_object_size_min_restricted_calc
++     (wd->resize_obj, &minw, &minh, minw, minh);
++   elm_coords_finger_size_adjust(1, &minw, 1, &minh);
++   evas_object_size_hint_min_set(obj, minw, minh);
++   evas_object_size_hint_max_set(obj, -1, -1);
  }
  
  EOLIAN static void
@@@ -1004,12 -1074,8 +1166,17 @@@ _elm_spinner_evas_object_smart_add(Eo *
          priv->inc_button = elm_button_add(obj);
          elm_object_style_set(priv->inc_button, "spinner/increase/default");
  
++<<<<<<< HEAD
 +        evas_object_smart_callback_add
 +          (priv->inc_button, "clicked", _inc_button_clicked_cb, obj);
 +        evas_object_smart_callback_add
 +          (priv->inc_button, "pressed", _inc_button_pressed_cb, obj);
 +        evas_object_smart_callback_add
 +          (priv->inc_button, "unpressed", _inc_button_unpressed_cb, obj);
++=======
+         eo_do(priv->inc_button,
+               eo_event_callback_array_add(_inc_button_cb(), obj));
++>>>>>>> opensource/master
  
          elm_layout_content_set(obj, "elm.swallow.inc_button", priv->inc_button);
          elm_widget_sub_object_add(obj, priv->inc_button);
          priv->text_button = elm_button_add(obj);
          elm_object_style_set(priv->text_button, "spinner/default");
  
++<<<<<<< HEAD
 +        evas_object_smart_callback_add
 +          (priv->text_button, "clicked", _text_button_clicked_cb, obj);
++=======
+         eo_do(priv->text_button, eo_event_callback_add
+           (EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _text_button_clicked_cb, obj));
++>>>>>>> opensource/master
  
          elm_layout_content_set(obj, "elm.swallow.text_button", priv->text_button);
          elm_widget_sub_object_add(obj, priv->text_button);
          priv->dec_button = elm_button_add(obj);
          elm_object_style_set(priv->dec_button, "spinner/decrease/default");
  
++<<<<<<< HEAD
 +        evas_object_smart_callback_add
 +          (priv->dec_button, "clicked", _dec_button_clicked_cb, obj);
 +        evas_object_smart_callback_add
 +          (priv->dec_button, "pressed", _dec_button_pressed_cb, obj);
 +        evas_object_smart_callback_add
 +          (priv->dec_button, "unpressed", _dec_button_unpressed_cb, obj);
++=======
+         eo_do(priv->dec_button,
+               eo_event_callback_array_add(_dec_button_cb(), obj));
++>>>>>>> opensource/master
  
          elm_layout_content_set(obj, "elm.swallow.dec_button", priv->dec_button);
          elm_widget_sub_object_add(obj, priv->dec_button);
@@@ -1090,23 -1152,23 +1267,43 @@@ EOLIAN static Eina_Boo
  _elm_spinner_elm_widget_theme_apply(Eo *obj, Elm_Spinner_Data *sd)
  {
     ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
++<<<<<<< HEAD
 +
 +   if (!elm_layout_theme_set(obj, "spinner", "base", elm_widget_style_get(obj)))
 +     CRI("Failed to set layout!");
 +
 +   if (edje_object_part_exists(wd->resize_obj, "elm.swallow.dec_button"))
 +     sd->button_layout = EINA_TRUE;
 +   else
 +     sd->button_layout = EINA_FALSE;
 +
 +   if (sd->ent)
 +     {
 +        Eina_Strbuf *buf = eina_strbuf_new();
 +        eina_strbuf_append_printf(buf, "spinner/%s", elm_widget_style_get(obj));
 +        elm_widget_style_set(sd->ent, eina_strbuf_string_get(buf));
 +        eina_strbuf_free(buf);
 +     }
 +
++=======
+    if (!elm_layout_theme_set(obj, "spinner", "base", elm_widget_style_get(obj)))
+      CRI("Failed to set layout!");
+    if (edje_object_part_exists(wd->resize_obj, "elm.swallow.dec_button"))
+      sd->button_layout = EINA_TRUE;
+    else
+      sd->button_layout = EINA_FALSE;
+    if (sd->ent)
+      {
+         Eina_Strbuf *buf = eina_strbuf_new();
+         eina_strbuf_append_printf(buf, "spinner/%s", elm_widget_style_get(obj));
+         elm_widget_style_set(sd->ent, eina_strbuf_string_get(buf));
+         eina_strbuf_free(buf);
+      }
++>>>>>>> opensource/master
     if (sd->inc_button)
       {
          Eina_Strbuf *buf = eina_strbuf_new();
index 6e6b71ac1d14d1946e62e127fb9ff840e8254737,cd8b40044c144a6586d7161370368bcbb049e646..4a8238074520f5eee4653551c39c029dbf496467
@@@ -366,15 -223,15 +223,27 @@@ class Elm.Spinner (Elm.Layout, Elm_Inte
        Eo.Base.constructor;
        Evas.Object_Smart.add;
        Evas.Object_Smart.del;
++<<<<<<< HEAD
 +      Elm_Widget.theme_apply;
 +      Elm_Widget.focus_next_manager_is;
 +      Elm_Widget.focus_direction_manager_is;
 +      Elm_Widget.access;
 +      Elm_Widget.focus_next;
 +      Elm_Widget.focus_direction;
 +      Elm_Widget.on_focus;
 +      Elm_Widget.event;
 +      Elm_Layout.sizing_eval;
++=======
+       Elm.Widget.theme_apply;
+       Elm.Widget.focus_next_manager_is;
+       Elm.Widget.focus_direction_manager_is;
+       Elm.Widget.access;
+       Elm.Widget.focus_next;
+       Elm.Widget.focus_direction;
+       Elm.Widget.on_focus;
+       Elm.Widget.event;
+       Elm.Layout.sizing_eval;
++>>>>>>> opensource/master
        Elm_Interface_Atspi_Accessible.name.get;
        Elm_Interface_Atspi_Value.value_and_text.get;
        Elm_Interface_Atspi_Value.value_and_text.set;
index ad4fc141c976bb35a0ed60cdaa6234a04de64a80,ef38744f285a99f7b5496a5bb90993800769802c..5f4b0fd691f8ad0abd52d56e9c70fa051a1b3b62
@@@ -264,13 -266,13 +266,21 @@@ _items_size_fit(Evas_Object *obj, Evas_
            {
               if (!it->separator && !it->object)
                 elm_coords_finger_size_adjust(1, &mw, 1, &mh);
++<<<<<<< HEAD
 +             edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw, mh);
++=======
+              edje_object_size_min_restricted_calc(elm_layout_edje_get(VIEW(it)), &mw, &mh, mw, mh);
++>>>>>>> opensource/master
            }
          else if (!more)
            {
               more = EINA_TRUE;
               elm_coords_finger_size_adjust(1, &mw, 1, &mh);
++<<<<<<< HEAD
 +             edje_object_size_min_restricted_calc(sd->VIEW(more_item), &mw, &mh, mw, mh);
++=======
+              edje_object_size_min_restricted_calc(elm_layout_edje_get(sd->VIEW(more_item)), &mw, &mh, mw, mh);
++>>>>>>> opensource/master
            }
  
          if (mw != -1 || mh != -1)
@@@ -621,16 -624,16 +632,21 @@@ _elm_toolbar_item_focused(Elm_Object_It
  
     if (elm_widget_focus_highlight_enabled_get(obj))
       {
-         edje_object_signal_emit
+         elm_layout_signal_emit
             (VIEW(it), "elm,state,focused", "elm");
       }
-    edje_object_signal_emit
+    elm_layout_signal_emit
        (VIEW(it), "elm,highlight,on", "elm");
-    focus_raise = edje_object_data_get(VIEW(it), "focusraise");
+    focus_raise = elm_layout_data_get(VIEW(it), "focusraise");
     if ((focus_raise) && (!strcmp(focus_raise, "on")))
       evas_object_raise(VIEW(it));
++<<<<<<< HEAD
 +   evas_object_smart_callback_call
 +      (obj, SIG_ITEM_FOCUSED, EO_OBJ(it));
++=======
+    eo_do(obj, eo_event_callback_call
+      (ELM_TOOLBAR_EVENT_ITEM_FOCUSED, EO_OBJ(it)));
++>>>>>>> opensource/master
     if (_elm_config->atspi_mode)
       elm_interface_atspi_accessible_state_changed_signal_emit(EO_OBJ(it), ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
  }
@@@ -650,14 -653,14 +666,19 @@@ _elm_toolbar_item_unfocused(Elm_Object_
     if (elm_widget_focus_highlight_enabled_get(obj))
       {
          ELM_TOOLBAR_ITEM_DATA_GET(sd->focused_item, focus_it);
-         edje_object_signal_emit
+         elm_layout_signal_emit
             (VIEW(focus_it), "elm,state,unfocused", "elm");
       }
-    edje_object_signal_emit
+    elm_layout_signal_emit
        (VIEW(it), "elm,highlight,off", "elm");
     sd->focused_item = NULL;
++<<<<<<< HEAD
 +   evas_object_smart_callback_call
 +      (obj, SIG_ITEM_UNFOCUSED, eo_it);
++=======
+    eo_do(obj, eo_event_callback_call
+      (ELM_TOOLBAR_EVENT_ITEM_UNFOCUSED, eo_it));
++>>>>>>> opensource/master
     if (_elm_config->atspi_mode)
       elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
  }
@@@ -1438,53 -1483,11 +1501,40 @@@ _elm_toolbar_elm_widget_theme_apply(Eo 
  static void
  _elm_toolbar_item_label_update(Elm_Toolbar_Item_Data *item)
  {
-    Evas_Coord mw = -1, mh = -1, minw = -1, minh = -1;
-    ELM_TOOLBAR_DATA_GET(WIDGET(item), sd);
-    edje_object_part_text_escaped_set(VIEW(item), "elm.text", item->label);
+    elm_layout_text_set(VIEW(item), "elm.text", item->label);
     if (item->label)
++<<<<<<< HEAD
 +     edje_object_signal_emit(VIEW(item), "elm,state,text,visible", "elm");
 +   else
 +     edje_object_signal_emit(VIEW(item), "elm,state,text,hidden", "elm");
 +
 +   elm_coords_finger_size_adjust(1, &mw, 1, &mh);
 +   // If the min size is changed by edje signal in edc,
 +   //the below function should be called before the calculation.
 +   edje_object_message_signal_process(VIEW(item));
 +   edje_object_size_min_restricted_calc(VIEW(item), &mw, &mh, mw, mh);
 +   if (sd->shrink_mode != ELM_TOOLBAR_SHRINK_EXPAND)
 +     {
 +        if (sd->vertical)
 +          {
 +             evas_object_size_hint_weight_set
 +               (VIEW(item), EVAS_HINT_EXPAND, -1.0);
 +             evas_object_size_hint_align_set
 +               (VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL);
 +          }
 +        else
 +          {
 +             evas_object_size_hint_weight_set
 +               (VIEW(item), -1.0, EVAS_HINT_EXPAND);
 +             evas_object_size_hint_align_set
 +               (VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL);
 +          }
 +     }
++=======
+      elm_layout_signal_emit(VIEW(item), "elm,state,text,visible", "elm");
++>>>>>>> opensource/master
     else
-      {
-         evas_object_size_hint_weight_set
-           (VIEW(item), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-         evas_object_size_hint_align_set
-           (VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL);
-      }
-    evas_object_size_hint_min_get(VIEW(item), &minw, &minh);
-    if ((minw < mw) && (minh < mh))
-      evas_object_size_hint_min_set(VIEW(item), mw, mh);
-    else if ((minw < mw) && (minh > mh))
-      evas_object_size_hint_min_set(VIEW(item), mw, minh);
-    else if ((minw > mw) && (minh < mh))
-      evas_object_size_hint_min_set(VIEW(item), minw, mh);
+      elm_layout_signal_emit(VIEW(item), "elm,state,text,hidden", "elm");
  }
  
  static void
@@@ -2299,12 -2320,14 +2367,17 @@@ _access_widget_item_register(Elm_Toolba
     _elm_access_activate_callback_set(ai, _access_activate_cb, NULL);
  }
  
- EOLIAN static void
+ EOLIAN static Eo *
  _elm_toolbar_item_eo_base_constructor(Eo *eo_it, Elm_Toolbar_Item_Data *it)
  {
-    eo_do_super(eo_it, ELM_TOOLBAR_ITEM_CLASS, eo_constructor());
+    eo_it = eo_do_super_ret(eo_it, ELM_TOOLBAR_ITEM_CLASS, eo_it, eo_constructor());
     it->base = eo_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
     eo_do(eo_it, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_MENU_ITEM));
++<<<<<<< HEAD
++=======
+    return eo_it;
++>>>>>>> opensource/master
  }
  
  static Elm_Toolbar_Item_Data *
@@@ -2386,33 -2410,17 +2460,28 @@@ _item_new(Evas_Object *obj
          evas_object_show(it->icon);
          elm_widget_sub_object_add(obj, it->icon);
       }
-    if (it->label)
+    else
       {
-         edje_object_part_text_escaped_set(VIEW(it), "elm.text", it->label);
-         edje_object_signal_emit(VIEW(it), "elm,state,text,visible", "elm");
+         elm_layout_signal_emit(VIEW(it), "elm,state,icon,hidden", "elm");
+         elm_layout_signal_emit(VIEW(it), "elm,icon,hidden", "elm");
       }
  
++<<<<<<< HEAD
 +   mw = mh = -1;
 +   if (!it->separator && !it->object)
 +     elm_coords_finger_size_adjust(1, &mw, 1, &mh);
 +   // If the min size is changed by edje signal in edc,
 +   //the below function should be called before the calculation.
 +   edje_object_message_signal_process(VIEW(it));
 +   edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw, mh);
 +   if (sd->shrink_mode != ELM_TOOLBAR_SHRINK_EXPAND)
++=======
+    if (it->label)
++>>>>>>> opensource/master
       {
-         if (sd->vertical)
-           {
-              evas_object_size_hint_weight_set(VIEW(it), EVAS_HINT_EXPAND, -1.0);
-              evas_object_size_hint_align_set
-                (VIEW(it), EVAS_HINT_FILL, EVAS_HINT_FILL);
-           }
-         else
-           {
-              evas_object_size_hint_weight_set(VIEW(it), -1.0, EVAS_HINT_EXPAND);
-              evas_object_size_hint_align_set
-                (VIEW(it), EVAS_HINT_FILL, EVAS_HINT_FILL);
-           }
+         elm_layout_text_set(VIEW(it), "elm.text", it->label);
+         elm_layout_signal_emit(VIEW(it), "elm,state,text,visible", "elm");
+         elm_layout_signal_emit(VIEW(it), "elm,text,visible", "elm");
       }
     else
       {
  static void
  _elm_toolbar_item_icon_update(Elm_Toolbar_Item_Data *item)
  {
-    Evas_Coord mw = -1, mh = -1, minw = -1, minh = -1;
     Elm_Toolbar_Item_State *it_state;
     Evas_Object *old_icon =
-      edje_object_part_swallow_get(VIEW(item), "elm.swallow.icon");
+      elm_layout_content_get(VIEW(item), "elm.swallow.icon");
     Eina_List *l;
  
-    ELM_TOOLBAR_DATA_GET(WIDGET(item), sd);
     elm_widget_sub_object_del(WIDGET(item), old_icon);
-    edje_object_part_swallow(VIEW(item), "elm.swallow.icon", item->icon);
+    elm_layout_content_set(VIEW(item), "elm.swallow.icon", item->icon);
     if (item->icon)
-        edje_object_signal_emit(VIEW(item), "elm,state,icon,visible", "elm");
+        elm_layout_signal_emit(VIEW(item), "elm,state,icon,visible", "elm");
     else
-        edje_object_signal_emit(VIEW(item), "elm,state,icon,hidden", "elm");
+        elm_layout_signal_emit(VIEW(item), "elm,state,icon,hidden", "elm");
     evas_object_hide(old_icon);
++<<<<<<< HEAD
 +   elm_coords_finger_size_adjust(1, &mw, 1, &mh);
 +   // If the min size is changed by edje signal in edc,
 +   //the below function should be called before the calculation.
 +   edje_object_message_signal_process(VIEW(item));
 +   edje_object_size_min_restricted_calc(VIEW(item), &mw, &mh, mw, mh);
 +   if (sd->shrink_mode != ELM_TOOLBAR_SHRINK_EXPAND)
 +     {
 +        if (sd->vertical)
 +          {
 +             evas_object_size_hint_weight_set
 +               (VIEW(item), EVAS_HINT_EXPAND, -1.0);
 +             evas_object_size_hint_align_set
 +               (VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL);
 +          }
 +        else
 +          {
 +             evas_object_size_hint_weight_set
 +               (VIEW(item), -1.0, EVAS_HINT_EXPAND);
 +             evas_object_size_hint_align_set
 +               (VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL);
 +          }
 +     }
 +   else
 +     {
 +        evas_object_size_hint_weight_set
 +          (VIEW(item), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 +        evas_object_size_hint_align_set
 +          (VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL);
 +     }
 +
 +   evas_object_size_hint_min_get(VIEW(item), &minw, &minh);
 +   if ((minw < mw) && (minh < mh))
 +     evas_object_size_hint_min_set(VIEW(item), mw, mh);
 +   else if ((minw < mw) && (minh > mh))
 +     evas_object_size_hint_min_set(VIEW(item), mw, minh);
 +   else if ((minw > mw) && (minh < mh))
 +     evas_object_size_hint_min_set(VIEW(item), minw, mh);
++=======
++>>>>>>> opensource/master
  
     EINA_LIST_FOREACH(item->states, l, it_state)
       {
@@@ -3895,5 -3863,106 +3964,109 @@@ _elm_toolbar_elm_interface_atspi_access
     return ret;
  }
  
++<<<<<<< HEAD
++=======
+ EOLIAN int
+ _elm_toolbar_elm_interface_atspi_selection_selected_children_count_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *pd)
+ {
+    return pd->selected_item ? 1 : 0;
+ }
+ EOLIAN Eo*
+ _elm_toolbar_elm_interface_atspi_selection_selected_child_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *pd, int child_idx)
+ {
+    if (child_idx != 0)
+      return NULL;
+    return pd->selected_item;
+ }
+ EOLIAN Eina_Bool
+ _elm_toolbar_elm_interface_atspi_selection_child_select(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *pd, int child_index)
+ {
+    Elm_Toolbar_Item_Data *item;
+    if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
+      {
+         EINA_INLIST_FOREACH(pd->items, item)
+           {
+              if (child_index-- == 0)
+                {
+                   elm_toolbar_item_selected_set(EO_OBJ(item), EINA_TRUE);
+                   return EINA_TRUE;
+                }
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_toolbar_elm_interface_atspi_selection_selected_child_deselect(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *pd, int child_index)
+ {
+    if (child_index != 0)
+      return EINA_FALSE;
+    if (!pd->selected_item)
+      return EINA_FALSE;
+    elm_toolbar_item_selected_set(pd->selected_item, EINA_FALSE);
+    return EINA_TRUE;
+ }
+ EOLIAN Eina_Bool
+ _elm_toolbar_elm_interface_atspi_selection_is_child_selected(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *pd, int child_index)
+ {
+    Elm_Toolbar_Item_Data *item;
+    EINA_INLIST_FOREACH(pd->items, item)
+      {
+         if (child_index-- == 0)
+           {
+              return elm_toolbar_item_selected_get(EO_OBJ(item));
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_toolbar_elm_interface_atspi_selection_all_children_select(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *pd EINA_UNUSED)
+ {
+    return EINA_FALSE;
+ }
+ EOLIAN Eina_Bool
+ _elm_toolbar_elm_interface_atspi_selection_clear(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *pd)
+ {
+    if (pd->selected_item)
+      elm_toolbar_item_selected_set(pd->selected_item, EINA_FALSE);
+    return EINA_TRUE;
+ }
+ EOLIAN Eina_Bool
+ _elm_toolbar_elm_interface_atspi_selection_child_deselect(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *pd, int child_index)
+ {
+    Elm_Toolbar_Item_Data *item;
+    if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
+      {
+         EINA_INLIST_FOREACH(pd->items, item)
+           {
+              if (child_index-- == 0)
+                {
+                   elm_toolbar_item_selected_set(EO_OBJ(item), EINA_FALSE);
+                   return EINA_TRUE;
+                }
+           }
+      }
+    return EINA_FALSE;
+ }
+ EOLIAN void
+ _elm_toolbar_evas_object_smart_calculate(Eo *obj, Elm_Toolbar_Data *pd EINA_UNUSED)
+ {
+    _sizing_eval(obj);
+ }
++>>>>>>> opensource/master
  #include "elm_toolbar.eo.c"
  #include "elm_toolbar_item.eo.c"
index 7d572e5886f5516536d636420a3b1c10d105a7a3,25e6034bca70d3baaad42f90a9d02a31764f4971..7ad7ec65abdce6436dbf0ee39ccb910291a25d82
@@@ -516,22 -377,20 +377,23 @@@ class Elm.Toolbar (Elm.Widget, Elm_Inte
        Elm_Interface_Atspi_Widget_Action.elm_actions.get;
        Elm_Interface_Atspi_Accessible.children.get;
        Elm_Interface_Atspi_Accessible.state_set.get;
++<<<<<<< HEAD
++=======
+       Elm_Interface_Atspi_Selection.selected_children_count.get;
+       Elm_Interface_Atspi_Selection.selected_child.get;
+       Elm_Interface_Atspi_Selection.selected_child_deselect;
+       Elm_Interface_Atspi_Selection.child_select;
+       Elm_Interface_Atspi_Selection.child_deselect;
+       Elm_Interface_Atspi_Selection.is_child_selected;
+       Elm_Interface_Atspi_Selection.all_children_select;
+       Elm_Interface_Atspi_Selection.clear;
++>>>>>>> opensource/master
     }
     events {
-       scroll;
-       scroll,anim,start;
-       scroll,anim,stop;
-       scroll,drag,start;
-       scroll,drag,stop;
-       clicked;
-       selected;
-       unselected;
-       longpressed;
-       clicked,double;
        language,changed;
        access,changed;
-       focused;
-       unfocused;
+       item,focused;
+       item,unfocused;
     }
  
  }
index f0cb9282f705d5edc0934834d682e575083f9095,e88ebc554ddfc2a4bdd7e94eb1c0934ce00d9a02..e3e66f8a4ec2d422729ba6ea30561e00e9e670e7
@@@ -416,14 -295,14 +295,25 @@@ class Elm.Toolbar_Item(Elm.Widget_Item
        implements {
             Eo.Base.constructor;
             Eo.Base.destructor;
++<<<<<<< HEAD
 +           Elm_Widget_Item.disable;
 +           Elm_Widget_Item.focus.set;
 +           Elm_Widget_Item.focus.get;
 +           Elm_Widget_Item.part_text.get;
 +           Elm_Widget_Item.part_text.set;
 +           Elm_Widget_Item.part_content.get;
 +           Elm_Widget_Item.part_content.set;
 +           Elm_Widget_Item.part_content_unset;
++=======
+            Elm.Widget_Item.disable;
+            Elm.Widget_Item.focus.set;
+            Elm.Widget_Item.focus.get;
+            Elm.Widget_Item.part_text.get;
+            Elm.Widget_Item.part_text.set;
+            Elm.Widget_Item.part_content.get;
+            Elm.Widget_Item.part_content.set;
+            Elm.Widget_Item.part_content_unset;
++>>>>>>> opensource/master
             Elm_Interface_Atspi_Accessible.name.get;
             Elm_Interface_Atspi_Accessible.state_set.get;
        }
index 2801553076a8c815e5eb13978cc490558ae2c6cb,ade93909007746c83ed534b314698592c8e98108..596242d652e46ed49922e14142bc6234bee3cc20
@@@ -30,7 -30,7 +30,11 @@@ struct _Elm_Transi
     EINA_MAGIC;
  
     Ecore_Animator *animator;
++<<<<<<< HEAD
 +   Ecore_Timer *timer;
++=======
+    Ecore_Timer *go_in_timer; /**< Timer used by elm_transit_go_in() */
++>>>>>>> opensource/master
     Eina_Inlist *effect_list;
     Eina_List *objs;
     Elm_Transit *prev_chain_transit;
@@@ -267,7 -272,7 +276,11 @@@ _transit_del(Elm_Transit *transit
     if (transit->del_data.func)
       transit->del_data.func(transit->del_data.arg, transit);
  
++<<<<<<< HEAD
 +   ecore_timer_del(transit->timer);
++=======
+    ecore_timer_del(transit->go_in_timer);
++>>>>>>> opensource/master
  
     //cut off the chain transit relationship
     EINA_LIST_FOREACH_SAFE(transit->next_chain_transits, elist, elist_next, chain_transit)
@@@ -464,11 -469,11 +477,19 @@@ _recover_image_uv(Evas_Object *obj, Eva
  }
  
  static Eina_Bool
++<<<<<<< HEAD
 +_transit_go_in_cb(void *data)
 +{
 +   Elm_Transit *transit = data;
 +
 +   transit->timer = NULL;
++=======
+ _go_in_timer_cb(void *data)
+ {
+    Elm_Transit *transit = data;
+    transit->go_in_timer = NULL;
++>>>>>>> opensource/master
     elm_transit_go(transit);
  
     return ECORE_CALLBACK_CANCEL;
@@@ -738,7 -743,7 +759,11 @@@ elm_transit_go(Elm_Transit *transit
  {
     ELM_TRANSIT_CHECK_OR_RETURN(transit);
  
++<<<<<<< HEAD
 +   ELM_SAFE_FREE(transit->timer, ecore_timer_del);
++=======
+    ELM_SAFE_FREE(transit->go_in_timer, ecore_timer_del);
++>>>>>>> opensource/master
  
     Eina_List *elist;
     Evas_Object *obj;
@@@ -767,8 -772,8 +792,13 @@@ elm_transit_go_in(Elm_Transit *transit
  {
     ELM_TRANSIT_CHECK_OR_RETURN(transit);
  
++<<<<<<< HEAD
 +   if (transit->timer) ecore_timer_del(transit->timer);
 +   transit->timer = ecore_timer_add(in, _transit_go_in_cb, transit);
++=======
+    ecore_timer_del(transit->go_in_timer);
+    transit->go_in_timer = ecore_timer_add(in, _go_in_timer_cb, transit);
++>>>>>>> opensource/master
  }
  
  EAPI void
index 6a48cef81f68447bb74bc5462d36d9abd500fe9f,90938d5ffe1a9ce740094da4126773045b3e16a6..7d6da70d2cd8fe3678273c0eeb0ea0862e7c8886
@@@ -589,7 -589,7 +589,11 @@@ EAPI void                   elm_transit
   * @since 1.14
   * @ingroup Transit
   */
++<<<<<<< HEAD
 +EAPI void elm_transit_go_in(Elm_Transit *transit, double in);
++=======
+ EAPI void                   elm_transit_go_in(Elm_Transit *transit, double in);
++>>>>>>> opensource/master
  
  /**
   * Pause/Resume the transition.
index 1c43e3c393b6ee2346f06289b689f71b2fb325ca,832ea1e759f78c386fba90e421d0aee7b1addb88..346b2f4ab697f5824a47a845ce102fb2ed3505ab
@@@ -197,19 -179,10 +179,20 @@@ _elm_widget_focus_highlight_object_get(
     Evas_Object *top = elm_widget_top_get(obj);
  
     if (top && eo_isa(top, ELM_WIN_CLASS))
-      _elm_win_focus_highlight_signal_callback_del(top, emission, source, _focus_highlight_signal_cb);
+      return _elm_win_focus_highlight_object_get(top);
+    return NULL;
  }
  
 +Evas_Object *
 +_elm_widget_focus_highlight_object_get(const Evas_Object *obj)
 +{
 +      Evas_Object *top = elm_widget_top_get(obj);
 +
 +      if (top && eo_isa(top, ELM_WIN_CLASS))
 +              return _elm_win_focus_highlight_object_get(top);
 +      return NULL;
 +}
 +
  EAPI Eina_Bool
  elm_widget_focus_highlight_enabled_get(const Evas_Object *obj)
  {
@@@ -857,7 -833,6 +850,10 @@@ _parent_focus(Evas_Object *obj, Elm_Obj
       {
          sd->focused = EINA_TRUE;
          eo_do(obj, elm_obj_widget_on_focus(item));
++<<<<<<< HEAD
 +        elm_widget_focus_region_show(obj);
++=======
++>>>>>>> opensource/master
       }
     sd->focus_order_on_calc = EINA_FALSE;
  
@@@ -2265,7 -2280,7 +2303,11 @@@ _elm_widget_focus_direction_weight_get(
   */
  
  EOLIAN static Eina_Bool
++<<<<<<< HEAD
 +_elm_widget_focus_direction_get(Eo *obj, Elm_Widget_Smart_Data *sd, const Evas_Object *base, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight)
++=======
+ _elm_widget_focus_direction_get(const Eo *obj, Elm_Widget_Smart_Data *sd, const Evas_Object *base, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight)
++>>>>>>> opensource/master
  {
     double c_weight;
  
   * @ingroup Widget
   */
  EOLIAN static Eina_Bool
++<<<<<<< HEAD
 +_elm_widget_focus_list_direction_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const Evas_Object *base, const Eina_List *items, list_data_get_func_type list_data_get, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight)
++=======
+ _elm_widget_focus_list_direction_get(const Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const Evas_Object *base, const Eina_List *items, list_data_get_func_type list_data_get, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight)
++>>>>>>> opensource/master
  {
     if (!direction || !weight || !base || !items)
       return EINA_FALSE;
   * @ingroup Widget
   */
  EOLIAN static Eina_Bool
++<<<<<<< HEAD
 +_elm_widget_focus_next_get(Eo *obj, Elm_Widget_Smart_Data *sd, Elm_Focus_Direction dir, Evas_Object **next, Elm_Object_Item **next_item)
++=======
+ _elm_widget_focus_next_get(const Eo *obj, Elm_Widget_Smart_Data *sd, Elm_Focus_Direction dir, Evas_Object **next, Elm_Object_Item **next_item)
++>>>>>>> opensource/master
  {
     Elm_Access_Info *ac;
  
   * @ingroup Widget
   */
  EOLIAN static Eina_Bool
++<<<<<<< HEAD
 +_elm_widget_focus_list_next_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const Eina_List *items, list_data_get_func_type list_data_get, Elm_Focus_Direction dir, Evas_Object **next, Elm_Object_Item **next_item)
++=======
+ _elm_widget_focus_list_next_get(const Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const Eina_List *items, list_data_get_func_type list_data_get, Elm_Focus_Direction dir, Evas_Object **next, Elm_Object_Item **next_item)
++>>>>>>> opensource/master
  {
     Eina_List *(*list_next)(const Eina_List *list) = NULL;
     Evas_Object *focused_object = NULL;
@@@ -2744,7 -2759,7 +2798,11 @@@ _elm_widget_focus_next_object_set(Eo *o
  }
  
  EOLIAN static Elm_Object_Item*
++<<<<<<< HEAD
 +_elm_widget_focus_next_item_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd, Elm_Focus_Direction dir)
++=======
+ _elm_widget_focus_next_item_get(const Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd, Elm_Focus_Direction dir)
++>>>>>>> opensource/master
  {
     Elm_Object_Item *ret = NULL;
  
@@@ -2976,6 -2991,7 +3034,10 @@@ _elm_widget_focus_steal(Eo *obj, Elm_Wi
            }
       }
     _parent_focus(obj, item);
++<<<<<<< HEAD
++=======
+    elm_widget_focus_region_show(obj);
++>>>>>>> opensource/master
     return;
  }
  
@@@ -3937,8 -3960,12 +4006,15 @@@ elm_widget_focus_mouse_up_handle(Evas_O
  EOLIAN static void
  _elm_widget_focus_mouse_up_handle(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
  {
+    Evas_Object *top;
     if (!obj) return;
     if (!_is_focusable(obj)) return;
++<<<<<<< HEAD
++=======
+    top = elm_widget_top_get(obj);
+    if (top && eo_isa(top, ELM_WIN_CLASS)) _elm_win_focus_auto_hide(top);
++>>>>>>> opensource/master
     elm_widget_focus_steal(obj, NULL);
  }
  
@@@ -4241,7 -4268,7 +4317,11 @@@ _elm_widget_focus_move_policy_get(Eo *o
   * Sets the widget's focus move policy.
   *
   * @param obj The widget.
++<<<<<<< HEAD
 + * @param policy Elm_Focus_Momve_Policy to set object's focus move policy.
++=======
+  * @param policy Elm_Focus_Move_Policy to set object's focus move policy.
++>>>>>>> opensource/master
   */
  
  EOLIAN static void
@@@ -4431,11 -4460,17 +4513,25 @@@ _elm_widget_item_eo_base_destructor(Eo 
       }
     eina_hash_free(item->labels);
  
++<<<<<<< HEAD
 +   if (item->description)
 +     eina_stringshare_del(item->description);
 +
 +   if (_elm_config->atspi_mode)
 +       elm_interface_atspi_accessible_children_changed_del_signal_emit(item->widget, eo_item);
++=======
+    eo_do(eo_item,
+          elm_interface_atspi_accessible_description_set(NULL),
+          elm_interface_atspi_accessible_name_set(NULL),
+          elm_interface_atspi_accessible_translation_domain_set(NULL),
+          elm_interface_atspi_accessible_relationships_clear()
+          );
+    if (_elm_config->atspi_mode && item->widget)
+      elm_interface_atspi_accessible_children_changed_del_signal_emit(item->widget, eo_item);
+    elm_interface_atspi_accessible_removed(eo_item);
++>>>>>>> opensource/master
  
     EINA_MAGIC_SET(item, EINA_MAGIC_NONE);
  
@@@ -4559,36 -4594,63 +4655,96 @@@ _elm_widget_item_widget_get(const Eo *e
     return item->widget;
  }
  
++<<<<<<< HEAD
 +EOLIAN static const char*
 +_elm_widget_item_elm_interface_atspi_accessible_description_get(Eo *eo_item EINA_UNUSED,
 +                                                                Elm_Widget_Item_Data *item)
 +{
 +   return item->description;
 +}
 +
 +EOLIAN static void
 +_elm_widget_item_elm_interface_atspi_accessible_description_set(Eo *eo_item EINA_UNUSED,
 +                                                                Elm_Widget_Item_Data *item,
 +                                                                const char *descr)
 +{
 +   eina_stringshare_replace(&item->description, descr);
 +}
 +
 +EOLIAN static Elm_Atspi_Role
 +_elm_widget_item_elm_interface_atspi_accessible_role_get(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item)
 +{
 +   return item->role;
 +}
 +
 +EOLIAN static void
 +_elm_widget_item_elm_interface_atspi_accessible_role_set(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item,
 +                                                         Elm_Atspi_Role role)
 +{
 +   item->role = role;
 +}
 +
 +EOLIAN static Elm_Atspi_State_Set
 +_elm_widget_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_item EINA_UNUSED,
++=======
+ EAPI Eina_Bool
+ _elm_widget_onscreen_is(Evas_Object *widget)
+ {
+    Evas_Object *parent = widget;
+    Evas_Coord x, y, w, h, wx, wy, ww, wh;
+    Evas *evas = evas_object_evas_get(widget);
+    if (!evas) return EINA_FALSE;
+    // check if on canvas
+    evas_output_viewport_get(evas, &x, &y, &w, &h);
+    evas_object_geometry_get(widget, &wx, &wy, &ww, &wh);
+    if (((wx < x) && (wx + ww < x)) || ((wx > x + w) && (wx + ww > x + w)) ||
+        ((wy < y) && (wy + wh < y)) || ((wy > y+ h) && (wy + wh > y + h)))
+      return EINA_FALSE;
+    // check if inside scrollable parent viewport
+    do {
+       parent = elm_widget_parent_get(parent);
+       if (parent && !evas_object_visible_get(parent))
+         return EINA_FALSE;
+       if (parent && eo_isa(parent, ELM_INTERFACE_SCROLLABLE_MIXIN))
+         {
+            evas_object_geometry_get(parent, &x, &y, &w, &h);
+            if (((wx < x) && (wx + ww < x)) || ((wx > x + w) && (wx + ww > x + w)) ||
+                ((wy < y) && (wy + wh < y)) || ((wy > y+ h) && (wy + wh > y + h)))
+              return EINA_FALSE;
+         }
+    } while (parent && (parent != elm_widget_top_get(widget)));
+    return EINA_TRUE;
+ }
+ EAPI Eina_Bool
+ _elm_widget_item_onscreen_is(Elm_Object_Item *item)
+ {
+    Evas_Coord x, y, w, h, wx, wy, ww, wh;
+    Elm_Widget_Item_Data *id = eo_data_scope_get(item, ELM_WIDGET_ITEM_CLASS);
+    if (!id || !id->view) return EINA_FALSE;
+    if (!evas_object_visible_get(id->view))
+      return EINA_FALSE;
+    if (!_elm_widget_onscreen_is(id->widget))
+      return EINA_FALSE;
+    evas_object_geometry_get(id->view, &x, &y, &w, &h);
+    evas_object_geometry_get(id->widget, &wx, &wy, &ww, &wh);
+    if (((wx < x) && (wx + ww < x)) || ((wx > x + w) && (wx + ww > x + w)) ||
+        ((wy < y) && (wy + wh < y)) || ((wy > y+ h) && (wy + wh > y + h)))
+      return EINA_FALSE;
+    return EINA_TRUE;
+ }
+ EOLIAN static Elm_Atspi_State_Set
+ _elm_widget_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_item,
++>>>>>>> opensource/master
                                                                Elm_Widget_Item_Data *item EINA_UNUSED)
  {
     Elm_Atspi_State_Set states = 0;
       STATE_TYPE_SET(states, ELM_ATSPI_STATE_FOCUSED);
     if (!elm_object_item_disabled_get(eo_item))
       {
++<<<<<<< HEAD
 +        STATE_TYPE_SET(states, ELM_ATSPI_STATE_ACTIVE);
 +        STATE_TYPE_SET(states, ELM_ATSPI_STATE_ENABLED);
 +        STATE_TYPE_SET(states, ELM_ATSPI_STATE_SENSITIVE);
 +     }
++=======
+         STATE_TYPE_SET(states, ELM_ATSPI_STATE_ENABLED);
+         STATE_TYPE_SET(states, ELM_ATSPI_STATE_SENSITIVE);
+         STATE_TYPE_SET(states, ELM_ATSPI_STATE_VISIBLE);
+      }
+    if (_elm_widget_item_onscreen_is(eo_item))
+      STATE_TYPE_SET(states, ELM_ATSPI_STATE_SHOWING);
++>>>>>>> opensource/master
  
     return states;
  }
@@@ -5467,7 -5536,7 +5637,11 @@@ _elm_widget_item_access_object_get(cons
  }
  
  EOLIAN static Evas_Object *
++<<<<<<< HEAD
 +_elm_widget_item_focus_next_object_get(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item, Elm_Focus_Direction dir)
++=======
+ _elm_widget_item_focus_next_object_get(const Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item, Elm_Focus_Direction dir)
++>>>>>>> opensource/master
  {
     Evas_Object *ret = NULL;
  
@@@ -5505,7 -5574,7 +5679,11 @@@ _elm_widget_item_focus_next_object_set(
  }
  
  EOLIAN static Elm_Object_Item*
++<<<<<<< HEAD
 +_elm_widget_item_focus_next_item_get(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item, Elm_Focus_Direction dir)
++=======
+ _elm_widget_item_focus_next_item_get(const Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item, Elm_Focus_Direction dir)
++>>>>>>> opensource/master
  {
     Elm_Object_Item *ret = NULL;
  
@@@ -5648,15 -5717,8 +5826,20 @@@ elm_widget_tree_dot_dump(const Evas_Obj
  #endif
  }
  
++<<<<<<< HEAD
 +static void
 +_on_focus_change(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 +{
 +   Eina_Bool val = data ? EINA_TRUE : EINA_FALSE;
 +   elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_FOCUSED, val);
 +}
 +
 +EOLIAN static void
 +_elm_widget_eo_base_constructor(Eo *obj, Elm_Widget_Smart_Data *sd)
++=======
+ EOLIAN static Eo *
+ _elm_widget_eo_base_constructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSED)
++>>>>>>> opensource/master
  {
     Eo *parent = NULL;
  
     eo_do(obj, elm_obj_widget_parent_set(parent));
     sd->on_create = EINA_FALSE;
  
++<<<<<<< HEAD
 +   sd->role = ELM_ATSPI_ROLE_UNKNOWN;
 +   evas_object_smart_callback_add(obj, "focused", _on_focus_change, (void*)1);
 +   evas_object_smart_callback_add(obj, "unfocused", _on_focus_change, NULL);
 +}
 +
 +EOLIAN static void
 +_elm_widget_eo_base_destructor(Eo *obj, Elm_Widget_Smart_Data *sd)
 +{
 +   Eo *parent;
 +   if (sd->description) eina_stringshare_del(sd->description);
 +
 +   eo_do(obj, parent = elm_interface_atspi_accessible_parent_get());
 +   if (parent && !eo_destructed_is(parent))
 +     elm_interface_atspi_accessible_children_changed_del_signal_emit(parent, obj);
 +
 +   eo_do_super(obj, ELM_WIDGET_CLASS, eo_destructor());
++=======
+    eo_do(obj, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_UNKNOWN));
+    return obj;
+ }
+ EOLIAN static void
+ _elm_widget_eo_base_destructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSED)
+ {
+    sd->on_destroy = EINA_TRUE;
+    eo_do(obj,
+          elm_interface_atspi_accessible_description_set(NULL),
+          elm_interface_atspi_accessible_name_set(NULL),
+          elm_interface_atspi_accessible_translation_domain_set(NULL),
+          elm_interface_atspi_accessible_relationships_clear()
+          );
+    eo_do_super(obj, ELM_WIDGET_CLASS, eo_destructor());
+    sd->on_destroy = EINA_FALSE;
+    elm_interface_atspi_accessible_removed(obj);
++>>>>>>> opensource/master
  }
  
  EOLIAN static Eina_Bool
@@@ -5771,36 -5841,17 +5981,47 @@@ EOLIAN static char
  _elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
  {
     const char *ret;
++<<<<<<< HEAD
++=======
+    char *name;
+    eo_do_super(obj, ELM_WIDGET_CLASS, name = elm_interface_atspi_accessible_name_get());
+    if (name) return name;
++>>>>>>> opensource/master
     ret = elm_object_text_get(obj);
     if (!ret) return NULL;
  
     return _elm_util_mkup_to_text(ret);
  }
  
++<<<<<<< HEAD
 +EOLIAN static const char*
 +_elm_widget_elm_interface_atspi_accessible_description_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd)
 +{
 +   return _pd->description;
 +}
 +
 +EOLIAN static void
 +_elm_widget_elm_interface_atspi_accessible_description_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd, const char *descr)
 +{
 +   eina_stringshare_replace(&_pd->description, descr);
 +}
 +
 +EOLIAN static Elm_Atspi_Role
 +_elm_widget_elm_interface_atspi_accessible_role_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd EINA_UNUSED)
 +{
 +   return pd->role;
 +}
 +
 +EOLIAN static void
 +_elm_widget_elm_interface_atspi_accessible_role_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd, Elm_Atspi_Role role)
 +{
 +   pd->role = role;
 +}
 +
++=======
++>>>>>>> opensource/master
  EOLIAN static Eina_List*
  _elm_widget_elm_interface_atspi_accessible_children_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd EINA_UNUSED)
  {
  EOLIAN static Eo*
  _elm_widget_elm_interface_atspi_accessible_parent_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd)
  {
++<<<<<<< HEAD
 +   if (pd->atspi_custom_parent)
 +     return pd->atspi_custom_parent;
 +   else
 +     return pd->parent_obj;
 +}
 +
 +EOLIAN static void
 +_elm_widget_elm_interface_atspi_accessible_parent_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd, Eo *parent)
 +{
 +   pd->atspi_custom_parent = parent;
++=======
+    Eo *ret;
+    eo_do_super(obj, ELM_WIDGET_CLASS, ret = elm_interface_atspi_accessible_parent_get());
+    return ret ? ret : pd->parent_obj;
++>>>>>>> opensource/master
  }
  
  EOLIAN static Elm_Atspi_State_Set
  _elm_widget_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Widget_Smart_Data *pd EINA_UNUSED)
  {
     Elm_Atspi_State_Set states = 0;
++<<<<<<< HEAD
 +   Evas *evas = NULL;
++=======
++>>>>>>> opensource/master
  
     eo_do_super(obj, ELM_WIDGET_CLASS, states = elm_interface_atspi_accessible_state_set_get());
  
     if (evas_object_visible_get(obj))
++<<<<<<< HEAD
 +     STATE_TYPE_SET(states, ELM_ATSPI_STATE_VISIBLE);
 +   evas = evas_object_evas_get(obj);
 +   if (evas)
 +     {
 +        Evas_Coord x, y, w, h, wx, wy, ww, wh;
 +
 +        evas_output_viewport_get(evas, &x, &y, &w, &h);
 +        evas_object_geometry_get(obj, &wx, &wy, &ww, &wh);
 +        if (!(((wx < x) && (wx + ww < x)) || ((wx > x + w) && (wx + ww > x + w)) ||
 +              ((wy < y) && (wy + wh < y)) || ((wy > y+ h) && (wy + wh > y + h))))
 +          STATE_TYPE_SET(states, ELM_ATSPI_STATE_SHOWING);
 +     }
 +   if (elm_object_focus_get(obj))
 +     STATE_TYPE_SET(states, ELM_ATSPI_STATE_FOCUSED);
 +   if (elm_object_focus_allow_get(obj))
 +     STATE_TYPE_SET(states, ELM_ATSPI_STATE_FOCUSABLE);
 +   if (!elm_object_disabled_get(obj))
 +     {
 +        STATE_TYPE_SET(states, ELM_ATSPI_STATE_ENABLED);
 +        STATE_TYPE_SET(states, ELM_ATSPI_STATE_ACTIVE);
++=======
+      {
+         STATE_TYPE_SET(states, ELM_ATSPI_STATE_VISIBLE);
+         if (_elm_widget_onscreen_is(obj))
+           STATE_TYPE_SET(states, ELM_ATSPI_STATE_SHOWING);
+      }
+    if (!elm_widget_child_can_focus_get(obj))
+      {
+         if (elm_object_focus_allow_get(obj))
+           STATE_TYPE_SET(states, ELM_ATSPI_STATE_FOCUSABLE);
+         if (elm_object_focus_get(obj))
+           STATE_TYPE_SET(states, ELM_ATSPI_STATE_FOCUSED);
+      }
+    if (!elm_object_disabled_get(obj))
+      {
+         STATE_TYPE_SET(states, ELM_ATSPI_STATE_ENABLED);
++>>>>>>> opensource/master
          STATE_TYPE_SET(states, ELM_ATSPI_STATE_SENSITIVE);
       }
  
@@@ -5884,40 -5923,60 +6133,97 @@@ _elm_widget_elm_interface_atspi_accessi
     return ret;
  }
  
++<<<<<<< HEAD
 +static Elm_Atspi_Relation*
 +_relation_new(Elm_Atspi_Relation_Type type, Eo *obj)
 +{
 +   Elm_Atspi_Relation *rel = calloc(1, sizeof(Elm_Atspi_Relation));
 +   if (!rel) return NULL;
 +
 +   rel->type = type;
 +   rel->obj = obj;
 +
 +   return rel;
 +}
 +
 +EOLIAN static Eina_List*
 +_elm_widget_elm_interface_atspi_accessible_relation_set_get(Eo *obj, Elm_Widget_Smart_Data *pd EINA_UNUSED)
 +{
 +   Eina_List *list = NULL;
 +   Elm_Atspi_Relation *rel;
 +   Evas_Object *rel_obj;
 +
 +   rel_obj = elm_object_focus_next_object_get(obj, ELM_FOCUS_NEXT);
 +   if (eo_isa(rel_obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
 +     {
 +        rel = _relation_new(ELM_ATSPI_RELATION_FLOWS_TO, rel_obj);
 +        list = eina_list_append(list, rel);
 +     }
 +
 +   rel_obj = elm_object_focus_next_object_get(obj, ELM_FOCUS_PREVIOUS);
 +   if (eo_isa(rel_obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
 +     {
 +        rel = _relation_new(ELM_ATSPI_RELATION_FLOWS_FROM, rel_obj);
 +        list = eina_list_append(list, rel);
 +     }
 +
 +   return list;
++=======
+ EOLIAN static void
+ _elm_widget_item_elm_interface_atspi_component_extents_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *sd EINA_UNUSED, Eina_Bool screen_coords, int *x, int *y, int *w, int *h)
+ {
+    int ee_x, ee_y;
+    if (!sd->view)
+      {
+         if (x) *x = -1;
+         if (y) *y = -1;
+         if (w) *w = -1;
+         if (h) *h = -1;
+         return;
+      }
+    evas_object_geometry_get(sd->view, x, y, w, h);
+    if (screen_coords)
+      {
+         Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(sd->view));
+         if (!ee) return;
+         ecore_evas_geometry_get(ee, &ee_x, &ee_y, NULL, NULL);
+         if (x) *x += ee_x;
+         if (y) *y += ee_y;
+      }
+ }
+ EOLIAN static Eina_Bool
+ _elm_widget_item_elm_interface_atspi_component_extents_set(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *sd EINA_UNUSED, Eina_Bool screen_coords EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED)
+ {
+    return EINA_FALSE;
+ }
+ EOLIAN static int
+ _elm_widget_item_elm_interface_atspi_component_layer_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *sd EINA_UNUSED)
+ {
+    if (!sd->view)
+      return -1;
+    return evas_object_layer_get(sd->view);
+ }
+ EOLIAN static Eina_Bool
+ _elm_widget_item_elm_interface_atspi_component_focus_grab(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *_pd EINA_UNUSED)
+ {
+    elm_object_item_focus_set(obj, EINA_TRUE);
+    return elm_object_item_focus_get(obj);
+ }
+ EOLIAN static double
+ _elm_widget_item_elm_interface_atspi_component_alpha_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *sd EINA_UNUSED)
+ {
+    int alpha;
+    if (!sd->view) return -1.0;
+    evas_object_color_get(sd->view, NULL, NULL, NULL, &alpha);
+    return (double)alpha / 255.0;
++>>>>>>> opensource/master
  }
  
  #include "elm_widget_item.eo.c"
index 8010b76a2b4c0125c47257ff968958c2531bf011,35bed55f1d06d6cc90db8ec0f478ed47713b3190..70e6fe923ec7d1ab602e9ecc090bb99b7aaf679e
@@@ -1,4 -1,6 +1,10 @@@
++<<<<<<< HEAD
 +abstract Elm_Widget (Evas.Object_Smart, Elm_Interface_Atspi_Accessible, Elm_Interface_Atspi_Component)
++=======
+ import elm_general;
+ abstract Elm.Widget (Evas.Object_Smart, Elm_Interface_Atspi_Accessible, Elm_Interface_Atspi_Component)
++>>>>>>> opensource/master
  {
     eo_prefix: elm_obj_widget;
     data: Elm_Widget_Smart_Data;
              return: bool;
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             const(char)* style;
+             style: const(char)*;
           }
        }
-       scale {
+       @property scale {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             double scale;
+             scale: double;
           }
        }
-       focus_custom_chain {
+       @property focus_custom_chain {
+          set {
+             values {
+                objs: list<Evas.Object*>*;
+             }
+          }
+          get {
+             values {
+                objs: const(list<Evas.Object*>)*;
+             }
+          }
+       }
+       @property can_focus {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             list *objs @const_get;
+             can_focus: bool;
           }
        }
-       can_focus {
+       @property highlight_in_theme {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             bool can_focus;
+             highlight: bool;
           }
        }
-       highlight_in_theme {
+       @property parent {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             bool highlight;
+             parent: Evas.Object * @nullable;
           }
        }
-       parent {
+       @property access_info {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             Evas_Object *parent;
+             txt: const(char)* @nullable;
           }
        }
-       access_info {
+       @property drag_lock_x {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             const(char)* txt;
+             lock: bool;
           }
        }
-       drag_lock_x {
+       @property access_highlight_in_theme {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             bool lock;
+             highlight: bool; [[highlight]]
           }
        }
-       access_highlight_in_theme {
+       @property focus_region_show_mode {
+          [[Control the focus_region_show mode.]]
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             bool highlight; /*@ highlight */
+             mode: Elm_Focus_Region_Show_Mode;
           }
        }
++<<<<<<< HEAD
 +      focus_region_show_mode {
 +         /*Control the focus_region_show mode.*/
 +         set {
 +         }
 +         get {
 +         }
 +         values {
 +            Elm_Focus_Region_Show_Mode mode;
 +         }
 +      }
 +      parent_highlight {
++=======
+       @property parent_highlight {
++>>>>>>> opensource/master
           set {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             bool highlighted;
+             highlighted: bool;
           }
        }
-       theme_object {
+       @property theme_object {
           set {
-             /*@ No description supplied by the EAPI. */
              return: bool;
           }
           values {
              return: bool;
           }
        }
-       focused_object {
+       @property focused_object {
           get {
-             /*@ No description supplied by the EAPI. */
-             return: Evas_Object *;
+             return: Evas.Object *;
           }
        }
-       parent2 {
+       @property parent2 {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           values {
-             Evas_Object *parent;
+             parent: Evas.Object * @nullable;
           }
        }
-       part_text {
+       @property part_text {
           set {
-             /*@ No description supplied by the EAPI. */
           }
           get {
-             /*@ No description supplied by the EAPI. */
           }
           keys {
-             const(char)* part;
+             part: const(char)*;
           }
           values {
-             const(char)* label;
+             label: const(char)*;
           }
        }
++<<<<<<< HEAD
 +      focus_move_policy {
 +         set {
 +            /*@ No description supplied by the EAPI. */
 +         }
 +         get {
 +            /*@ No description supplied by the EAPI. */
 +         }
 +         values {
 +            Elm_Focus_Move_Policy policy;
 +         }
 +      }
 +   }
 +   methods {
++=======
++>>>>>>> opensource/master
        newest_focus_order_get @const {
-          /*@ No description supplied by the EAPI. */
-          return: Evas_Object *;
+          return: Evas.Object *;
           params {
-             @out uint newest_focus_order;
-             @in bool can_focus_only;
+             @out newest_focus_order: uint;
+             @in can_focus_only: bool;
           }
        }
        scroll_hold_push {
           }
        }
        focus_next_object_set {
++<<<<<<< HEAD
 +         /*Set the next object with specific focus direction.*/
++=======
+          [[Set the next object with specific focus direction.
+            @since 1.8]]
++>>>>>>> opensource/master
           params {
-             @in Evas_Object *next;
-             @in Elm_Focus_Direction dir;
+             @in next: Evas.Object * @nullable; [[Focus next object]]
+             @in dir: Elm.Focus_Direction; [[Focus direction]]
           }
        }
        focus_next_object_get @const {
++<<<<<<< HEAD
 +         /*Get the next object with specific focus direction.*/
 +         return: Evas_Object *;
++=======
+          [[Get the next object with specific focus direction.
+            @since 1.8]]
+          return: Evas.Object *; [[Focus next object]]
++>>>>>>> opensource/master
           params {
-             @in Elm_Focus_Direction dir;
+             @in dir: Elm.Focus_Direction; [[Focus direction]]
+          }
+       }
+       focus_next_item_set {
+          [[Set the next object item with specific focus direction.
+            @since 1.16]]
+          params {
+             @in next_item: Elm_Object_Item * @nullable; [[Focus next object item]]
+             @in dir: Elm.Focus_Direction; [[Focus direction]]
+          }
+       }
+       focus_next_item_get @const {
+          [[Get the next object item with specific focus direction.
+            @since 1.16]]
+          return: Elm_Object_Item *; [[Focus next object item]]
+          params {
+             @in dir: Elm.Focus_Direction; [[Focus direction]]
           }
        }
 +      focus_next_item_set {
 +         /*Set the next object item with specific focus direction.*/
 +         params {
 +            @in Elm_Object_Item *next_item;
 +            @in Elm_Focus_Direction dir;
 +         }
 +      }
 +      focus_next_item_get @const {
 +         /*Get the next object item with specific focus direction.*/
 +         return: Elm_Object_Item *;
 +         params {
 +            @in Elm_Focus_Direction dir;
 +         }
 +      }
        focus_tree_unfocusable_handle {
-          /*@ No description supplied by the EAPI. */
        }
        focus_custom_chain_prepend {
-          /*@ No description supplied by the EAPI. */
           params {
-             @in Evas_Object *child;
-             @in Evas_Object *relative_child;
+             @in child: Evas.Object *;
+             @in relative_child: Evas.Object * @optional;
           }
        }
        part_text_translate {
           }
        }
        on_focus {
++<<<<<<< HEAD
 +         /*@ 'Virtual' function handling focus in/out events on the widget.
 +         return EINA_TRUE if this widget can handle focus, EINA_FALSE otherwise */
 +         params {
 +            @in Elm_Object_Item *item;
++=======
+          [['Virtual' function handling focus in/out events on the widget.  return true if this widget can handle focus, false otherwise]]
+          params {
+             @in item: Elm_Object_Item * @nullable;
++>>>>>>> opensource/master
           }
           return: bool;
        }
           }
        }
        focus_direction {
-          /*@ 'Virtual' function handling passing focus to sub-objects given a direction, in degrees. */
+          [['Virtual' function handling passing focus to sub-objects given a direction, in degrees.]]
           params {
++<<<<<<< HEAD
 +            @in const(Evas_Object)* base;
 +            @in double degree;
 +            @out Evas_Object *direction;
 +            @out Elm_Object_Item *direction_item;
 +            @out double weight;
++=======
+             @in base: const(Evas.Object)*;
+             @in degree: double;
+             @out direction: Evas.Object *;
+             @out direction_item: Elm_Object_Item *;
+             @out weight: double;
++>>>>>>> opensource/master
           }
           return: bool;
        }
           }
        }
        focus_list_direction_get @const {
-          /*@ No description supplied by the EAPI. */
           return: bool;
           params {
++<<<<<<< HEAD
 +            @in const(Evas_Object)* base;
 +            @in const(list)* items;
 +            @in list_data_get_func_type list_data_get;
 +            @in double degree;
 +            @out Evas_Object *direction;
 +            @out Elm_Object_Item *direction_item;
 +            @out double weight;
++=======
+             @in base: const(Evas.Object)*;
+             @in items: const(list<Eo.Base*>)*;
+             @in list_data_get: list_data_get_func_type;
+             @in degree: double;
+             @out direction: Evas.Object *;
+             @out direction_item: Elm_Object_Item *;
+             @out weight: double;
++>>>>>>> opensource/master
           }
        }
        focused_object_clear {
           }
        }
        focus_next_get @const {
-          /*@ No description supplied by the EAPI. */
           return: bool;
           params {
++<<<<<<< HEAD
 +            @in Elm_Focus_Direction dir;
 +            @out Evas_Object *next;
 +            @out Elm_Object_Item *next_item;
++=======
+             @in dir: Elm.Focus_Direction;
+             @out next: Evas.Object *;
+             @out next_item: Elm_Object_Item *;
++>>>>>>> opensource/master
           }
        }
        translatable_part_text_get @const {
        }
        focus_steal {
           params {
++<<<<<<< HEAD
 +            @in Elm_Object_Item *item;
++=======
+             @in item: Elm_Object_Item * @nullable;
++>>>>>>> opensource/master
           }
        }
        focus_hide_handle {
-          /*@ No description supplied by the EAPI. */
        }
        focus_next {
-          /*@ 'Virtual' function handling passing focus to sub-objects. */
+          [['Virtual' function handling passing focus to sub-objects.]]
           params {
++<<<<<<< HEAD
 +            @in Elm_Focus_Direction dir;
 +            @out Evas_Object *next;
 +            @out Elm_Object_Item *next_item;
++=======
+             @in dir: Elm.Focus_Direction;
+             @out next: Evas.Object *;
+             @out next_item: Elm_Object_Item *;
++>>>>>>> opensource/master
           }
           return: bool;
        }
        focus_list_next_get @const {
-          /*@ No description supplied by the EAPI. */
           return: bool;
           params {
++<<<<<<< HEAD
 +            @in const(list)* items;
 +            @in list_data_get_func_type list_data_get;
 +            @in Elm_Focus_Direction dir;
 +            @out Evas_Object *next;
 +            @out Elm_Object_Item *next_item;
++=======
+             @in items: const(list<Eo.Base*>)*;
+             @in list_data_get: list_data_get_func_type;
+             @in dir: Elm.Focus_Direction;
+             @out next: Evas.Object *;
+             @out next_item: Elm_Object_Item *;
++>>>>>>> opensource/master
           }
        }
        focus_mouse_up_handle {
           return: bool;
        }
        focus_direction_get @const {
-          /*@ No description supplied by the EAPI. */
           return: bool;
           params {
++<<<<<<< HEAD
 +            @in const(Evas_Object)* base;
 +            @in double degree;
 +            @out Evas_Object *direction;
 +            @out Elm_Object_Item *direction_item;
 +            @out double weight;
++=======
+             @in base: const(Evas.Object)*;
+             @in degree: double;
+             @out direction: Evas.Object *;
+             @out direction_item: Elm_Object_Item *;
+             @out weight: double;
++>>>>>>> opensource/master
           }
        }
        signal_callback_del {
        @virtual .focus_next;
        @virtual .parent_widget.get;
        Elm_Interface_Atspi_Accessible.name.get;
++<<<<<<< HEAD
 +      Elm_Interface_Atspi_Accessible.description.get;
 +      Elm_Interface_Atspi_Accessible.description.set;
 +      Elm_Interface_Atspi_Accessible.role.get;
 +      Elm_Interface_Atspi_Accessible.role.set;
 +      Elm_Interface_Atspi_Accessible.state_set.get;
 +      Elm_Interface_Atspi_Accessible.children.get;
 +      Elm_Interface_Atspi_Accessible.parent.get;
 +      Elm_Interface_Atspi_Accessible.parent.set;
 +      Elm_Interface_Atspi_Accessible.attributes.get;
 +      Elm_Interface_Atspi_Accessible.relation_set.get;
 +      Elm_Interface_Atspi_Component.focus_grab;
++=======
+       Elm_Interface_Atspi_Accessible.state_set.get;
+       Elm_Interface_Atspi_Accessible.children.get;
+       Elm_Interface_Atspi_Accessible.parent.get;
+       Elm_Interface_Atspi_Accessible.attributes.get;
+       Elm_Interface_Atspi_Component.focus_grab;
+    }
+    events {
+       moved;
+       focused;
+       unfocused;
+       language,changed;
+       access,changed;
++>>>>>>> opensource/master
     }
  }
index 5abc2bfea5391b42d4633121e8bcda604adf13ee,e553ec5f53247786d51508bba9aeb96bc1b2f400..35a07ce3f42ef4c05cd8402b2d9df9d812f0a81b
@@@ -541,9 -535,6 +539,12 @@@ void                  _elm_widget_highl
  // win focus highlight
  void                  _elm_win_focus_highlight_start(Evas_Object *obj);
  void                  _elm_win_focus_highlight_in_theme_update(Evas_Object *obj, Eina_Bool in_theme);
++<<<<<<< HEAD
 +void                  _elm_win_focus_highlight_signal_emit(Evas_Object *obj, const char *emission, const char *source);
 +void                  _elm_win_focus_highlight_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb _focus_highlight_signal_cb, void *data);
 +void                  _elm_win_focus_highlight_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb _focus_highlight_signal_cb);
++=======
++>>>>>>> opensource/master
  Evas_Object          *_elm_win_focus_highlight_object_get(Evas_Object *obj);
  void                  _elm_win_focus_auto_show(Evas_Object *obj);
  void                  _elm_win_focus_auto_hide(Evas_Object *obj);
Simple merge
index c3222980bf7e3d085e01768cbd613dbabf55c2c3,9953bc8d93852e9ec2c953c456a80f6ece755df7..2365fabb77ce8ca8b5b3fa324a96fd4dcabaa312
@@@ -1,4 -1,5 +1,9 @@@
++<<<<<<< HEAD
 +class Elm_Widget_Item(Eo.Base, Elm_Interface_Atspi_Accessible)
++=======
+ class Elm.Widget_Item(Eo.Base, Elm_Interface_Atspi_Accessible,
+                       Elm_Interface_Atspi_Component)
++>>>>>>> opensource/master
  {
        eo_prefix: elm_wdg_item;
        legacy_prefix: elm_object_item;
                  return: bool;
             }
             focus_next_object_get @const {
++<<<<<<< HEAD
 +                /**
 +                                Get the next object with specific focus direction.
 +
 +                                @ingroup General
 +                  @since 1.16
 +                               */
 +                params {
 +                     Elm_Focus_Direction dir;
 +                } 
 +                return: Evas_Object *;
 +           }
 +           focus_next_object_set {
 +                /**
 +                                Set the next object with specific focus direction.
 +
 +                                @ingroup General
 +                  @since 1.16
 +                               */
 +                params {
 +                     Evas_Object *next;
 +                     Elm_Focus_Direction dir;
 +                }
 +           }
 +           focus_next_item_get @const {
 +                /**
 +                                Get the next object item with specific focus direction.
 +
 +                                @ingroup General
 +                  @since 1.16
 +                               */
 +                params {
 +                     Elm_Focus_Direction dir;
 +                }
 +                return: Elm_Object_Item *;
 +           }
 +           focus_next_item_set {
 +                /**
 +                                Set the next object item with specific focus direction.
 +
 +                                @ingroup General
 +                  @since 1.16
 +                               */
 +                params {
 +                     Elm_Object_Item *next_item;
 +                     Elm_Focus_Direction dir;
++=======
+                 [[Get the next object with specific focus direction.
+                   @since 1.16]]
+                 params {
+                      dir: Elm.Focus_Direction; [[Focus direction]]
+                 }
+                 return: Evas.Object *; [[Focus next object]]
+            }
+            focus_next_object_set {
+                 [[Set the next object with specific focus direction.
+                   @since 1.16]]
+                 params {
+                      next: Evas.Object * @nullable; [[Focus next object]]
+                      dir: Elm.Focus_Direction; [[Focus direction]]
+                 }
+            }
+            focus_next_item_get @const {
+                 [[Get the next object item with specific focus direction.
+                   @since 1.16]]
+                 params {
+                      dir: Elm.Focus_Direction; [[Focus direction]]
+                 }
+                 return: Elm_Object_Item *; [[Focus next object item]]
+            }
+            focus_next_item_set {
+                 [[Set the next object item with specific focus direction.
+                   @since 1.16]]
+                 params {
+                      next_item: Elm_Object_Item * @nullable; [[Focus next object item]]
+                      dir: Elm.Focus_Direction; [[Focus direction]]
++>>>>>>> opensource/master
                  }
             }
        }
        implements {
             Eo.Base.constructor;
             Eo.Base.destructor;
++<<<<<<< HEAD
 +           Elm_Interface_Atspi_Accessible.description.get;
 +           Elm_Interface_Atspi_Accessible.description.set;
 +           Elm_Interface_Atspi_Accessible.role.get;
 +           Elm_Interface_Atspi_Accessible.role.set;
 +           Elm_Interface_Atspi_Accessible.state_set.get;
 +           Elm_Interface_Atspi_Accessible.parent.get;
++=======
+            Elm_Interface_Atspi_Accessible.state_set.get;
+            Elm_Interface_Atspi_Accessible.parent.get;
+            Elm_Interface_Atspi_Component.extents.get;
+            Elm_Interface_Atspi_Component.extents.set;
+            Elm_Interface_Atspi_Component.alpha.get;
+            Elm_Interface_Atspi_Component.layer.get;
+            Elm_Interface_Atspi_Component.focus_grab;
++>>>>>>> opensource/master
        }
  }
Simple merge
index a78902e0d9f351441ba13ba44a6b4691a5fb8343,f9d3e842834520a0f1c1e0ce21ad9279def22f98..7cc6f8c57f064ebf115021de060200e8c9b8e69d
@@@ -174,7 -176,7 +178,11 @@@ struct _Elm_Win_Dat
     const char  *title;
     const char  *icon_name;
     const char  *role;
++<<<<<<< HEAD
 +   const char  *frame_style;
++=======
+    Eina_Stringshare *name;
++>>>>>>> opensource/master
  
     Evas_Object *main_menu;
  
@@@ -236,9 -245,6 +251,12 @@@ static const char SIG_INDICATOR_PROP_CH
  static const char SIG_ROTATION_CHANGED[] = "rotation,changed";
  static const char SIG_PROFILE_CHANGED[] = "profile,changed";
  static const char SIG_WM_ROTATION_CHANGED[] = "wm,rotation,changed";
++<<<<<<< HEAD
 +static const char SIG_THEME_CHANGED[] = "theme,changed";
 +static const char SIG_CONFORMANT_CHANGED[] = "conformant,changed";
 +static const char SIG_AUX_HINT_ALLOWED[] = "aux,hint,allowed";
++=======
++>>>>>>> opensource/master
  
  static const Evas_Smart_Cb_Description _smart_callbacks[] = {
     {SIG_DELETE_REQUEST, ""},
@@@ -1322,23 -1422,11 +1486,25 @@@ _elm_win_state_change(Ecore_Evas *ee
          _elm_win_xwin_update(sd);
  #endif
          elm_widget_orientation_set(obj, sd->rot);
-         evas_object_smart_callback_call(obj, SIG_ROTATION_CHANGED, NULL);
-         evas_object_smart_callback_call(obj, SIG_WM_ROTATION_CHANGED, NULL);
+         eo_do(obj, eo_event_callback_call
+           (ELM_WIN_EVENT_ROTATION_CHANGED, NULL));
+         eo_do(obj, eo_event_callback_call
+           (ELM_WIN_EVENT_WM_ROTATION_CHANGED, NULL));
       }
 +   if (ch_conformant)
 +     {
 +        evas_object_smart_callback_call(obj, SIG_CONFORMANT_CHANGED, NULL);
 +     }
 +   if (ch_aux_hint)
 +     {
 +        void *id;
 +        Eina_List *l;
 +        EINA_LIST_FOREACH(aux_hints, l, id)
 +          {
 +             evas_object_smart_callback_call(obj, SIG_AUX_HINT_ALLOWED, id);
 +          }
 +        eina_list_free(aux_hints);
 +     }
  }
  
  EOLIAN static Eina_Bool
@@@ -1831,7 -1945,7 +2023,11 @@@ _elm_win_evas_object_smart_del(Eo *obj
     eina_stringshare_del(sd->title);
     eina_stringshare_del(sd->icon_name);
     eina_stringshare_del(sd->role);
++<<<<<<< HEAD
 +   eina_stringshare_del(sd->frame_style);
++=======
+    eina_stringshare_del(sd->name);
++>>>>>>> opensource/master
     evas_object_del(sd->icon);
     evas_object_del(sd->main_menu);
  
@@@ -1880,15 -1991,11 +2073,17 @@@ _elm_win_obj_intercept_show(void *data
       }
     if (sd->pointer.obj)
       {
+ #if 0
          ecore_evas_show(sd->pointer.ee);
+ #endif
          evas_object_show(sd->pointer.obj);
       }
 +#ifdef HAVE_ELEMENTARY_WAYLAND
 +   int x, y, w, h;
 +
 +   evas_object_geometry_get(obj, &x, &y, &w, &h);
 +   ecore_wl_window_opaque_region_set(sd->wl.win, x, y, w, h);
 +#endif
     evas_object_show(obj);
  #ifdef ELEMENTARY_X
     if (sd->type == ELM_WIN_TOOLTIP)
@@@ -3608,25 -3805,26 +3893,43 @@@ _elm_win_finalize_internal(Eo *obj, Elm
  #endif
  
     /* do not append to list; all windows render as black rects */
++<<<<<<< HEAD
 +   if (type == ELM_WIN_FAKE) return;
 +   _elm_win_list = eina_list_append(_elm_win_list, obj);
 +   _elm_win_count++;
 +
 +   sd->frame_style = eina_stringshare_add("default");
 +   if ((engine) && ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM))))
 +     {
 +        TRAP(sd, fullscreen_set, 1);
 +     }
 +   else if ((type != ELM_WIN_INLINED_IMAGE) &&
 +            ((engine) &&
 +             ((!strcmp(engine, ELM_WAYLAND_SHM) ||
 +              (!strcmp(engine, ELM_WAYLAND_EGL))))))
 +     _elm_win_frame_add(sd, sd->frame_style);
++=======
+    if (type != ELM_WIN_FAKE)
+      {
+         _elm_win_list = eina_list_append(_elm_win_list, obj);
+         _elm_win_count++;
  
-    if (_elm_config->focus_highlight_enable)
-      elm_win_focus_highlight_enabled_set(obj, EINA_TRUE);
-    if (_elm_config->focus_highlight_animate)
-      elm_win_focus_highlight_animate_set(obj, EINA_TRUE);
+         if ((engine) && ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM))))
+           {
+              TRAP(sd, fullscreen_set, 1);
+           }
+         else if ((type != ELM_WIN_INLINED_IMAGE) &&
+                  ((engine) &&
+                   ((!strcmp(engine, ELM_WAYLAND_SHM) ||
+                    (!strcmp(engine, ELM_WAYLAND_EGL))))))
+           _elm_win_frame_add(sd, "default");
++>>>>>>> opensource/master
+         if (_elm_config->focus_highlight_enable)
+           elm_win_focus_highlight_enabled_set(obj, EINA_TRUE);
+         if (_elm_config->focus_highlight_animate)
+           elm_win_focus_highlight_animate_set(obj, EINA_TRUE);
+      }
  
  #ifdef ELM_DEBUG
     Evas_Modifier_Mask mask = evas_key_modifier_mask_get(sd->evas, "Control");
     edje_object_part_swallow(sd->edje, "elm.swallow.contents", sd->box);
     evas_object_move(sd->edje, 0, 0);
     evas_object_resize(sd->edje, 1, 1);
-    edje_object_update_hints_set(sd->edje, EINA_TRUE);
-    evas_object_event_callback_add(sd->edje, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
-                                   _elm_win_on_resize_obj_changed_size_hints, obj);
+    if (type != ELM_WIN_FAKE)
+      {
+         edje_object_update_hints_set(sd->edje, EINA_TRUE);
+         evas_object_event_callback_add(sd->edje, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+                                        _elm_win_on_resize_obj_changed_size_hints, obj);
+      }
  
     eo_do(obj, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_WINDOW));
-    if (_elm_config->atspi_mode == ELM_ATSPI_MODE_ON)
+    if (_elm_config->atspi_mode)
+      elm_interface_atspi_window_created_signal_emit(obj);
+    evas_object_show(sd->edje);
+    eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_ADD, _cb_added, sd),
+          eo_event_callback_add(EO_EV_CALLBACK_DEL, _cb_deled, sd));
+    if (type == ELM_WIN_FAKE)
       {
-         elm_interface_atspi_accessible_children_changed_added_signal_emit(_elm_atspi_bridge_root_get(), obj);
-         eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED, NULL));
+         _elm_win_resize_job(obj);
+         _elm_win_move(sd->ee);
       }
+    return obj;
+ }
  
++<<<<<<< HEAD
 +
 +   if(_elm_config->win_no_border)
 +     _elm_win_borderless_set(obj, sd, EINA_TRUE);
 +
 +   evas_object_show(sd->edje);
++=======
+ EOLIAN static Eo *
+ _elm_win_eo_base_finalize(Eo *obj, Elm_Win_Data *_pd)
+ {
+    obj = _elm_win_finalize_internal(obj, _pd, _pd->name, _pd->type);
+    if (obj)
+      {
+         eo_do_super(obj, MY_CLASS, obj = eo_finalize());
+      }
+    return obj;
++>>>>>>> opensource/master
  }
  
- EOLIAN static void
- _elm_win_eo_base_constructor(Eo *obj EINA_UNUSED, Elm_Win_Data *_pd EINA_UNUSED)
+ EOLIAN static Eo *
+ _elm_win_eo_base_constructor(Eo *obj, Elm_Win_Data *_pd EINA_UNUSED)
  {
     /* Do nothing. */
+    /* XXX: We are calling the constructor chain from the finalizer. It's
+     * really bad and hacky. Needs fixing. */
+    return obj;
  }
  
  EOLIAN static void
@@@ -4729,19 -4944,8 +5097,24 @@@ _elm_win_indicator_mode_set(Eo *obj EIN
              (sd->x.xwin, ECORE_X_ILLUME_INDICATOR_STATE_OFF);
       }
  #endif
++<<<<<<< HEAD
 +#if HAVE_ELEMENTARY_WAYLAND
 +   _elm_win_wlwindow_get(sd);
 +   if (sd->wl.win)
 +     {
 +        if (sd->indmode == ELM_WIN_INDICATOR_SHOW)
 +          ecore_wl_window_indicator_state_set
 +            (sd->wl.win, ECORE_WL_INDICATOR_STATE_ON);
 +        else if (sd->indmode == ELM_WIN_INDICATOR_HIDE)
 +          ecore_wl_window_indicator_state_set
 +            (sd->wl.win, ECORE_WL_INDICATOR_STATE_OFF);
 +     }
 +#endif
 +   evas_object_smart_callback_call(obj, SIG_INDICATOR_PROP_CHANGED, NULL);
++=======
+    eo_do(obj, eo_event_callback_call
+      (ELM_WIN_EVENT_INDICATOR_PROP_CHANGED, NULL));
++>>>>>>> opensource/master
  }
  
  EOLIAN static Elm_Win_Indicator_Mode
@@@ -4770,22 -4974,8 +5143,27 @@@ _elm_win_indicator_opacity_set(Eo *obj 
              (sd->x.xwin, ECORE_X_ILLUME_INDICATOR_TRANSPARENT);
       }
  #endif
++<<<<<<< HEAD
 +#if HAVE_ELEMENTARY_WAYLAND
 +   _elm_win_wlwindow_get(sd);
 +   if (sd->wl.win)
 +     {
 +        if (sd->ind_o_mode == ELM_WIN_INDICATOR_OPAQUE)
 +          ecore_wl_window_indicator_opacity_set
 +            (sd->wl.win, ECORE_WL_INDICATOR_OPAQUE);
 +        else if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSLUCENT)
 +          ecore_wl_window_indicator_opacity_set
 +            (sd->wl.win, ECORE_WL_INDICATOR_TRANSLUCENT);
 +        else if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSPARENT)
 +          ecore_wl_window_indicator_opacity_set
 +            (sd->wl.win, ECORE_WL_INDICATOR_TRANSPARENT);
 +     }
 +#endif
 +   evas_object_smart_callback_call(obj, SIG_INDICATOR_PROP_CHANGED, NULL);
++=======
+    eo_do(obj, eo_event_callback_call
+      (ELM_WIN_EVENT_INDICATOR_PROP_CHANGED, NULL));
++>>>>>>> opensource/master
  }
  
  EOLIAN static Elm_Win_Indicator_Opacity_Mode
@@@ -5044,33 -5224,6 +5422,36 @@@ _elm_win_keygrab_set(Eo *obj EINA_UNUSE
           ret = ecore_x_window_keygrab_set(sd->x.xwin, key, 0, 0, 0, x_grab_mode);
       }
  #endif
++<<<<<<< HEAD
 +// TIZEN_ONLY(20150722): Add ecore_wl_window_keygrab_* APIs
 +#ifdef HAVE_ELEMENTARY_WAYLAND
 +   _elm_win_wlwindow_get(sd);
 +   if (sd->wl.win)
 +     {
 +        Ecore_Wl_Window_Keygrab_Mode wl_grab_mode;
 +        switch (grab_mode)
 +          {
 +           case ELM_WIN_KEYGRAB_SHARED:
 +             wl_grab_mode = ECORE_WL_WINDOW_KEYGRAB_SHARED;
 +             break;
 +           case ELM_WIN_KEYGRAB_TOPMOST:
 +             wl_grab_mode = ECORE_WL_WINDOW_KEYGRAB_TOPMOST;
 +             break;
 +           case ELM_WIN_KEYGRAB_EXCLUSIVE:
 +             wl_grab_mode = ECORE_WL_WINDOW_KEYGRAB_EXCLUSIVE;
 +             break;
 +           case ELM_WIN_KEYGRAB_OVERRIDE_EXCLUSIVE:
 +             wl_grab_mode = ECORE_WL_WINDOW_KEYGRAB_OVERRIDE_EXCLUSIVE;
 +             break;
 +           default:
 +             return ret;
 +          }
 +        ret = ecore_wl_window_keygrab_set(sd->wl.win, key, 0, 0, 0, wl_grab_mode);
 +     }
 +#endif
 +//
++=======
++>>>>>>> opensource/master
     return ret;
  }
  
@@@ -5083,13 -5236,6 +5464,16 @@@ _elm_win_keygrab_unset(Eo *obj EINA_UNU
     if (sd->x.xwin)
       ret = ecore_x_window_keygrab_unset(sd->x.xwin, key, 0, 0);
  #endif
++<<<<<<< HEAD
 +// TIZEN_ONLY(20150722): Add ecore_wl_window_keygrab_* APIs
 +#ifdef HAVE_ELEMENTARY_WAYLAND
 +   _elm_win_wlwindow_get(sd);
 +   if (sd->wl.win)
 +     ret = ecore_wl_window_keygrab_unset(sd->wl.win, key, 0, 0);
 +#endif
 +//
++=======
++>>>>>>> opensource/master
     return ret;
  }
  
@@@ -5432,56 -5619,23 +5857,75 @@@ _elm_win_elm_interface_atspi_widget_act
     return &atspi_actions[0];
  }
  
+ EOLIAN static Elm_Atspi_State_Set
+ _elm_win_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Win_Data *sd EINA_UNUSED)
+ {
+    Elm_Atspi_State_Set ret;
+    eo_do_super(obj, MY_CLASS, ret = elm_interface_atspi_accessible_state_set_get());
+    if (elm_win_focus_get(obj))
+      STATE_TYPE_SET(ret, ELM_ATSPI_STATE_ACTIVE);
+    return ret;
+ }
+ EOLIAN static char*
+ _elm_win_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Win_Data *sd EINA_UNUSED)
+ {
+    const char *ret = elm_win_title_get(obj);
+    return ret ? strdup(ret) : strdup("");
+ }
  #include "elm_win.eo.c"
 +
 +//////////////////////////////////////////////////////////////////
 +
 +EAPI const Eina_List *
 +elm_win_aux_hints_supported_get(const Evas_Object *obj)
 +{
 +   ELM_WIN_CHECK(obj) NULL;
 +   ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, NULL);
 +   return ecore_evas_aux_hints_supported_get(sd->ee);
 +}
 +
 +EAPI int
 +elm_win_aux_hint_add(Evas_Object *obj, const char *hint, const char *val)
 +{
 +   ELM_WIN_CHECK(obj) -1;
 +   ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, -1);
 +   return ecore_evas_aux_hint_add(sd->ee, hint, val);
 +}
 +
 +EAPI Eina_Bool
 +elm_win_aux_hint_del(Evas_Object *obj,
 +                     const int    id)
 +{
 +   ELM_WIN_CHECK(obj) EINA_FALSE;
 +   ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
 +   return ecore_evas_aux_hint_del(sd->ee, id);
 +}
 +
 +EAPI Eina_Bool
 +elm_win_aux_hint_val_set(Evas_Object *obj, const int id, const char *val)
 +{
 +   ELM_WIN_CHECK(obj) EINA_FALSE;
 +   ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
 +   return ecore_evas_aux_hint_val_set(sd->ee, id, val);
 +}
 +
 +EAPI const char *
 +elm_win_aux_hint_val_get(Evas_Object *obj, int id)
 +{
 +   ELM_WIN_CHECK(obj) EINA_FALSE;
 +   ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
 +   return ecore_evas_aux_hint_val_get(sd->ee, id);
 +}
 +
 +EAPI int
 +elm_win_aux_hint_id_get(Evas_Object *obj, const char *hint)
 +{
 +   ELM_WIN_CHECK(obj) EINA_FALSE;
 +   ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
 +   return ecore_evas_aux_hint_id_get(sd->ee, hint);
 +}
 +//////////////////////////////////////////////////////////////////
index 3a9c78258538e7de1fec97191a46b2a09bc1eae1,45410bb1aa51753ff9075b52d2af00640fa1a3ab..29fe8304701f2976c6154b1b62170a9729e975ea
@@@ -2,541 -158,409 +158,434 @@@ class Elm.Win (Elm.Widget, Elm_Interfac
                 Elm_Interface_Atspi_Widget_Action)
  {
     eo_prefix: elm_obj_win;
-    properties {
-       keyboard_win {
+    methods {
+       @property keyboard_win {
           set {
-             /*@
-             Sets whether the window is a keyboard.
-             @ingroup Win */
+             [[Sets whether the window is a keyboard.]]
           }
           get {
-             /*@
-             Get whether the window is a keyboard.
-             @return If the window is a virtual keyboard
-             @ingroup Win */
+             [[Get whether the window is a keyboard.]]
           }
           values {
-             bool is_keyboard; /*@ If true, the window is a virtual keyboard */
+             is_keyboard: bool; [[If true, the window is a virtual keyboard.]]
           }
        }
-       autodel {
+       @property autodel {
           set {
-             /*@
-             Set the window's autodel state.
-             When closing the window in any way outside of the program control, like
-             pressing the X button in the titlebar or using a command from the
-             Window Manager, a "delete,request" signal is emitted to indicate that
-             this event occurred and the developer can take any action, which may
-             include, or not, destroying the window object.
-             When the @p autodel parameter is set, the window will be automatically
-             destroyed when this event occurs, after the signal is emitted.
-             If @p autodel is @c EINA_FALSE, then the window will not be destroyed
-             and is up to the program to do so when it's required.
-             @ingroup Win */
+             [[Set the window's autodel state.
+               When closing the window in any way outside of the program
+               control, like pressing the X button in the titlebar or using
+               a command from the Window Manager, a "delete,request" signal
+               is emitted to indicate that this event occurred and the
+               developer can take any action, which may include, or not,
+               destroying the window object.
+               When the $autodel parameter is set, the window will be
+               automatically destroyed when this event occurs, after the
+               signal is emitted. If $autodel is $false, then the window
+               will not be destroyed and is up to the program to do so
+               when it's required.
+             ]]
           }
           get {
-             /*@
-             Get the window's autodel state.
+             [[Get the window's autodel state.]]
+          }
+          values {
+             autodel: bool; [[If true, the window will automatically delete
+                              itself when closed.]]
+          }
+       }
+       @property autohide {
+          [[Window's autohide state.
  
-             @return If the window will automatically delete itself when closed
+            This property works similarly to @.autodel, automatically handling
+            "delete,request" signals when set to $trze, with the difference
+            that it will hide the window, instead of destroying it.
  
-             @see elm_win_autodel_set()
+            It is specially designed to work together with $ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
+            which allows exiting Elementary's main loop when all the windows
+            are hidden.
  
-             @ingroup Win */
+            Note: @.autodel and $autohide are not mutually exclusive. The window
+            will be deleted if both are set to $true.
+          ]]
+          set {
+          }
+          get {
           }
           values {
-             bool autodel; /*@ If true, the window will automatically delete itself when
-             closed */
+             autohide: bool; [[If true, the window will automatically hide
+                               itself when closed.]]
           }
        }
-       override {
+       @property override {
           set {
-             /*@
-             Set the override state of a window.
-             A window with @p override set to EINA_TRUE will not be managed by the
-             Window Manager. This means that no decorations of any kind will be shown
-             for it, moving and resizing must be handled by the application, as well
-             as the window visibility.
+             [[Set the override state of a window.
  
-             This should not be used for normal windows, and even for not so normal
-             ones, it should only be used when there's a good reason and with a lot
-             of care. Mishandling override windows may result situations that
-             disrupt the normal workflow of the end user.
+               A window with $override set to true will not be managed by the
+               Window Manager. This means that no decorations of any kind
+               will be shown for it, moving and resizing must be handled
+               by the application, as well as the window visibility.
  
-             @ingroup Win */
+               This should not be used for normal windows, and even for not
+               so normal ones, it should only be used when there's a good
+               reason and with a lot of care. Mishandling override windows
+               may result situations that disrupt the normal workflow of
+               the end user.
+             ]]
           }
           get {
-             /*@
-             Get the override state of a window.
-             @return If true, the window is overridden
-             @see elm_win_override_set()
-             @ingroup Win */
+             [[Get the override state of a window.]]
           }
           values {
-             bool override; /*@ If true, the window is overridden */
+             override: bool; [[If true, the window is overridden.]]
           }
        }
-       iconified {
+       @property iconified {
           set {
-             /*@
-             Set the iconified state of a window.
-             @ingroup Win */
+             [[Set the iconified state of a window.]]
           }
           get {
-             /*@
-             Get the iconified state of a window.
-             @return If true, the window is iconified
-             @ingroup Win */
+             [[Get the iconified state of a window.]]
           }
           values {
-             bool iconified; /*@ If true, the window is iconified */
+             iconified: bool; [[If true, the window is iconified.]]
           }
        }
-       wm_available_rotations {
+       @property wm_available_rotations {
           set {
-             /*@
-             Set the array of available window rotations.
+             [[Set the array of available window rotations.
  
-             This function is used to set the available rotations to give the hints to WM.
-             WM will refer this hints and set the orientation window properly.
+               This function is used to set the available rotations to give
+               the hints to WM. WM will refer this hints and set the
+               orientation window properly.
  
-             @see elm_win_wm_rotation_available_rotations_get()
-             ingroup Win
-             @since 1.9 */
+               @since 1.9
+             ]]
              legacy: elm_win_wm_rotation_available_rotations_set;
+             values {
+                rotations: const(int)*; [[The array of rotation value.]]
+                count: uint; [[The size of the rotations array.]]
+             }
           }
           get {
-             /*@
-             Get the array of available window rotations.
-             This function is used to get the available rotations.
+             [[Get the array of available window rotations.
  
-             @see elm_win_wm_rotation_available_rotations_set()
+               This function is used to get the available rotations.
  
-             ingroup Win
-             @since 1.9 */
+               @since 1.9
+             ]]
              legacy: elm_win_wm_rotation_available_rotations_get;
+             values {
+                rotations: int*; [[The array of rotation value.]]
+                count: uint; [[The size of the rotations array.]]
+             }
              return: bool;
           }
-          values {
-             int *rotations @const_set; /*@ The array of rotation value. */
-             uint count; /*@ The size of the @param rotations array. */
-          }
        }
-       quickpanel_zone {
+       @property quickpanel_zone {
           set {
-             /*@
-             Set which zone this quickpanel should appear in
-             @ingroup Win */
+             [[Set which zone this quickpanel should appear in.]]
           }
           get {
-             /*@
-             Get which zone this quickpanel should appear in
-             @return The requested zone for this quickpanel
-             @ingroup Win */
+             [[Get which zone this quickpanel should appear in.]]
           }
           values {
-             int zone; /*@ The requested zone for this quickpanel */
+             zone: int; [[The requested zone for this quickpanel.]]
           }
        }
-       maximized {
+       @property maximized {
           set {
-             /*@
-             Set the maximized state of a window.
-             @ingroup Win */
+             [[Set the maximized state of a window.]]
           }
           get {
-             /*@
-             Get the maximized state of a window.
-             @return If true, the window is maximized
-             @ingroup Win */
+             [[Get the maximized state of a window.]]
           }
           values {
-             bool maximized; /*@ If true, the window is maximized */
+             maximized: bool; [[If true, the window is maximized.]]
           }
        }
-       modal {
+       @property modal {
           set {
-             /*@
-             Set the modal state of a window.
-             @ingroup Win */
+             [[Set the modal state of a window.]]
           }
           get {
-             /*@
-             Get the modal state of a window.
-             @return If true, the window is modal
-             @ingroup Win */
+             [[Get the modal state of a window.]]
           }
           values {
-             bool modal; /*@ If true, the window is modal */
+             modal: bool; [[If true, the window is modal.]]
           }
        }
-       icon_name {
+       @property icon_name {
           set {
-             /*@
-             Set the icon name of the window
-             @ingroup Win */
+             [[Set the icon name of the window.]]
           }
           get {
-             /*@
-             Get the icon name of the window
-             The returned string is an internal one and should not be freed or
-             modified. It will also be invalid if a new icon name is set or if
-             the window is destroyed.
+             [[Get the icon name of the window.
  
-             @return The icon name
-             @ingroup Win */
+               The returned string is an internal one and should not be
+               freed or modified. It will also be invalid if a new icon
+               name is set or if the window is destroyed.
+             ]]
           }
           values {
-             const(char)* icon_name; /*@ The icon name to set */
+             icon_name: const(char)*; [[The icon name to set.]]
           }
        }
-       withdrawn {
+       @property withdrawn {
           set {
-             /*@
-             Set the withdrawn state of a window.
-             @ingroup Win */
+             [[Set the withdrawn state of a window.]]
           }
           get {
-             /*@
-             Get the withdrawn state of a window.
-             @return If true, the window is withdrawn
-             @ingroup Win */
+             [[Get the withdrawn state of a window.]]
           }
           values {
-             bool withdrawn; /*@ If true, the window is withdrawn */
+             withdrawn: bool; [[If true, the window is withdrawn.]]
           }
        }
-       role {
+       @property role {
           set {
-             /*@
-             Set the role of the window
-             @ingroup Win */
+             [[Set the role of the window.]]
           }
           get {
-             /*@
-             Get the role of the window
-             The returned string is an internal one and should not be freed or
-             modified. It will also be invalid if a new role is set or if
-             the window is destroyed.
-             @return The role
+             [[Get the role of the window.
  
-             @ingroup Win */
+               The returned string is an internal one and should not be
+               freed or modified. It will also be invalid if a new role
+               is set or if the window is destroyed.
+             ]]
           }
           values {
-             const(char)* role; /*@ The role to set */
+             role: const(char)*; [[The role to set.]]
           }
        }
-       size_step {
+       @property size_step {
           set {
-             /*@
-             Set the window stepping used with sizing calculation
+             [[Set the window stepping used with sizing calculation.
  
-             Base size + stepping is what is calculated for window sizing restrictions.
+               Base size + stepping is what is calculated for window sizing
+               restrictions.
  
-             @ingroup Win
-             @see elm_win_size_step_get
-             @see elm_win_size_base_set
-             @since 1.7 */
+               @since 1.7
+             ]]
           }
           get {
-             /*@
-             Get the stepping of a window.
+             [[Get the stepping of a window.
  
-             @ingroup Win
-             @see elm_win_size_base_set
-             @see elm_win_size_step_set
-             @since 1.7 */
+               @since 1.7
+             ]]
           }
           values {
-             int w; /*@ The stepping width (0 disables) */
-             int h; /*@ The stepping height (0 disables) */
+             w: int; [[The stepping width (0 disables).]]
+             h: int; [[The stepping height (0 disables).]]
           }
        }
-       focus_highlight_style {
+       @property focus_highlight_style {
           set {
-             /*@
-             Set the style for the focus highlight on this window
-             Sets the style to use for theming the highlight of focused objects on
-             the given window. If @p style is NULL, the default will be used.
+             [[Set the style for the focus highlight on this window.
  
-             @ingroup Win */
+               Sets the style to use for theming the highlight of focused
+               objects on the given window. If $style is NULL, the default
+               will be used.
+             ]]
           }
           get {
-             /*@
-             Get the style set for the focus highlight object
-             Get the style set for this windows highlight object, or NULL if none
-             is set.
-             @return The style set or NULL if none was. Default is used in that case.
-             @ingroup Win */
+             [[Get the style set for the focus highlight object.]]
           }
           values {
-             const(char)* style; /*@ The style to set */
+             style: const(char)* @nullable; [[The style or $null if none.]]
           }
        }
-       borderless {
+       @property borderless {
           set {
-             /*@
-             Set the borderless state of a window.
-             This function requests the Window Manager to not draw any decoration
-             around the window.
+             [[Set the borderless state of a window.
  
-             @ingroup Win */
+               This function requests the Window Manager to not draw any
+               decoration around the window.
+             ]]
           }
           get {
-             /*@
-             Get the borderless state of a window.
-             @return If true, the window is borderless
-             @ingroup Win */
+             [[Get the borderless state of a window.]]
           }
           values {
-             bool borderless; /*@ If true, the window is borderless */
+             borderless: bool; [[If true, the window is borderless.]]
           }
        }
++<<<<<<< HEAD
 +      border_style {
 +         set {
 +            /*@
 +            Set the border style of a window.
 +
 +            Sets the specific style of border to decorate window.
 +
 +            @ingroup Win */
 +         }
 +         get {
 +            /*@
 +            Get the border style of a window.
 +
 +            @return The style set
 +
 +            @ingroup Win */
 +         }
 +         values {
 +            const(char)* style; /*@ The style to set */
 +         }
 +      }
 +      screen_constrain {
++=======
+       @property screen_constrain {
++>>>>>>> opensource/master
           set {
-             /*@
-             Constrain the maximum width and height of a window to the width and height of its screen
+             [[Constrain the maximum width and height of a window to the
+               width and height of its screen.
  
-             When @p constrain is true, @p obj will never resize larger than the screen.
-             @ingroup Win */
+               When $constrain is $true, $obj will never resize larger than
+               the screen.
+             ]]
           }
           get {
-             /*@
-             Get the constraints on the maximum width and height of a window relative to the width and height of its screen
-             When this function returns true, @p obj will never resize larger than the screen.
-             @return EINA_TRUE to restrict the window's maximum size, EINA_FALSE to disable restriction
+             [[Get the constraints on the maximum width and height of a
+               window relative to the width and height of its screen.
  
-             @ingroup Win */
+               When this function returns $true, $obj will never resize
+               larger than the screen.
+             ]]
           }
           values {
-             bool constrain; /*@ EINA_TRUE to restrict the window's maximum size, EINA_FALSE to disable restriction */
+             constrain: bool; [[$true to restrict the window's maximum size.]]
           }
        }
-       available_profiles {
+       @property available_profiles {
           set {
-             /*@
-             Set the array of available profiles to a window.
+             [[Set the array of available profiles to a window.
  
-             @ingroup Win
-             @since 1.8 */
+               @since 1.8
+             ]]
+             values {
+                profiles: const(char)**; [[The string array of available profiles.]]
+                count: uint; [[The number of members in profiles.]]
+             }
           }
           get {
-             /*@
-             Get the array of available profiles of a window.
-             @return EINA_TRUE if available profiles exist, EINA_FALSE otherwise
-             @ingroup Win
-             @since 1.8 */
+             [[Get the array of available profiles of a window.
+               @since 1.8
+             ]]
+             values {
+                profiles: char**; [[The string array of available profiles.]]
+                count: uint; [[The number of members in profiles.]]
+             }
              return: bool;
           }
-          values {
-             char **profiles @const_set; /*@ The string array of available profiles */
-             uint count; /*@ The number of members in profiles */
-          }
        }
-       focus_highlight_enabled {
+       @property focus_highlight_enabled {
           set {
-             /*@
-             Set the enabled status for the focus highlight in a window
-             This function will enable or disable the focus highlight only for the
-             given window, regardless of the global setting for it
+             [[Set the enabled status for the focus highlight in a window.
  
-             @ingroup Win */
+               This function will enable or disable the focus highlight only
+               for the given window, regardless of the global setting for it.
+             ]]
           }
           get {
-             /*@
-             Get the enabled value of the focus highlight for this window
-             @return EINA_TRUE if enabled, EINA_FALSE otherwise
-             @ingroup Win */
+             [[Get the enabled value of the focus highlight for this window.]]
           }
           values {
-             bool enabled; /*@ The enabled value for the highlight */
+             enabled: bool; [[The enabled value for the highlight.]]
           }
        }
-       title {
+       @property title {
           set {
-             /*@
-             Set the title of the window
-             @ingroup Win */
+             [[Set the title of the window.]]
           }
           get {
-             /*@
-             Get the title of the window
-             The returned string is an internal one and should not be freed or
-             modified. It will also be invalid if a new title is set or if
-             the window is destroyed.
-             @return The title
+             [[Get the title of the window.
  
-             @ingroup Win */
+               The returned string is an internal one and should not be
+               freed or modified. It will also be invalid if a new title
+               is set or if the window is destroyed.
+             ]]
           }
           values {
-             const(char)* title; /*@ The title to set */
+             title: const(char)*; [[The title.]]
           }
        }
-       alpha {
+       @property alpha {
           set {
-             /*@
-             Set the alpha channel state of a window.
-             If @p alpha is EINA_TRUE, the alpha channel of the canvas will be enabled
-             possibly making parts of the window completely or partially transparent.
-             This is also subject to the underlying system supporting it, like for
-             example, running under a compositing manager. If no compositing is
-             available, enabling this option will instead fallback to using shaped
-             windows, with elm_win_shaped_set().
-             @note Alpha window can be enabled automatically by window theme style's property.
-             If "alpha" data.item is "1" or "true" in window style(eg. elm/win/base/default),
-             the window is switched to alpha automatically without the explicit api call.
-             @see elm_win_alpha_set()
-             @ingroup Win */
+             [[Set the alpha channel state of a window.
+               If $alpha is true, the alpha channel of the canvas will be
+               enabled possibly making parts of the window completely or
+               partially transparent. This is also subject to the underlying
+               system supporting it, like for example, running under a
+               compositing manager. If no compositing is available, enabling
+               this option will instead fallback to using shaped windows,
+               with @.shaped.set.
+               Note: Alpha window can be enabled automatically by window
+               theme style's property. If "alpha" data.item is "1" or
+               "true" in window style(eg. elm/win/base/default), the window
+               is switched to alpha automatically without the explicit api
+               call.
+             ]]
           }
           get {
-             /*@
-             Get the alpha channel state of a window.
-             @return EINA_TRUE if the window alpha channel is enabled, EINA_FALSE
-             otherwise
-             @ingroup Win */
+             [[Get the alpha channel state of a window.]]
           }
           values {
-             bool alpha; /*@ EINA_TRUE if the window alpha channel is enabled, EINA_FALSE otherwise */
+             alpha: bool; [[$true if the window alpha channel is enabled,
+                            $false otherwise.]]
           }
        }
-       urgent {
+       @property urgent {
           set {
-             /*@
-             Set the urgent state of a window.
-             @ingroup Win */
+             [[Set the urgent state of a window.]]
           }
           get {
-             /*@
-             Get the urgent state of a window.
-             @return If true, the window is urgent
-             @ingroup Win */
+             [[Get the urgent state of a window.]]
           }
           values {
-             bool urgent; /*@ If true, the window is urgent */
+             urgent: bool; [[If true, the window is urgent.]]
           }
        }
-       rotation {
+       @property rotation {
           set {
-             /*@
-             Set the rotation of the window.
+             [[Set the rotation of the window.
  
-             Most engines only work with multiples of 90.
+               Most engines only work with multiples of 90.
  
-             This function is used to set the orientation of the window @p obj to
-             match that of the screen. The window itself will be resized to adjust
-             to the new geometry of its contents. If you want to keep the window size,
-             see elm_win_rotation_with_resize_set().
-             @ingroup Win */
+               This function is used to set the orientation of the window
+               $obj to match that of the screen. The window itself will be
+               resized to adjust to the new geometry of its contents. If
+               you want to keep the window size,
+               see @.rotation_with_resize.set.
+             ]]
           }
           get {
-             /*@
-             Get the rotation of the window.
-             @return The rotation of the window in degrees (0-360)
-             @see elm_win_rotation_set()
-             @see elm_win_rotation_with_resize_set()
-             @ingroup Win */
+             [[Get the rotation of the window.]]
           }
           values {
-             int rotation; /*@ The rotation of the window, in degrees (0-360),
-             counter-clockwise. */
+             rotation: int; [[The rotation of the window, in degrees (0-360),
+                              counter-clockwise.]]
           }
        }
-       icon_object {
+       @property icon_object {
           set {
-             /*@
-             Set a window object's icon
-             This sets an image to be used as the icon for the given window, in
-             the window manager decoration part. The exact pixel dimensions of
-             the object (not object size) will be used, and the image pixels
-             will be used as-is when this function is called. If the image
-             object has been updated, then call this function again to source
-             the image pixels and put them on the window's icon. Note that
-             <b>only Evas image objects are allowed</b>, for
+             [[Set a window object's icon.
+               This sets an image to be used as the icon for the given
+               window, in the window manager decoration part. The exact
+               pixel dimensions of the object (not object size) will be
+               used, and the image pixels will be used as-is when this
+               function is called. If the image object has been updated,
+               then call this function again to source the image pixels
+               and put them on the window's icon. Note that only Evas
+               image objects are allowed.
+             ]]
+             /* FIXME-doc
              Example of usage:
              @code
              icon = evas_object_image_add(evas_object_evas_get(elm_window));
           }
        }
        raise {
-          /*@
-          Raise a window object.
+          [[Raise a window object.
  
-          Places the window pointed by @p obj at the top of the stack, so that it's
-          not covered by any other window.
-          If elm_win_override_set() is not set, the Window Manager may ignore this
-          request.
-          @ingroup Win */
+            Places the window pointed by $obj at the top of the stack, so
+            that it's not covered by any other window.
  
+            If @.override.set is not set, the Window Manager may ignore this
+            request.
+          ]]
        }
        lower {
-          /*@
-          Lower a window object.
-          Places the window pointed by @p obj at the bottom of the stack, so that
-          no other window is covered by it.
+          [[Lower a window object.
  
-          If elm_win_override_set() is not set, the Window Manager may ignore this
-          request.
-          @ingroup Win */
+            Places the window pointed by $obj at the bottom of the stack,
+            so that no other window is covered by it.
  
+            If @.override.set is not set, the Window Manager may ignore this
+            request.
+          ]]
        }
        resize_object_del {
-          /*@
-          Delete @p subobj as a resize object of window @p obj.
+          [[Delete $subobj as a resize object of window $obj.
  
-          This function removes the object @p subobj from the resize objects of
-          the window @p obj. It will not delete the object itself, which will be
-          left unmanaged and should be deleted by the developer, manually handled
-          or set as child of some other container.
+            This function removes the object $subobj from the resize objects
+            of the window $obj. It will not delete the object itself, which
+            will be left unmanaged and should be deleted by the developer,
+            manually handled or set as child of some other container.
+          ]]
+          params {
+             @in subobj: Evas.Object *; [[The resize object to add.]]
+          }
+       }
+       center {
+          [[Center a window on its screen
  
-          @ingroup Win */
+            This function centers window $obj horizontally and/or vertically
+            based on the values of $h and $v.
+          ]]
  
           params {
-             @in Evas_Object *subobj; /*@ The resize object to add */
+             @in h: bool; [[If true, center horizontally. If false, do not change horizontal location.]]
+             @in v: bool; [[If true, center vertically. If false, do not change vertical location.]]
           }
        }
-       center {
-          /*@
-          Center a window on its screen
+       keygrab_set {
+          [[Set keygrab value of the window
  
-          This function centers window @p obj horizontally and/or vertically based on the values
-          of @p h and @p v.
-          @ingroup Win */
+            This function grabs the $key of window using $grab_mode.
+          ]]
  
+          return: bool;
+          params {
+             @in key: const(char)*; [[This string is the keyname to grab.]]
+             @in modifiers: Evas_Modifier_Mask; [[This is for the keymask feature. Currently this feature is not supported.]]
+             @in not_modifiers: Evas_Modifier_Mask; [[This is for the keymask feature. Currently this feature is not supported.]]
+             @in proirity: int; [[This is for the priority of keygrab. Currently this feature is not supported.]]
+             @in grab_mode: Elm.Win.Keygrab_Mode; [[According to the grabmode, it can grab key differently.]]
+          }
+       }
+       keygrab_unset {
+          [[Unset keygrab value of the window
+            This function unset keygrab value. Ungrab $key of window.
+          ]]
+          return: bool;
           params {
-             @in bool h; /*@ If true, center horizontally. If false, do not change horizontal location. */
-             @in bool v; /*@ If true, center vertically. If false, do not change vertical location. */
+             @in key: const(char)*; [[This string is the keyname to grab.]]
+             @in modifiers: Evas_Modifier_Mask; [[This is for the keymask feature. Currently this feature is not supported.]]
+             @in not_modifiers: Evas_Modifier_Mask; [[This is for the keymask feature. Currently this feature is not supported.]]
           }
        }
 +      keygrab_set {
 +         /*@
 +         Set keygrab value of the window
 +
 +         This function grabs the @p key of window using @p grab_mode.
 +         @ingroup Win */
 +
 +         return: bool;
 +         params {
 +            @in const(char)* key; /*@ This string is the keyname to grab. */
 +            @in Evas_Modifier_Mask modifiers; /*@ This is for the keymask feature. Currently this feature is not supported. */
 +            @in Evas_Modifier_Mask not_modifiers; /*@ This is for the keymask feature. Currently this feature is not supported. */
 +            @in int proirity; /*@ This is for the priority of keygrab. Currently this feature is not supported. */
 +            @in Elm_Win_Keygrab_Mode grab_mode; /*@  According to the grabmode, it can grab key differently */
 +         }
 +      }
 +      keygrab_unset {
 +         /*@
 +         Unset keygrab value of the window
 +
 +         This function unset keygrab value. Ungrab @p key of window.
 +         @ingroup Win */
 +
 +         return: bool;
 +         params {
 +            @in const(char)* key; /*@ This string is the keyname to grab. */
 +            @in Evas_Modifier_Mask modifiers; /*@ This is for the keymask feature. Currently this feature is not supported. */
 +            @in Evas_Modifier_Mask not_modifiers; /*@ This is for the keymask feature. Currently this feature is not supported. */
 +         }
 +      }
     }
     implements {
        class.constructor;
Simple merge
index 986da557e3954e0ded8e1e704dd4805ec1db4880,02d8bd4e203921b9e7f0f988bc823a5abcfefe08..e657773ea7aa69a98804e0572378a5d8f599db0b
   */
  
  /**
++<<<<<<< HEAD
 + * Defines the types of window that can be created
 + *
 + * These are hints set on the window so that a running Window Manager knows
 + * how the window should be handled and/or what kind of decorations it
 + * should have.
 + *
 + * Currently, only the X11 backed engines use them.
 + */
 +typedef enum
 +{
 +   ELM_WIN_UNKNOWN = -1,
 +   ELM_WIN_BASIC, /**< A normal window. Indicates a normal, top-level
 +                     window. Almost every window will be created with this
 +                     type. */
 +   ELM_WIN_DIALOG_BASIC, /**< Used for simple dialog windows/ */
 +   ELM_WIN_DESKTOP, /**< For special desktop windows, like a background
 +                       window holding desktop icons. */
 +   ELM_WIN_DOCK, /**< The window is used as a dock or panel. Usually would
 +                    be kept on top of any other window by the Window
 +                    Manager. */
 +   ELM_WIN_TOOLBAR, /**< The window is used to hold a floating toolbar, or
 +                       similar. */
 +   ELM_WIN_MENU, /**< Similar to #ELM_WIN_TOOLBAR. */
 +   ELM_WIN_UTILITY, /**< A persistent utility window, like a toolbox or
 +                       palette. */
 +   ELM_WIN_SPLASH, /**< Splash window for a starting up application. */
 +   ELM_WIN_DROPDOWN_MENU, /**< The window is a dropdown menu, as when an
 +                             entry in a menubar is clicked. Typically used
 +                             with elm_win_override_set(). This hint exists
 +                             for completion only, as the EFL way of
 +                             implementing a menu would not normally use a
 +                             separate window for its contents. */
 +   ELM_WIN_POPUP_MENU, /**< Like #ELM_WIN_DROPDOWN_MENU, but for the menu
 +                          triggered by right-clicking an object. */
 +   ELM_WIN_TOOLTIP, /**< The window is a tooltip. A short piece of
 +                       explanatory text that typically appear after the
 +                       mouse cursor hovers over an object for a while.
 +                       Typically used with elm_win_override_set() and also
 +                       not very commonly used in the EFL. */
 +   ELM_WIN_NOTIFICATION, /**< A notification window, like a warning about
 +                            battery life or a new E-Mail received. */
 +   ELM_WIN_COMBO, /**< A window holding the contents of a combo box. Not
 +                     usually used in the EFL. */
 +   ELM_WIN_DND, /**< Used to indicate the window is a representation of an
 +                   object being dragged across different windows, or even
 +                   applications. Typically used with
 +                   elm_win_override_set(). */
 +   ELM_WIN_INLINED_IMAGE, /**< The window is rendered onto an image
 +                             buffer. No actual window is created for this
 +                             type, instead the window and all of its
 +                             contents will be rendered to an image buffer.
 +                             This allows to have children window inside a
 +                             parent one just like any other object would
 +                             be, and do other things like applying @c
 +                             Evas_Map effects to it. This is the only type
 +                             of window that requires the @c parent
 +                             parameter of elm_win_add() to be a valid @c
 +                             Evas_Object. */
 +   ELM_WIN_SOCKET_IMAGE,/**< The window is rendered onto an image buffer
 +                           and can be shown other process's plug image object.
 +                           No actual window is created for this type,
 +                           instead the window and all of its contents will be
 +                           rendered to an image buffer and can be shown
 +                           other process's plug image object*/
 +   ELM_WIN_FAKE /**< This window was created using a pre-existing canvas.
 +                     The window widget can be deleted, but the canvas
 +                     must be managed externally.
 +                     @since 1.13 */
 +} Elm_Win_Type;
 +
 +/**
 + * The different layouts that can be requested for the virtual keyboard.
 + *
 + * When the application window is being managed by Illume, it may request
 + * any of the following layouts for the virtual keyboard.
 + */
 +typedef enum
 +{
 +   ELM_WIN_KEYBOARD_UNKNOWN, /**< Unknown keyboard state */
 +   ELM_WIN_KEYBOARD_OFF, /**< Request to deactivate the keyboard */
 +   ELM_WIN_KEYBOARD_ON, /**< Enable keyboard with default layout */
 +   ELM_WIN_KEYBOARD_ALPHA, /**< Alpha (a-z) keyboard layout */
 +   ELM_WIN_KEYBOARD_NUMERIC, /**< Numeric keyboard layout */
 +   ELM_WIN_KEYBOARD_PIN, /**< PIN keyboard layout */
 +   ELM_WIN_KEYBOARD_PHONE_NUMBER, /**< Phone keyboard layout */
 +   ELM_WIN_KEYBOARD_HEX, /**< Hexadecimal numeric keyboard layout */
 +   ELM_WIN_KEYBOARD_TERMINAL, /**< Full (QWERTY) keyboard layout */
 +   ELM_WIN_KEYBOARD_PASSWORD, /**< Password keyboard layout */
 +   ELM_WIN_KEYBOARD_IP, /**< IP keyboard layout */
 +   ELM_WIN_KEYBOARD_HOST, /**< Host keyboard layout */
 +   ELM_WIN_KEYBOARD_FILE, /**< File keyboard layout */
 +   ELM_WIN_KEYBOARD_URL, /**< URL keyboard layout */
 +   ELM_WIN_KEYBOARD_KEYPAD, /**< Keypad layout */
 +   ELM_WIN_KEYBOARD_J2ME /**< J2ME keyboard layout */
 +} Elm_Win_Keyboard_Mode;
 +
 +/**
 + * In some environments, like phones, you may have an indicator that
 + * shows battery status, reception, time etc. This is the indicator.
 + *
 + * Sometimes you don't want it because you provide the same functionality
 + * inside your app, so this will request that the indicator is hidden in
 + * this circumstance if you use ELM_ILLUME_INDICATOR_HIDE. The default
 + * is to have the indicator shown.
 + */
 +typedef enum
 +{
 +   ELM_WIN_INDICATOR_UNKNOWN, /**< Unknown indicator state */
 +   ELM_WIN_INDICATOR_HIDE, /**< Hides the indicator */
 +   ELM_WIN_INDICATOR_SHOW /**< Shows the indicator */
 +} Elm_Win_Indicator_Mode;
 +
 +/**
 + * Defines the opacity modes of indicator that can be shown
 + */
 +typedef enum
 +{
 +   ELM_WIN_INDICATOR_OPACITY_UNKNOWN, /**< Unknown indicator opacity mode */
 +   ELM_WIN_INDICATOR_OPAQUE, /**< Opacifies the indicator */
 +   ELM_WIN_INDICATOR_TRANSLUCENT, /**< Be translucent the indicator */
 +   ELM_WIN_INDICATOR_TRANSPARENT /**< Transparentizes the indicator */
 +} Elm_Win_Indicator_Opacity_Mode;
 +
 +/**
 + * Available commands that can be sent to the Illume manager.
 + *
 + * When running under an Illume session, a window may send commands to the
 + * Illume manager to perform different actions.
 + */
 +typedef enum
 +{
 +   ELM_ILLUME_COMMAND_FOCUS_BACK, /**< Reverts focus to the previous window */
 +   ELM_ILLUME_COMMAND_FOCUS_FORWARD, /**< Sends focus to the next window in the list */
 +   ELM_ILLUME_COMMAND_FOCUS_HOME, /**< Hides all windows to show the Home screen */
 +   ELM_ILLUME_COMMAND_CLOSE, /**< Closes the currently active window */
 +} Elm_Illume_Command;
 +
 +/**
 + * Define the mode of keygrab.
 + *
 + * A window may send commands to the Keyrouter according this mode,
 + * and perform different actions.
 + */
 +typedef enum
 +{
 +   ELM_WIN_KEYGRAB_UNKNOWN = 0, /**< Unknown keygrab mode */
 +   ELM_WIN_KEYGRAB_SHARED = (1 << 8), /**< Getting the grabbed-key together with the other client windows */
 +   ELM_WIN_KEYGRAB_TOPMOST = (1 << 9), /**< Getting the grabbed-key only when window is top of the stack */
 +   ELM_WIN_KEYGRAB_EXCLUSIVE = (1 << 10), /**< Getting the grabbed-key exclusively regardless of window's position */
 +   ELM_WIN_KEYGRAB_OVERRIDE_EXCLUSIVE = (1 << 11) /**< Getting the grabbed-key exclusively regardless of window's position. Being overrided the grab by the other client window  */
 +} Elm_Win_Keygrab_Mode;
 +
 +/**
++=======
++>>>>>>> opensource/master
   * @typedef Elm_Win_Trap
   *
   * Trap can be set with elm_win_trap_set() and will intercept the
index ade75c880186bf60dbb0839b1a01da0a275ac827,593e04cab2dd0a6d29cb4e7fe10fcb6bbd8be8dc..f8d2dbd3873d85e00644c45ebfdd6b7bbf3a1b83
@@@ -11,7 -11,9 +11,13 @@@ static Elm_Gen_Item_Class itc
  static Eo *current;
  static int counter;
  static Elm_Atspi_Event_Children_Changed_Data ev_data;
++<<<<<<< HEAD
 +
++=======
+ Evas_Object *content;
++>>>>>>> opensource/master
  void test_init(void)
  {
     elm_init(1, NULL);
@@@ -80,8 -82,11 +86,16 @@@ END_TES
  
  static Eina_Bool
  _children_changed_cb(void *data EINA_UNUSED, Eo *obj EINA_UNUSED,
++<<<<<<< HEAD
 +                     const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
 +{
++=======
+                      const Eo_Event_Description *desc, void *event_info EINA_UNUSED)
+ {
+    if (desc != ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED)
+      return EINA_TRUE;
++>>>>>>> opensource/master
     ev_data = *(Elm_Atspi_Event_Children_Changed_Data*)event_info;
     current = obj;
     counter++;
@@@ -98,7 -103,7 +112,11 @@@ START_TEST(elm_atspi_children_events_ad
  
     Elm_Object_Item *it[3];
  
++<<<<<<< HEAD
 +   eo_do(genlist, eo_event_callback_add(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_cb, NULL));
++=======
+    eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, elm_interface_atspi_accessible_event_handler_add(_children_changed_cb, NULL));
++>>>>>>> opensource/master
  
     it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
     ck_assert(genlist == current);
@@@ -135,7 -140,7 +153,11 @@@ START_TEST(elm_atspi_children_events_de
     it[1] = elm_genlist_item_prepend(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
     it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
  
++<<<<<<< HEAD
 +   eo_do(genlist, eo_event_callback_add(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_cb, NULL));
++=======
+    eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, elm_interface_atspi_accessible_event_handler_add(_children_changed_cb, NULL));
++>>>>>>> opensource/master
  
     elm_object_item_del(it[0]);
     ck_assert(genlist == current);
@@@ -163,7 -168,7 +185,11 @@@ START_TEST(elm_atspi_children_events_de
  
     it = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
  
++<<<<<<< HEAD
 +   eo_do(genlist, eo_event_callback_add(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_cb, NULL));
++=======
+    eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, elm_interface_atspi_accessible_event_handler_add(_children_changed_cb, NULL));
++>>>>>>> opensource/master
     elm_genlist_clear(genlist);
  
     ck_assert(genlist == current);
  }
  END_TEST
  
++<<<<<<< HEAD
++=======
+ static Evas_Object *
+ gl_content_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part EINA_UNUSED)
+ {
+    content = elm_button_add(obj);
+    return content;
+ }
+ /**
+  * Validate if genlist implementation properly reset AT-SPI parent to Elm_Genlist_Item
+  * from Elm_Genlist
+  */
+ START_TEST(elm_atspi_children_parent)
+ {
+    test_init();
+    evas_object_show(genlist);
+    Elm_Object_Item *it;
+    Elm_Interface_Atspi_Accessible *parent;
+    content = NULL;
+    itc.item_style = "default";
+    itc.func.content_get = gl_content_get;
+    it = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+    elm_genlist_item_fields_update(it, "*.", ELM_GENGRID_ITEM_FIELD_CONTENT);
+    ck_assert(content != NULL);
+    eo_do(content, parent = elm_interface_atspi_accessible_parent_get());
+    ck_assert(it == parent);
+    elm_shutdown();
+ }
+ END_TEST
++>>>>>>> opensource/master
  void elm_test_genlist(TCase *tc)
  {
     tcase_add_test(tc, elm_atspi_role_get);
     tcase_add_test(tc, elm_atspi_children_events_add);
     tcase_add_test(tc, elm_atspi_children_events_del1);
     tcase_add_test(tc, elm_atspi_children_events_del2);
++<<<<<<< HEAD
++=======
+    tcase_add_test(tc, elm_atspi_children_parent);
++>>>>>>> opensource/master
  }