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
=================
++<<<<<<< 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:
---------------------
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;
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;
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;
++<<<<<<< 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])
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 {
}
}
description { state: "disabled" 0.0;
++<<<<<<< HEAD
+ inherit: "default" 0 0 ;
++=======
+ inherit: "default" 0.0 ;
++>>>>>>> opensource/master
color: FN_COL_DISABLE;
color_class: "spinner_disabled";
}
}
}
}
++<<<<<<< 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
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;
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;
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);
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;
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);
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;
}
}
++<<<<<<< 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)
{
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);
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);
}
#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>
$(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@
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},
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 */
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)
if (title_visibility_old != title_visibility_current)
_visuals_set(obj);
++<<<<<<< HEAD
+ elm_layout_sizing_eval(obj);
+
++=======
++>>>>>>> opensource/master
return EINA_TRUE;
}
}
end:
++<<<<<<< HEAD
+ elm_layout_sizing_eval(obj);
+
++=======
++>>>>>>> opensource/master
return EINA_TRUE;
}
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;
}
evas_object_event_callback_add
(content, EVAS_CALLBACK_DEL, _on_content_del, obj);
}
++<<<<<<< HEAD
+ elm_layout_sizing_eval(obj);
++=======
++>>>>>>> opensource/master
return EINA_TRUE;
}
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
#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);
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 },
}
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);
}
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
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:
}
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
{
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;
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)
{
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"
}
ecore_wl_dnd_drag_end(ecore_wl_input_get());
++<<<<<<< HEAD
+
++=======
++>>>>>>> opensource/master
return ECORE_CALLBACK_PASS_ON;
}
{ /* 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);
{ /* 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);
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); */
_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)
_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();
+}
+
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());
}
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
_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
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"
- 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;
* 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.
*
* @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.
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
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));
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);
}
}
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);
}
}
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;
}
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
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 *
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
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;
}
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
}
}
}
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"
++<<<<<<< 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;
{
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;
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
}
}
}
}
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");
}
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));
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);
}
}
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);
}
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;
}
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)
{
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 *
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)
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
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;
}
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
}
}
}
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"
- 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 {
{
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;
}
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
{
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 {
}
#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);
/**
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)
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)) ||
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
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.]]
}
}
#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
#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
elm_widget_access_highlight_in_theme_set(obj, EINA_FALSE);
}
++<<<<<<< HEAD
static Eina_Bool
_visuals_refresh(Evas_Object *obj,
Elm_Layout_Smart_Data *sd)
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;
}
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);
}
}
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);
}
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
}
}
- 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 *
++<<<<<<< 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 {
- 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;
/* 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))))
}
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);
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
}
}
}
}
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
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;
_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
if (sd->orient == orient) return;
++<<<<<<< HEAD
++=======
+ sd->orientation_changed = EINA_TRUE;
++>>>>>>> opensource/master
sd->orient = orient;
g = _grid_create(obj);
if (g)
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);
}
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
- 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]]
}
}
}
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;
{
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)
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;
}
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;
}
}
_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)
{
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)
{
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;
*/
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
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.]]
}
}
}
// 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
{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);
}
}
++<<<<<<< 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);
}
(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)
_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
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);
_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();
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;
{
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)
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);
}
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);
}
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
_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 *
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)
{
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"
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;
}
}
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;
}
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;
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)
}
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;
{
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;
{
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
* @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.
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)
{
{
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;
*/
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;
}
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;
}
}
_parent_focus(obj, item);
++<<<<<<< HEAD
++=======
+ elm_widget_focus_region_show(obj);
++>>>>>>> opensource/master
return;
}
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);
}
* 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
}
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);
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;
}
}
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;
}
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;
#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
_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);
}
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"
++<<<<<<< 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
}
}
// 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);
++<<<<<<< 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
}
}
const char *title;
const char *icon_name;
const char *role;
++<<<<<<< HEAD
+ const char *frame_style;
++=======
+ Eina_Stringshare *name;
++>>>>>>> opensource/master
Evas_Object *main_menu;
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, ""},
_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
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);
}
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)
#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
(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
(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
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;
}
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;
}
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);
+}
+//////////////////////////////////////////////////////////////////
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;
*/
/**
++<<<<<<< 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
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);
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++;
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);
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);
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
}