[EGIT] [core/efl] master 04/05: efl_access: add free function to Efl_Access_Text_Range struct

2019-01-22 Thread Lukasz Stanislawski
bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=256367384ae0368084c89d4733ac7ca404b9b161

commit 256367384ae0368084c89d4733ac7ca404b9b161
Author: Lukasz Stanislawski 
Date:   Tue Jan 22 06:59:50 2019 +

efl_access: add free function to Efl_Access_Text_Range struct

Reviewed-by: Marcel Hollerbach 
Differential Revision: https://phab.enlightenment.org/D7717
---
 src/lib/elementary/efl_access_text.c  | 7 +++
 src/lib/elementary/efl_access_text.eo | 2 +-
 src/lib/elementary/efl_access_text.h  | 5 +
 src/lib/elementary/elm_atspi_bridge.c | 6 ++
 4 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/lib/elementary/efl_access_text.c 
b/src/lib/elementary/efl_access_text.c
index 5f3f339f60..fa3798523a 100644
--- a/src/lib/elementary/efl_access_text.c
+++ b/src/lib/elementary/efl_access_text.c
@@ -17,4 +17,11 @@ EAPI 
elm_atspi_text_text_attribute_free(Efl_Access_Text_Attribute *attr)
free(attr);
 }
 
+EAPI void
+elm_atspi_text_text_range_free(Efl_Access_Text_Range *range)
+{
+   free(range->content);
+   free(range);
+}
+
 #include "efl_access_text.eo.c"
diff --git a/src/lib/elementary/efl_access_text.eo 
b/src/lib/elementary/efl_access_text.eo
index 45e373bc6c..7b13206937 100644
--- a/src/lib/elementary/efl_access_text.eo
+++ b/src/lib/elementary/efl_access_text.eo
@@ -27,7 +27,7 @@ struct Efl.Access.Text_Attribute
value: string; [[Text attribute value]]
 }
 
-struct Efl.Access.Text_Range
+struct @free(elm_atspi_text_text_range_free) Efl.Access.Text_Range
 {
[[Text range]]
start_offset: int; [[Range start offset]]
diff --git a/src/lib/elementary/efl_access_text.h 
b/src/lib/elementary/efl_access_text.h
index edbb6e10f9..f5cecc01bd 100644
--- a/src/lib/elementary/efl_access_text.h
+++ b/src/lib/elementary/efl_access_text.h
@@ -15,5 +15,10 @@
  */
 EAPI void elm_atspi_text_text_attribute_free(Efl_Access_Text_Attribute *attr);
 
+/**
+ * @brief Free Efl_Access_Text_Range structure
+ */
+EAPI void elm_atspi_text_text_range_free(Efl_Access_Text_Range *range);
+
 #endif
 #endif
diff --git a/src/lib/elementary/elm_atspi_bridge.c 
b/src/lib/elementary/elm_atspi_bridge.c
index cca6176dee..e75f935a71 100644
--- a/src/lib/elementary/elm_atspi_bridge.c
+++ b/src/lib/elementary/elm_atspi_bridge.c
@@ -1755,8 +1755,7 @@ _text_bounded_ranges_get(const Eldbus_Service_Interface 
*iface, const Eldbus_Mes
   {
  eldbus_message_iter_basic_append(iter_struct, 'i', 
range->start_offset);
  eldbus_message_iter_basic_append(iter_struct, 'i', 
range->end_offset);
- range->content = range->content ? range->content : strdup("");
- eldbus_message_iter_basic_append(iter_struct, 's', 
range->content);
+ eldbus_message_iter_basic_append(iter_struct, 's', range->content 
? range->content : "");
  /* AT-SPI specification requires variant type in return, however
   * ATK or other implementations as well as AT Clients don't use 
it .
   * To cover spec a dummy value will be returned */
@@ -1768,8 +1767,7 @@ _text_bounded_ranges_get(const Eldbus_Service_Interface 
*iface, const Eldbus_Mes
}
  eldbus_message_iter_container_close(iter_array, iter_struct);
   }
-if (range->content) free(range->content);
-free(range);
+elm_atspi_text_text_range_free(range);
  }
 
eldbus_message_iter_container_close(iter, iter_array);

-- 




[EGIT] [core/efl] master 01/03: elm: add custom access state for Elm.Hover

2017-11-24 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2016bacd177b3d8787b5e829155c9eb9cbb24875

commit 2016bacd177b3d8787b5e829155c9eb9cbb24875
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Nov 24 16:50:01 2017 +0900

elm: add custom access state for Elm.Hover

Reviewers: jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5523
---
 src/lib/elementary/elm_hover.c  | 10 ++
 src/lib/elementary/elm_hover.eo |  1 +
 2 files changed, 11 insertions(+)

diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c
index 5bbbc570dd..b92b2ea1a3 100644
--- a/src/lib/elementary/elm_hover.c
+++ b/src/lib/elementary/elm_hover.c
@@ -865,6 +865,16 @@ _elm_hover_efl_access_widget_action_elm_actions_get(Eo 
*obj EINA_UNUSED, Elm_Hov
return _actions[0];
 }
 
+EOLIAN static Efl_Access_State_Set
+_elm_hover_efl_access_state_set_get(Eo *obj, Elm_Hover_Data *pd EINA_UNUSED)
+{
+   Efl_Access_State_Set states;
+   states = efl_access_state_set_get(efl_super(obj, MY_CLASS));
+
+   STATE_TYPE_SET(states, EFL_ACCESS_STATE_MODAL);
+   return states;
+}
+
 /* Efl.Part begin */
 
 ELM_PART_OVERRIDE(elm_hover, ELM_HOVER, Elm_Hover_Data)
diff --git a/src/lib/elementary/elm_hover.eo b/src/lib/elementary/elm_hover.eo
index a1c33f0b4b..c517b9c0a8 100644
--- a/src/lib/elementary/elm_hover.eo
+++ b/src/lib/elementary/elm_hover.eo
@@ -69,6 +69,7 @@ class Elm.Hover (Efl.Ui.Layout, Efl.Ui.Focus.Layer, 
Efl.Ui.Clickable, Efl.Access
   Elm.Widget.widget_parent { get; set; }
   Elm.Widget.widget_sub_object_del;
   Efl.Access.Widget.Action.elm_actions { get; }
+  Efl.Access.state_set { get; }
   Efl.Part.part;
}
events {

-- 




[EGIT] [core/efl] master 04/05: elm: add "activate" action to ctxpopup items

2017-11-19 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2f294aeb88fab4537a68283e30493f6fc951f0f8

commit 2f294aeb88fab4537a68283e30493f6fc951f0f8
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Mon Nov 20 12:03:29 2017 +0900

elm: add "activate" action to ctxpopup items

Summary: Change-Id: I0974c3bec02a05d3d46d7cc0fd86572e32248a3b

Subscribers: jenkins, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5493
---
 src/lib/elementary/elc_ctxpopup.c   | 30 --
 src/lib/elementary/elm_ctxpopup_item.eo |  3 ++-
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/lib/elementary/elc_ctxpopup.c 
b/src/lib/elementary/elc_ctxpopup.c
index d6eae68618..b8e6f8018b 100644
--- a/src/lib/elementary/elc_ctxpopup.c
+++ b/src/lib/elementary/elc_ctxpopup.c
@@ -1251,9 +1251,8 @@ elm_ctxpopup_item_next_get(const Evas_Object *obj)
 }
 
 static void
-_item_wrap_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+_item_select(Elm_Ctxpopup_Item_Data *item)
 {
-   Elm_Ctxpopup_Item_Data *item = data;
Elm_Object_Item *eo_item2;
Eina_List *l;
 
@@ -1269,6 +1268,13 @@ _item_wrap_cb(void *data, Evas_Object *obj EINA_UNUSED, 
void *event_info EINA_UN
item->wcb.org_func_cb((void *)item->wcb.org_data, item->wcb.cobj, 
EO_OBJ(item));
 }
 
+static void
+_item_wrap_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   Elm_Ctxpopup_Item_Data *item = data;
+   _item_select(item);
+}
+
 EOLIAN static Eo *
 _elm_ctxpopup_item_efl_object_constructor(Eo *obj, Elm_Ctxpopup_Item_Data *it)
 {
@@ -1575,6 +1581,26 @@ _elm_ctxpopup_efl_access_state_set_get(Eo *obj, 
Elm_Ctxpopup_Data *sd EINA_UNUSE
return ret;
 }
 
+static Eina_Bool
+_item_access_action_activate(Evas_Object *obj, const char *params EINA_UNUSED)
+{
+   ELM_CTXPOPUP_ITEM_DATA_GET(obj, it);
+   if (!it) return EINA_FALSE;
+
+   _item_select(it);
+   return EINA_TRUE;
+}
+
+EOLIAN static const Efl_Access_Action_Data*
+_elm_ctxpopup_item_efl_access_widget_action_elm_actions_get(Eo *obj 
EINA_UNUSED, Elm_Ctxpopup_Item_Data *sd EINA_UNUSED)
+{
+   static Efl_Access_Action_Data atspi_actions[] = {
+  { "activate", NULL, NULL, _item_access_action_activate},
+  { NULL, NULL, NULL, NULL }
+   };
+   return _actions[0];
+}
+
 /* Internal EO APIs and hidden overrides */
 
 ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_ctxpopup, Elm_Ctxpopup_Data)
diff --git a/src/lib/elementary/elm_ctxpopup_item.eo 
b/src/lib/elementary/elm_ctxpopup_item.eo
index 31c87ebff7..8c87b23a4c 100644
--- a/src/lib/elementary/elm_ctxpopup_item.eo
+++ b/src/lib/elementary/elm_ctxpopup_item.eo
@@ -1,4 +1,4 @@
-class Elm.Ctxpopup.Item(Elm.Widget.Item, Efl.Ui.Item)
+class Elm.Ctxpopup.Item(Elm.Widget.Item, Efl.Ui.Item, Efl.Access.Widget.Action)
 {
[[Elementary context popup item class]]
legacy_prefix: elm_ctxpopup_item;
@@ -25,5 +25,6 @@ class Elm.Ctxpopup.Item(Elm.Widget.Item, Efl.Ui.Item)
 Efl.Ui.Item.selected { get; set; }
 Efl.Ui.Item.prev { get; }
 Efl.Ui.Item.next { get; }
+Efl.Access.Widget.Action.elm_actions { get; }
}
 }

-- 




[EGIT] [core/efl] master 03/05: elm: overload access children getter

2017-11-19 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=26e49ca56267de0fdbc48ce1e232063e14e7027f

commit 26e49ca56267de0fdbc48ce1e232063e14e7027f
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Mon Nov 20 12:03:04 2017 +0900

elm: overload access children getter

Subscribers: jenkins, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5482
---
 src/lib/elementary/elc_hoversel.c  | 6 ++
 src/lib/elementary/elm_hoversel.eo | 1 +
 2 files changed, 7 insertions(+)

diff --git a/src/lib/elementary/elc_hoversel.c 
b/src/lib/elementary/elc_hoversel.c
index dafc701368..c55d0aaa79 100644
--- a/src/lib/elementary/elc_hoversel.c
+++ b/src/lib/elementary/elc_hoversel.c
@@ -1031,6 +1031,12 @@ 
_elm_hoversel_efl_access_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_
return _actions[0];
 }
 
+EOLIAN Eina_List*
+_elm_hoversel_efl_access_children_get(Eo *obj EINA_UNUSED, Elm_Hoversel_Data 
*pd)
+{
+   return eina_list_clone(pd->items);
+}
+
 EOLIAN void
 _elm_hoversel_auto_update_set(Eo *obj EINA_UNUSED, Elm_Hoversel_Data *sd, 
Eina_Bool auto_update)
 {
diff --git a/src/lib/elementary/elm_hoversel.eo 
b/src/lib/elementary/elm_hoversel.eo
index a1461e29a2..bc6447f46d 100644
--- a/src/lib/elementary/elm_hoversel.eo
+++ b/src/lib/elementary/elm_hoversel.eo
@@ -101,6 +101,7 @@ class Elm.Hoversel (Efl.Ui.Button, Efl.Ui.Selectable,
   Elm.Widget.widget_event;
   Efl.Ui.Autorepeat.autorepeat_supported { get; }
   Efl.Access.Widget.Action.elm_actions { get; }
+  Efl.Access.children { get; }
}
events {
   dismissed; [[Called when hoversel is dismissed]]

-- 




[EGIT] [core/efl] master 02/02: elm: return Efl.Access.Actions only if action_area is not set

2017-11-16 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=57e0d19c45687454ab8bae53a3c2a1c1b1798b78

commit 57e0d19c45687454ab8bae53a3c2a1c1b1798b78
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Nov 16 18:13:23 2017 +0900

elm: return Efl.Access.Actions only if action_area is not set

Summary:
The accessibility clients should not have a possibility
to dismiss popup in case when action area is set.

Reviewers: jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5481
---
 src/lib/elementary/elc_popup.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c
index 3e142f8d49..b2de973bbd 100644
--- a/src/lib/elementary/elc_popup.c
+++ b/src/lib/elementary/elc_popup.c
@@ -1788,12 +1788,14 @@ _action_dismiss(Evas_Object *obj, const char *params 
EINA_UNUSED)
 }
 
 EOLIAN const Efl_Access_Action_Data *
-_elm_popup_efl_access_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, 
Elm_Popup_Data *pd EINA_UNUSED)
+_elm_popup_efl_access_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, 
Elm_Popup_Data *pd)
 {
static Efl_Access_Action_Data atspi_actions[] = {
   { "dismiss", NULL, NULL, _action_dismiss},
   { NULL, NULL, NULL, NULL }
};
+   if (pd->action_area)
+ return NULL;
return _actions[0];
 }
 

-- 




[EGIT] [core/efl] master 03/04: elm: add Efl.Access.Value interface to progressbar

2017-11-15 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=20c9dd1e842514bd0fc93e31ba95d53650dbfb77

commit 20c9dd1e842514bd0fc93e31ba95d53650dbfb77
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Nov 16 12:05:21 2017 +0900

elm: add Efl.Access.Value interface to progressbar

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5479
---
 src/lib/elementary/efl_ui_progressbar.c  | 7 +++
 src/lib/elementary/efl_ui_progressbar.eo | 4 +++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_progressbar.c 
b/src/lib/elementary/efl_ui_progressbar.c
index 67b98b12e6..10d67b4289 100644
--- a/src/lib/elementary/efl_ui_progressbar.c
+++ b/src/lib/elementary/efl_ui_progressbar.c
@@ -4,6 +4,7 @@
 
 #define EFL_ACCESS_PROTECTED
 #define ELM_LAYOUT_PROTECTED
+#define EFL_ACCESS_VALUE_PROTECTED
 
 #include 
 
@@ -552,6 +553,12 @@ _efl_ui_progressbar_part_efl_ui_range_range_value_get(Eo 
*obj, void *_pd EINA_UN
return _progressbar_part_value_get(sd, pd->part);
 }
 
+EOLIAN static void
+_efl_ui_progressbar_efl_access_value_value_and_text_get(Eo *obj EINA_UNUSED, 
Efl_Ui_Progressbar_Data *_pd, double *value, const char **text EINA_UNUSED)
+{
+   if (value) *value = _pd->val;
+}
+
 #include "efl_ui_progressbar_part.eo.c"
 
 /* Efl.Part end */
diff --git a/src/lib/elementary/efl_ui_progressbar.eo 
b/src/lib/elementary/efl_ui_progressbar.eo
index eb86cf8e55..369b6d4ab3 100644
--- a/src/lib/elementary/efl_ui_progressbar.eo
+++ b/src/lib/elementary/efl_ui_progressbar.eo
@@ -1,4 +1,5 @@
-class Efl.Ui.Progressbar (Efl.Ui.Layout, Efl.Ui.Range, Efl.Ui.Format, 
Efl.Ui.Direction)
+class Efl.Ui.Progressbar (Efl.Ui.Layout, Efl.Ui.Range, Efl.Ui.Format,
+  Efl.Ui.Direction, Efl.Access.Value)
 {
[[Elementary progressbar class]]
methods {
@@ -56,6 +57,7 @@ class Efl.Ui.Progressbar (Efl.Ui.Layout, Efl.Ui.Range, 
Efl.Ui.Format, Efl.Ui.Dir
   Efl.Ui.Direction.direction { get; set; }
   Efl.Ui.Format.format_cb { set; }
   Efl.Part.part;
+  Efl.Access.Value.value_and_text { get; }
}
events {
   changed; [[Called when progressbar changed]]

-- 




[EGIT] [core/efl] master 01/04: elm: Rename elm_interface_atspi_widget_action mixin

2017-11-15 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c838e30a24da9d2664bb839d2a4ada619189937c

commit c838e30a24da9d2664bb839d2a4ada619189937c
Author: Lukasz Stanislawski <lukasz.stanislaw...@gmail.com>
Date:   Thu Nov 16 11:31:26 2017 +0900

elm: Rename elm_interface_atspi_widget_action mixin

Reviewers: jpeg

Subscribers: jenkins, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5400
---
 src/Makefile_Elementary.am |  6 ++--
 src/lib/elementary/efl_access_action.eo|  4 +--
 ..._widget_action.c => efl_access_widget_action.c} | 32 +++---
 ...idget_action.eo => efl_access_widget_action.eo} | 11 
 ..._widget_action.h => efl_access_widget_action.h} |  8 +++---
 src/lib/elementary/efl_ui_button.c |  8 +++---
 src/lib/elementary/efl_ui_button.eo|  4 +--
 src/lib/elementary/efl_ui_calendar.c   |  9 +++---
 src/lib/elementary/efl_ui_calendar.eo  |  4 +--
 src/lib/elementary/efl_ui_check.c  |  8 +++---
 src/lib/elementary/efl_ui_check.eo |  4 +--
 src/lib/elementary/efl_ui_image.c  |  8 +++---
 src/lib/elementary/efl_ui_image.eo |  4 +--
 src/lib/elementary/efl_ui_image_zoomable.c |  8 +++---
 src/lib/elementary/efl_ui_image_zoomable.eo|  2 +-
 src/lib/elementary/efl_ui_multibuttonentry.c   |  8 +++---
 src/lib/elementary/efl_ui_radio.c  |  8 +++---
 src/lib/elementary/efl_ui_radio.eo |  4 +--
 src/lib/elementary/efl_ui_slider.c |  8 +++---
 src/lib/elementary/efl_ui_slider.eo|  4 +--
 src/lib/elementary/efl_ui_slider_interval.c|  2 +-
 src/lib/elementary/efl_ui_video.c  |  8 +++---
 src/lib/elementary/efl_ui_video.eo |  4 +--
 src/lib/elementary/efl_ui_win.c|  8 +++---
 src/lib/elementary/efl_ui_win.eo   |  4 +--
 src/lib/elementary/elc_combobox.c  |  8 +++---
 src/lib/elementary/elc_ctxpopup.c  |  8 +++---
 src/lib/elementary/elc_fileselector.c  |  8 +++---
 src/lib/elementary/elc_hoversel.c  |  8 +++---
 src/lib/elementary/elc_naviframe.c |  8 +++---
 src/lib/elementary/elc_player.c|  8 +++---
 src/lib/elementary/elc_popup.c |  8 +++---
 src/lib/elementary/elementary_config.h |  1 +
 src/lib/elementary/elm_access.c|  8 +++---
 src/lib/elementary/elm_access.eo   |  4 +--
 src/lib/elementary/elm_calendar.c  |  8 +++---
 src/lib/elementary/elm_calendar.eo |  4 +--
 src/lib/elementary/elm_color_item.eo   |  4 +--
 src/lib/elementary/elm_colorselector.c | 14 +-
 src/lib/elementary/elm_colorselector.eo|  4 +--
 src/lib/elementary/elm_combobox.eo |  4 +--
 src/lib/elementary/elm_ctxpopup.eo |  4 +--
 src/lib/elementary/elm_diskselector.c  |  8 +++---
 src/lib/elementary/elm_diskselector.eo |  4 +--
 src/lib/elementary/elm_fileselector.eo |  4 +--
 src/lib/elementary/elm_flipselector.c  |  8 +++---
 src/lib/elementary/elm_flipselector.eo |  4 +--
 src/lib/elementary/elm_general.eot |  2 +-
 src/lib/elementary/elm_gengrid.c   |  8 +++---
 src/lib/elementary/elm_gengrid.eo  |  4 +--
 src/lib/elementary/elm_genlist.c   |  8 +++---
 src/lib/elementary/elm_genlist.eo  |  4 +--
 src/lib/elementary/elm_hover.c |  8 +++---
 src/lib/elementary/elm_hover.eo|  4 +--
 src/lib/elementary/elm_hoversel.eo |  4 +--
 src/lib/elementary/elm_index.c |  8 +++---
 src/lib/elementary/elm_index_item.eo   |  4 +--
 src/lib/elementary/elm_interfaces.h|  2 +-
 src/lib/elementary/elm_list.c  |  8 +++---
 src/lib/elementary/elm_list.eo |  4 +--
 src/lib/elementary/elm_map.c   |  8 +++---
 src/lib/elementary/elm_map.eo  |  4 +--
 src/lib/elementary/elm_multibuttonentry_item.eo|  4 +--
 src/lib/elementary/elm_naviframe.eo|  4 +--
 src/lib/elementary/elm_panel.c |  8 +++---
 src/lib/elementary/elm_panel.eo|  4 +--
 src/lib/elementary/elm_player.eo   |  4 +--
 src/lib/elementary/elm_popup.eo|  4 +--
 src/lib/elementary/elm_scroller.c  |  8 +++---
 src/lib/elementary/elm_scroller.eo |  4 +--
 src/lib/elementary/elm_slideshow.c |  8 +++---
 src/lib/elementary/elm_slideshow.eo  

[EGIT] [core/efl] master 07/08: elm: evaluate MULTISELECTABLE state for genlist and gengrid

2017-11-12 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6505f535f681bbca21c7f60878fe13414641b8f8

commit 6505f535f681bbca21c7f60878fe13414641b8f8
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Mon Nov 13 12:08:57 2017 +0900

elm: evaluate MULTISELECTABLE state for genlist and gengrid

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5452
---
 src/lib/elementary/elm_gengrid.c | 3 +++
 src/lib/elementary/elm_genlist.c | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 69d53dc8cf..025db3035e 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -5606,6 +5606,9 @@ _elm_gengrid_efl_access_state_set_get(Eo *obj, 
Elm_Gengrid_Data *sd EINA_UNUSED)
 
STATE_TYPE_SET(ret, EFL_ACCESS_STATE_MANAGES_DESCENDANTS);
 
+   if (elm_gengrid_multi_select_get(obj))
+ STATE_TYPE_SET(ret, EFL_ACCESS_STATE_MULTISELECTABLE);
+
return ret;
 }
 
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 25aa0b1bd5..6fb54d3b2b 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -8634,6 +8634,9 @@ _elm_genlist_efl_access_state_set_get(Eo *obj, 
Elm_Genlist_Data *sd EINA_UNUSED)
 
STATE_TYPE_SET(ret, EFL_ACCESS_STATE_MANAGES_DESCENDANTS);
 
+   if (elm_genlist_multi_select_get(obj))
+ STATE_TYPE_SET(ret, EFL_ACCESS_STATE_MULTISELECTABLE);
+
return ret;
 }
 

-- 




[EGIT] [core/efl] master 05/08: elm: set accurate access role for elm_popup

2017-11-12 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2ea179d3734d7abfd620a31f1458cc662d69521f

commit 2ea179d3734d7abfd620a31f1458cc662d69521f
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Mon Nov 13 12:08:24 2017 +0900

elm: set accurate access role for elm_popup

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5454
---
 src/lib/elementary/elc_popup.c| 2 +-
 src/tests/elementary/elm_test_popup.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c
index 3a2f2213c1..e21c6311bc 100644
--- a/src/lib/elementary/elc_popup.c
+++ b/src/lib/elementary/elc_popup.c
@@ -1529,7 +1529,7 @@ _elm_popup_efl_object_constructor(Eo *obj, Elm_Popup_Data 
*_pd EINA_UNUSED)
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
-   efl_access_role_set(obj, EFL_ACCESS_ROLE_NOTIFICATION);
+   efl_access_role_set(obj, EFL_ACCESS_ROLE_DIALOG);
 
return obj;
 }
diff --git a/src/tests/elementary/elm_test_popup.c 
b/src/tests/elementary/elm_test_popup.c
index 1cd29163d2..17b8433b1d 100644
--- a/src/tests/elementary/elm_test_popup.c
+++ b/src/tests/elementary/elm_test_popup.c
@@ -18,7 +18,7 @@ START_TEST (elm_atspi_role_get)
popup = elm_popup_add(win);
role = efl_access_role_get(popup);
 
-   ck_assert(role == EFL_ACCESS_ROLE_NOTIFICATION);
+   ck_assert(role == EFL_ACCESS_ROLE_DIALOG);
 
elm_shutdown();
 }

-- 




[EGIT] [core/efl] master 06/08: elm: set accurate access role for elm_icon

2017-11-12 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b9f31b183608ab4b29fc8741e1d7f9283d07a6b6

commit b9f31b183608ab4b29fc8741e1d7f9283d07a6b6
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Mon Nov 13 12:08:43 2017 +0900

elm: set accurate access role for elm_icon

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5453
---
 src/lib/elementary/elm_icon.c| 2 +-
 src/tests/elementary/elm_test_icon.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_icon.c b/src/lib/elementary/elm_icon.c
index 5fdc294776..1db6b6f87b 100644
--- a/src/lib/elementary/elm_icon.c
+++ b/src/lib/elementary/elm_icon.c
@@ -615,7 +615,7 @@ _elm_icon_efl_object_constructor(Eo *obj, Elm_Icon_Data *sd)
 
efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
-   efl_access_role_set(obj, EFL_ACCESS_ROLE_IMAGE);
+   efl_access_role_set(obj, EFL_ACCESS_ROLE_ICON);
 
return obj;
 }
diff --git a/src/tests/elementary/elm_test_icon.c 
b/src/tests/elementary/elm_test_icon.c
index eec0072707..2b2150665d 100644
--- a/src/tests/elementary/elm_test_icon.c
+++ b/src/tests/elementary/elm_test_icon.c
@@ -18,7 +18,7 @@ START_TEST (elm_atspi_role_get)
icon = elm_icon_add(win);
role = efl_access_role_get(icon);
 
-   ck_assert(role == EFL_ACCESS_ROLE_IMAGE);
+   ck_assert(role == EFL_ACCESS_ROLE_ICON);
 
elm_shutdown();
 }

-- 




[EGIT] [core/efl] master 01/01: elm: mark access interfaces as beta

2017-11-01 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5c997b3aaac6277b8c4965ee8e90d05e1959ac05

commit 5c997b3aaac6277b8c4965ee8e90d05e1959ac05
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Wed Nov 1 21:31:46 2017 +0900

elm: mark access interfaces as beta

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5365
---
 src/lib/elementary/efl_access.eo   | 40 +-
 src/lib/elementary/efl_access_component.c  |  1 +
 src/lib/elementary/efl_access_component.eo | 18 ++--
 src/lib/elementary/efl_access_editable_text.eo | 12 
 src/lib/elementary/efl_access_image.eo |  6 ++--
 src/lib/elementary/efl_access_selection.eo | 16 +--
 src/lib/elementary/efl_access_text.eo  | 32 ++---
 src/lib/elementary/efl_access_value.eo |  6 ++--
 src/lib/elementary/elementary_config.h |  7 +
 9 files changed, 73 insertions(+), 65 deletions(-)

diff --git a/src/lib/elementary/efl_access.eo b/src/lib/elementary/efl_access.eo
index 01a1b4abe2..0ae001a433 100644
--- a/src/lib/elementary/efl_access.eo
+++ b/src/lib/elementary/efl_access.eo
@@ -241,7 +241,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
eo_prefix: efl_access;
data: Efl_Access_Data;
methods {
-  @property localized_role_name @protected {
+  @property localized_role_name @protected @beta {
  [[Gets an localized string describing accessible object role name.]]
  get {
  }
@@ -249,7 +249,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 localized_name: string; [[Localized accessible object role name]]
  }
   }
-  @property name {
+  @property name @beta {
  [[Accessible name of the object.]]
  get {
  }
@@ -259,7 +259,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 name: string; [[Accessible name]]
  }
   }
-  @property relation_set @protected {
+  @property relation_set @protected @beta {
  [[Gets an all relations between accessible object and other 
accessible objects.]]
  get {
  }
@@ -267,7 +267,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 relations: Efl.Access.Relation_Set; [[Accessible relation set]]
  }
   }
-  @property role {
+  @property role @beta {
  [[The role of the object in accessibility domain.]]
  get {
  }
@@ -277,7 +277,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 role: Efl.Access.Role; [[Accessible role]]
  }
   }
-  @property children @protected {
+  @property children @protected @beta {
  [[Gets object's accessible children.]]
  get {
  }
@@ -285,7 +285,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 children: list @owned; [[List of widget's children]]
  }
   }
-  @property role_name @protected {
+  @property role_name @protected @beta {
  [[Gets human-readable string indentifying object accessibility role.]]
  get {
  }
@@ -293,7 +293,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 role_name: string; [[Accessible role name]]
  }
   }
-  @property attributes @protected {
+  @property attributes @protected @beta {
  [[Gets key-value pairs indentifying object extra attributes. Must be 
free by a user.]]
  get {
  }
@@ -302,7 +302,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 attributes: list<ptr(Efl.Access.Attribute) @owned> @owned; [[List 
of object attributes]]
  }
   }
-  @property index_in_parent @protected {
+  @property index_in_parent @protected @beta {
  [[Gets index of the child in parent's children list.]]
  get {
  }
@@ -310,7 +310,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 idx: int; [[Index in children list]]
  }
   }
-  @property description {
+  @property description @beta {
  [[Contextual information about object.]]
  get {
  }
@@ -320,7 +320,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 description: string; [[Accessible contextual information]]
  }
   }
-  @property parent {
+  @property parent @beta {
  [[Object's accessible parent.]]
  get {
  }
@@ -330,7 +330,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 parent: Efl.Access; [[Accessible parent]]
  }
   }
-  @property state_set @protected {
+  @property state_set @protected @beta {
  [[Gets set describing object accessible states.]]
  get {
  }
@@ -338,7 +338,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
 states: Efl.Access.State_Set; [[Accessible state set]]
  }
   }
-  event_handle

[EGIT] [core/efl] master 01/01: elm: add prefixes to Efl.Access.Action to avoid clashes

2017-10-23 Thread Lukasz Stanislawski
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=bcb24a40dc2f3e5ad018ca9b8f91770cb44617ff

commit bcb24a40dc2f3e5ad018ca9b8f91770cb44617ff
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Oct 24 12:01:50 2017 +0900

elm: add prefixes to Efl.Access.Action to avoid clashes

Summary:
Prefix methods/properties of Efl.Access.Action mixin to avoid potential
clashes in genrated bindings.

This is first of series of patches removing potential name clashes
in accessibility interfaces.

Reviewers: jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5213
---
 src/lib/elementary/efl_access_action.c  |  3 ++-
 src/lib/elementary/efl_access_action.eo | 12 ++--
 src/lib/elementary/elm_atspi_bridge.c   |  2 ++
 src/lib/elementary/elm_interface_atspi_widget_action.c  |  9 +
 src/lib/elementary/elm_interface_atspi_widget_action.eo |  6 +++---
 5 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/src/lib/elementary/efl_access_action.c 
b/src/lib/elementary/efl_access_action.c
index 92b62f8b9f..a6aba74f33 100644
--- a/src/lib/elementary/efl_access_action.c
+++ b/src/lib/elementary/efl_access_action.c
@@ -3,13 +3,14 @@
 #endif
 
 #define EFL_ACCESS_ACTION_PROTECTED
+#define EFL_ACCESS_ACTION_BETA
 
 #include 
 #include "elm_widget.h"
 #include "elm_priv.h"
 
 EOLIAN const char *
-_efl_access_action_localized_name_get(Eo *obj, void *pd EINA_UNUSED, int id)
+_efl_access_action_action_localized_name_get(Eo *obj, void *pd EINA_UNUSED, 
int id)
 {
const char *ret = NULL;
 
diff --git a/src/lib/elementary/efl_access_action.eo 
b/src/lib/elementary/efl_access_action.eo
index d31fb61f0c..ca5d3457d8 100644
--- a/src/lib/elementary/efl_access_action.eo
+++ b/src/lib/elementary/efl_access_action.eo
@@ -6,7 +6,7 @@ mixin Efl.Access.Action ()
[[Accessible action mixin]]
data: null;
methods {
-  @property name @protected @pure_virtual {
+  @property action_name @protected @pure_virtual @beta {
  [[Gets action name for given id]]
  get {
  }
@@ -17,7 +17,7 @@ mixin Efl.Access.Action ()
 id: int; [[ID to get action name for]]
  }
   }
-  @property localized_name @protected {
+  @property action_localized_name @protected @beta {
  [[Gets localized action name for given id]]
  get {
  }
@@ -28,7 +28,7 @@ mixin Efl.Access.Action ()
 id: int; [[ID to get localized name for]]
  }
   }
-  @property description @protected @pure_virtual {
+  @property action_description @protected @pure_virtual @beta {
  [[Action description for given id]]
  get {
  }
@@ -42,7 +42,7 @@ mixin Efl.Access.Action ()
 id: int; [[ID to set or get description for]]
  }
   }
-  @property actions @protected {
+  @property actions @protected @beta {
  [[Get list of available widget actions]]
  get @pure_virtual {
  }
@@ -50,14 +50,14 @@ mixin Efl.Access.Action ()
 actions: list; [[Contains statically allocated 
strings]]
  }
   }
-  action_do @protected @pure_virtual {
+  action_do @protected @pure_virtual @beta {
  [[Performs action on given widget.]]
  params {
 @in id: int; [[ID for widget]]
  }
  return: bool; [[$true if action was performed, $false otherwise]]
   }
-  keybinding_get @protected @pure_virtual {
+  action_keybinding_get @protected @pure_virtual @beta {
  [[Gets configured keybinding for specific action and widget.]]
  params {
 @in id: int; [[ID for widget]]
diff --git a/src/lib/elementary/elm_atspi_bridge.c 
b/src/lib/elementary/elm_atspi_bridge.c
index 3d3b3ff521..c8681932e5 100644
--- a/src/lib/elementary/elm_atspi_bridge.c
+++ b/src/lib/elementary/elm_atspi_bridge.c
@@ -11,6 +11,8 @@
 #define EFL_ACCESS_TEXT_PROTECTED
 #define EFL_ACCESS_EDITABLE_TEXT_PROTECTED
 
+#define EFL_ACCESS_ACTION_BETA
+
 #include "atspi/atspi-constants.h"
 
 #include 
diff --git a/src/lib/elementary/elm_interface_atspi_widget_action.c 
b/src/lib/elementary/elm_interface_atspi_widget_action.c
index 66f3891a13..aee335b16f 100644
--- a/src/lib/elementary/elm_interface_atspi_widget_action.c
+++ b/src/lib/elementary/elm_interface_atspi_widget_action.c
@@ -4,6 +4,7 @@
 
 #define EFL_ACCESS_ACTION_PROTECTED
 #define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
+#define EFL_ACCESS_ACTION_BETA
 
 #include 
 #include "elm_widget.h"
@@ -40,7 +41,7 @@ 
_elm_interface_atspi_widget_action_efl_access_action_action_do(Eo *obj, void *pd
 }
 
 EOLIAN static char*
-_elm_interface_atspi_widget_action_efl_access_action_keybinding_get(Eo *obj, 
void *pd EINA_UNUSED, int id)
+_elm_interface_atspi_widget_act

[EGIT] [core/elementary] master 01/01: index: accessibilitize index items

2016-01-04 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=fa6bcdda8cf5cc69c37a96a96c1bd7ed93df52c9

commit fa6bcdda8cf5cc69c37a96a96c1bd7ed93df52c9
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Mon Dec 28 14:40:34 2015 +0100

index: accessibilitize index items

Expose elm_index items as accessiblie buttons. Provide name
and "activate" action.
---
 src/lib/elm_index.c| 70 +-
 src/lib/elm_index.eo   |  1 +
 src/lib/elm_index_item.eo  |  4 ++-
 src/tests/elm_test_index.c |  2 +-
 4 files changed, 74 insertions(+), 3 deletions(-)

diff --git a/src/lib/elm_index.c b/src/lib/elm_index.c
index c09df9e..17f844a 100644
--- a/src/lib/elm_index.c
+++ b/src/lib/elm_index.c
@@ -3,6 +3,8 @@
 #endif
 
 #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
+#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
+#define ELM_INTERFACE_ATSPI_COMPONENT_PROTECTED
 
 #define ELM_WIDGET_ITEM_PROTECTED
 #include 
@@ -529,6 +531,7 @@ _elm_index_item_eo_base_constructor(Eo *obj, 
Elm_Index_Item_Data *it)
 {
obj = eo_do_super_ret(obj, ELM_INDEX_ITEM_CLASS, obj, eo_constructor());
it->base = eo_data_scope_get(obj, ELM_WIDGET_ITEM_CLASS);
+   eo_do(obj, 
elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PUSH_BUTTON));
 
return obj;
 }
@@ -1229,7 +1232,7 @@ _elm_index_eo_base_constructor(Eo *obj, Elm_Index_Data 
*_pd EINA_UNUSED)
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_LIST));
+ elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_SCROLL_BAR));
 
return obj;
 }
@@ -1369,6 +1372,12 @@ _elm_index_item_append(Eo *obj, Elm_Index_Data *sd, 
const char *letter, Evas_Sma
ELM_INDEX_ITEM_DATA_GET(eo_item, it);
VIEW(it) = edje_object_add(evas_object_evas_get(obj));
 
+   if (_elm_config->atspi_mode)
+ {
+elm_interface_atspi_accessible_added(eo_item);
+elm_interface_atspi_accessible_children_changed_added_signal_emit(obj, 
eo_item);
+ }
+
return eo_item;
 }
 
@@ -1385,6 +1394,12 @@ _elm_index_item_prepend(Eo *obj, Elm_Index_Data *sd, 
const char *letter, Evas_Sm
ELM_INDEX_ITEM_DATA_GET(eo_item, it);
VIEW(it) = edje_object_add(evas_object_evas_get(obj));
 
+   if (_elm_config->atspi_mode)
+ {
+elm_interface_atspi_accessible_added(eo_item);
+elm_interface_atspi_accessible_children_changed_added_signal_emit(obj, 
eo_item);
+ }
+
return eo_item;
 }
 
@@ -1414,6 +1429,12 @@ _elm_index_item_insert_after(Eo *obj, Elm_Index_Data 
*sd, Elm_Object_Item *after
ELM_INDEX_ITEM_DATA_GET(eo_item, it);
VIEW(it) = edje_object_add(evas_object_evas_get(obj));
 
+   if (_elm_config->atspi_mode)
+ {
+elm_interface_atspi_accessible_added(eo_item);
+elm_interface_atspi_accessible_children_changed_added_signal_emit(obj, 
eo_item);
+ }
+
return eo_item;
 }
 
@@ -1432,6 +1453,12 @@ _elm_index_item_insert_before(Eo *obj, Elm_Index_Data 
*sd, Elm_Object_Item *befo
ELM_INDEX_ITEM_DATA_GET(eo_item, it);
VIEW(it) = edje_object_add(evas_object_evas_get(obj));
 
+   if (_elm_config->atspi_mode)
+ {
+elm_interface_atspi_accessible_added(eo_item);
+elm_interface_atspi_accessible_children_changed_added_signal_emit(obj, 
eo_item);
+ }
+
return eo_item;
 }
 
@@ -1470,6 +1497,12 @@ _elm_index_item_sorted_insert(Eo *obj, Elm_Index_Data 
*sd, const char *letter, E
ELM_INDEX_ITEM_DATA_GET(eo_item, it);
VIEW(it) = edje_object_add(evas_object_evas_get(obj));
 
+   if (_elm_config->atspi_mode)
+ {
+elm_interface_atspi_accessible_added(eo_item);
+elm_interface_atspi_accessible_children_changed_added_signal_emit(obj, 
eo_item);
+ }
+
if (!eo_item) return NULL;
else return eo_item;
 }
@@ -1654,5 +1687,40 @@ _elm_index_class_constructor(Eo_Class *klass)
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
 }
 
+static Eina_Bool
+_item_action_activate(Eo *obj, const char *params EINA_UNUSED EINA_UNUSED)
+{
+   elm_index_item_selected_set(obj, EINA_TRUE);
+   return EINA_TRUE;
+}
+
+EOLIAN static Eina_List*
+_elm_index_elm_interface_atspi_accessible_children_get(Eo *obj, Elm_Index_Data 
*data)
+{
+   Eina_List *ret;
+   eo_do_super(obj, ELM_INDEX_CLASS, ret = 
elm_interface_atspi_accessible_children_get());
+   return eina_list_merge(eina_list_clone(data->items), ret);
+}
+
+EOLIAN static char*
+_elm_index_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, 
Elm_Index_Item_Data *data)
+{
+   char *name;
+   eo_do_super(eo_it, ELM_INDEX_ITEM_CLASS, name = 
elm_interface_atspi_accessible_name_get());
+   if (name) return name;
+
+   return data->letter ? strdup(data->letter) : NULL;

[EGIT] [core/elementary] master 02/18: genlist: new SCROLLTO_BOTTOM alignment

2016-01-04 Thread Lukasz Stanislawski
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=9230a3d31e5428e7f3c69ff6dde8c6f0c59403fc

commit 9230a3d31e5428e7f3c69ff6dde8c6f0c59403fc
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Mon Jan 4 14:05:29 2016 -0800

genlist: new SCROLLTO_BOTTOM alignment

Summary:
Add new scrollto type allowing to align genlist item to bottom of viewport.
Feature compleates and closes list of all alignment types for genlist items.

@feature

Test Plan: elementary_test => Genlist Show/Bring

Reviewers: cedric, seoz, SanghyeonLee

Subscribers: seoz

Differential Revision: https://phab.enlightenment.org/D3447

Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/bin/test.c  |   2 +
 src/bin/test_genlist.c  | 153 
 src/lib/elm_genlist.c   |   4 ++
 src/lib/elm_genlist_item.eo |   3 +-
 4 files changed, 161 insertions(+), 1 deletion(-)

diff --git a/src/bin/test.c b/src/bin/test.c
index 8019ac0..53f419d 100644
--- a/src/bin/test.c
+++ b/src/bin/test.c
@@ -124,6 +124,7 @@ void test_genlist_item_styles(void *data, Evas_Object *obj, 
void *event_info);
 void test_genlist_multi_select(void *data, Evas_Object *obj, void *event_info);
 void test_genlist_del(void *data, Evas_Object *obj, void *event_info);
 void test_genlist_filter(void *data, Evas_Object *obj, void *event_info);
+void test_genlist_show_bring(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer2(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer3(void *data, Evas_Object *obj, void *event_info);
@@ -695,6 +696,7 @@ add_tests:
ADD_TEST(NULL, "Lists - Genlist", "Genlist Multi Select", 
test_genlist_multi_select);
ADD_TEST(NULL, "Lists - Genlist", "Genlist Del", test_genlist_del);
ADD_TEST(NULL, "Lists - Genlist", "Genlist Filter", test_genlist_filter);
+   ADD_TEST(NULL, "Lists - Genlist", "Genlist Show/Bring", 
test_genlist_show_bring);
 
//--//
 
diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c
index 36cd529..9dcebc1 100644
--- a/src/bin/test_genlist.c
+++ b/src/bin/test_genlist.c
@@ -21,6 +21,7 @@ struct _api_data
void *gl;
 
void *filter_data;   /* The data used for filtering */
+   int scrollto;
 };
 typedef struct _api_data api_data;
 
@@ -5080,3 +5081,155 @@ test_genlist_filter(void *data EINA_UNUSED,
evas_object_smart_callback_add(entry, "changed,user", _entry_change_cb, 
api);
 }
 
+static void
+_rd_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+   api_data *ad = data;
+   ad->scrollto = elm_radio_state_value_get(obj);
+}
+
+static Evas_Object *
+_scrollto_mode_frame_new(Evas_Object *win, void *data)
+{
+   Evas_Object *fr, *bx, *rd, *rdg;
+   api_data *sd = data;
+
+   fr = elm_frame_add(win);
+   elm_object_text_set(fr, "Scrollto Mode");
+   evas_object_show(fr);
+
+   bx = elm_box_add(win);
+   elm_object_content_set(fr, bx);
+   evas_object_show(bx);
+
+   rd = elm_radio_add(win);
+   elm_radio_state_value_set(rd, 0);
+   elm_object_text_set(rd, "SCROLLTO_NONE");
+   evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, sd);
+   evas_object_show(rd);
+   elm_box_pack_end(bx, rd);
+   rdg = rd;
+
+   rd = elm_radio_add(win);
+   elm_radio_state_value_set(rd, 1);
+   elm_object_text_set(rd, "SCROLLTO_IN");
+   elm_radio_group_add(rd, rdg);
+   evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, sd);
+   evas_object_show(rd);
+   elm_box_pack_end(bx, rd);
+
+   rd = elm_radio_add(win);
+   elm_radio_state_value_set(rd, 2);
+   elm_object_text_set(rd, "SCROLLTO_TOP");
+   elm_radio_group_add(rd, rdg);
+   evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, sd);
+   evas_object_show(rd);
+   elm_box_pack_end(bx, rd);
+
+   rd = elm_radio_add(win);
+   elm_radio_state_value_set(rd, 4);
+   elm_object_text_set(rd, "SCROLLTO_MIDDLE");
+   elm_radio_group_add(rd, rdg);
+   evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, sd);
+   evas_object_show(rd);
+   elm_box_pack_end(bx, rd);
+
+   rd = elm_radio_add(win);
+   elm_radio_state_value_set(rd, 8);
+   elm_object_text_set(rd, "SCROLLTO_BOTTOM");
+   elm_radio_group_add(rd, rdg);
+   evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, sd);
+   evas_object_show(rd);
+   elm_box_pack_end(bx, rd);
+
+   return fr;
+}
+
+void
+_scrollto_item_show(void *data,
+Evas_Object *obj EINA_UNUSED,
+void *event_info EINA_UNUSED)
+{
+   api_data *api = data;
+   Elm_Object_Item *it = elm_genlist_sel

[EGIT] [core/elementary] master 01/01: widget: remove redundat resize_object_set call

2015-12-23 Thread Lukasz Stanislawski
hermet pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=f7726c72290cd7341132939c5b6f8c0468f60e87

commit f7726c72290cd7341132939c5b6f8c0468f60e87
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Dec 24 14:03:54 2015 +0900

widget: remove redundat resize_object_set call

Summary:
This code is wrong and enforces developers to manipulate
resize_obj filed directly, instead of using elm_widget_resize_object_set.

Test Plan:
check if objects inheriting from elm_widget do not set field
directly.

Reviewers: cedric, raster, seoz

Subscribers: seoz

Projects: #elementary

Differential Revision: https://phab.enlightenment.org/D3362
---
 src/lib/elm_widget.c | 8 
 1 file changed, 8 deletions(-)

diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 9ca241e..f917d29 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -372,14 +372,6 @@ _elm_widget_evas_object_smart_add(Eo *obj, 
Elm_Widget_Smart_Data *priv)
   _obj_mouse_up, obj);
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_IN,
   _obj_mouse_in, obj);
-   /* just a helper for inheriting classes */
-   if (priv->resize_obj)
- {
-Evas_Object *r_obj = priv->resize_obj;
-priv->resize_obj = NULL;
-
-elm_widget_resize_object_set(obj, r_obj, EINA_TRUE);
- }
 }
 
 static void

-- 




[EGIT] [core/elementary] master 01/01: atspi: return previous name in overloaded getters

2015-12-17 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=db3c4bdd2ffaba8cc02c18467e5fd0290b42218b

commit db3c4bdd2ffaba8cc02c18467e5fd0290b42218b
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Dec 17 09:36:02 2015 +0100

atspi: return previous name in overloaded getters

Some overloaded accessible name getters did not respect
values set by developer.

@fix
---
 src/lib/elm_entry.c   | 5 -
 src/lib/elm_gengrid.c | 5 -
 src/lib/elm_genlist.c | 6 --
 src/lib/elm_list.c| 5 -
 src/lib/elm_menu.c| 5 -
 src/lib/elm_spinner.c | 3 +++
 src/lib/elm_toolbar.c | 5 -
 src/lib/elm_win.c | 7 +--
 8 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index ec6e502..baedc27 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -5718,8 +5718,11 @@ 
_elm_entry_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Entry_Data
 }
 
 EOLIAN static char*
-_elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, 
Elm_Entry_Data *sd)
+_elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Entry_Data *sd)
 {
+   char *name;
+   eo_do_super(obj, ELM_ENTRY_CLASS, name = 
elm_interface_atspi_accessible_name_get());
+   if (name && strncmp("", name, 1)) return name;
const char *ret = edje_object_part_text_get(sd->entry_edje, "elm.guide");
return ret ? strdup(ret) : NULL;
 }
diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index 093f5e4..26d753d 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -5492,11 +5492,14 @@ 
_elm_gengrid_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
 }
 
 EOLIAN char*
-_elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it 
EINA_UNUSED, Elm_Gen_Item *it)
+_elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, 
Elm_Gen_Item *it)
 {
char *ret;
Eina_Strbuf *buf;
 
+   eo_do_super(eo_it, ELM_GENGRID_ITEM_CLASS, ret = 
elm_interface_atspi_accessible_name_get());
+   if (ret) return ret;
+
buf = eina_strbuf_new();
 
if (it->itc->func.text_get)
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index 0c84c8f..e6ff721 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -8038,12 +8038,14 @@ 
_elm_genlist_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
 }
 
 EOLIAN char*
-_elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it 
EINA_UNUSED,
-  Elm_Gen_Item *it)
+_elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, 
Elm_Gen_Item *it)
 {
char *ret;
Eina_Strbuf *buf;
 
+   eo_do_super(eo_it, ELM_GENLIST_ITEM_CLASS, ret = 
elm_interface_atspi_accessible_name_get());
+   if (ret) return ret;
+
buf = eina_strbuf_new();
 
if (it->itc->func.text_get)
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index a4fbffe..1e81b74 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -2152,8 +2152,11 @@ 
_elm_list_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_List_
 }
 
 EOLIAN static char*
-_elm_list_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, 
Elm_List_Item_Data *data)
+_elm_list_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, 
Elm_List_Item_Data *data)
 {
+   char *ret;
+   eo_do_super(eo_it, ELM_LIST_ITEM_CLASS, ret = 
elm_interface_atspi_accessible_name_get());
+   if (ret) return ret;
return data->label ? strdup(data->label) : NULL;
 }
 
diff --git a/src/lib/elm_menu.c b/src/lib/elm_menu.c
index c5ca878..5d7cd15 100644
--- a/src/lib/elm_menu.c
+++ b/src/lib/elm_menu.c
@@ -1315,8 +1315,11 @@ 
_elm_menu_item_elm_interface_atspi_accessible_role_get(Eo *obj EINA_UNUSED, Elm_
 }
 
 EOLIAN static char*
-_elm_menu_item_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, 
Elm_Menu_Item_Data *sd)
+_elm_menu_item_elm_interface_atspi_accessible_name_get(Eo *obj, 
Elm_Menu_Item_Data *sd)
 {
+   char *ret;
+   eo_do_super(obj, ELM_MENU_ITEM_CLASS, ret = 
elm_interface_atspi_accessible_name_get());
+   if (ret) return ret;
return sd->label ? strdup(sd->label) : NULL;
 }
 
diff --git a/src/lib/elm_spinner.c b/src/lib/elm_spinner.c
index 019ad4d..116b606 100644
--- a/src/lib/elm_spinner.c
+++ b/src/lib/elm_spinner.c
@@ -1654,6 +1654,9 @@ _elm_spinner_elm_interface_atspi_value_increment_get(Eo 
*obj EINA_UNUSED, Elm_Sp
 EOLIAN static char*
 _elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data 
*sd EINA_UNUSED)
 {
+   char *name;
+   eo_do_super(obj, ELM_SPINNER_CLASS, name = 
elm_interface_atspi_accessible_name_get());
+   if (name) return name;
const char *ret = elm_layout_text_get(obj, "elm.text");
return ret ? strdup(ret) : NULL;
 }
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index 4fc055b..0d193ed 10

[EGIT] [core/elementary] master 01/01: tests: adjust atspi roles.

2015-12-17 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=d2b80a98542a636913525601835c67694d6932e9

commit d2b80a98542a636913525601835c67694d6932e9
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Dec 17 11:43:57 2015 +0100

tests: adjust atspi roles.
---
 src/tests/elm_test_hover.c| 2 +-
 src/tests/elm_test_hoversel.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/tests/elm_test_hover.c b/src/tests/elm_test_hover.c
index c7d4551..5eedb19 100644
--- a/src/tests/elm_test_hover.c
+++ b/src/tests/elm_test_hover.c
@@ -18,7 +18,7 @@ START_TEST (elm_atspi_role_get)
hover = elm_hover_add(win);
eo_do(hover, role = elm_interface_atspi_accessible_role_get());
 
-   ck_assert(role == ELM_ATSPI_ROLE_GLASS_PANE);
+   ck_assert(role == ELM_ATSPI_ROLE_POPUP_MENU);
 
elm_shutdown();
 }
diff --git a/src/tests/elm_test_hoversel.c b/src/tests/elm_test_hoversel.c
index 4bb6aaf..dedccf6 100644
--- a/src/tests/elm_test_hoversel.c
+++ b/src/tests/elm_test_hoversel.c
@@ -18,7 +18,7 @@ START_TEST (elm_atspi_role_get)
hoversel = elm_hoversel_add(win);
eo_do(hoversel, role = elm_interface_atspi_accessible_role_get());
 
-   ck_assert(role == ELM_ATSPI_ROLE_GLASS_PANE);
+   ck_assert(role == ELM_ATSPI_ROLE_PUSH_BUTTON);
 
elm_shutdown();
 }

-- 




[EGIT] [core/elementary] master 01/01: popup: enable to dismiss popup with accessibility API

2015-12-17 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=69c943a2031a99067fbe2d45c9833ec8228ea935

commit 69c943a2031a99067fbe2d45c9833ec8228ea935
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Dec 17 11:58:37 2015 +0100

popup: enable to dismiss popup with accessibility API

Clean up elm_popup actions. Move actions should not be used
from accessibility API. Only dismiss seems to be resonable
action which could be triggered.
---
 src/lib/elc_popup.c | 14 --
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c
index 7c926f9..ead2646 100644
--- a/src/lib/elc_popup.c
+++ b/src/lib/elc_popup.c
@@ -1826,16 +1826,18 @@ _elm_popup_class_constructor(Eo_Class *klass)
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
 }
 
+static Eina_Bool
+_action_dismiss(Evas_Object *obj, const char *params EINA_UNUSED)
+{
+   eo_do(obj, eo_event_callback_call(ELM_POPUP_EVENT_BLOCK_CLICKED, NULL));
+   return EINA_TRUE;
+}
+
 EOLIAN const Elm_Atspi_Action *
 _elm_popup_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj 
EINA_UNUSED, Elm_Popup_Data *pd EINA_UNUSED)
 {
static Elm_Atspi_Action atspi_actions[] = {
-  { "move,previous", "move", "previous", _key_action_move},
-  { "move,next", "move", "next", _key_action_move},
-  { "move,left", "move", "left", _key_action_move},
-  { "move,right", "move", "right", _key_action_move},
-  { "move,up", "move", "up", _key_action_move},
-  { "move,down", "move", "down", _key_action_move},
+  { "dismiss", NULL, NULL, _action_dismiss},
   { NULL, NULL, NULL, NULL }
};
return _actions[0];

-- 




[EGIT] [core/elementary] master 01/01: naviframe: set better accessibility role and name

2015-12-16 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=612528e090b1a92e5784d56610a600eb62479445

commit 612528e090b1a92e5784d56610a600eb62479445
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Wed Dec 16 16:18:17 2015 +0100

naviframe: set better accessibility role and name
---
 src/lib/elc_naviframe.c | 14 ++
 1 file changed, 14 insertions(+)

diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c
index 441c418..0a7998a 100644
--- a/src/lib/elc_naviframe.c
+++ b/src/lib/elc_naviframe.c
@@ -508,6 +508,16 @@ _elm_naviframe_item_elm_widget_item_part_text_set(Eo 
*eo_it EINA_UNUSED,
if (_elm_config->access_mode)
  _access_obj_process(nit, EINA_TRUE);
 
+   memset(buf, 0x0, sizeof(buf));
+   if (nit->title_label)
+ strncat(buf, nit->title_label, sizeof(buf) - 1);
+   if (nit->subtitle_label)
+ {
+if (nit->title_label) strncat(buf, " ", 1);
+strncat(buf, nit->subtitle_label, sizeof(buf) - strlen(buf) - 2);
+ }
+   eo_do(VIEW(it), elm_interface_atspi_accessible_name_set(buf));
+
elm_layout_sizing_eval(WIDGET(nit));
 }
 
@@ -1222,6 +1232,10 @@ _item_new(Evas_Object *obj,
if (!elm_widget_sub_object_add(obj, VIEW(it)))
  ERR("could not add %p as sub object of %p", VIEW(it), obj);
 
+   eo_do(VIEW(it),
+ elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PAGE_TAB),
+ elm_interface_atspi_accessible_name_set((char*)title_label));
+
evas_object_event_callback_add
  (VIEW(it), EVAS_CALLBACK_CHANGED_SIZE_HINTS,
  _on_item_size_hints_changed, obj);

-- 




[EGIT] [core/elementary] master 02/02: hoversel: accessibility enhancements

2015-12-15 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=b67ab124df4ac55bad9b4235622fc81758f47bc5

commit b67ab124df4ac55bad9b4235622fc81758f47bc5
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Dec 15 13:30:52 2015 +0100

hoversel: accessibility enhancements

Allow to dismiss hover using accessibility API.
Change accessibiility role to popup.
---
 src/lib/elm_hover.c  | 20 +++-
 src/lib/elm_hover.eo |  3 ++-
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/lib/elm_hover.c b/src/lib/elm_hover.c
index e7659a9..1216cc5 100644
--- a/src/lib/elm_hover.c
+++ b/src/lib/elm_hover.c
@@ -3,6 +3,7 @@
 #endif
 
 #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
+#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
 
 #include 
 
@@ -685,7 +686,7 @@ _elm_hover_eo_base_constructor(Eo *obj, Elm_Hover_Data *_pd 
EINA_UNUSED)
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_GLASS_PANE));
+ elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_POPUP_MENU));
 
return obj;
 }
@@ -836,4 +837,21 @@ _elm_hover_class_constructor(Eo_Class *klass)
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
 }
 
+static Eina_Bool
+_action_dismiss(Evas_Object *obj, const char *params EINA_UNUSED)
+{
+   eo_do(obj, elm_obj_hover_dismiss());
+   return EINA_TRUE;
+}
+
+EOLIAN const Elm_Atspi_Action *
+_elm_hover_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj 
EINA_UNUSED, Elm_Hover_Data *pd EINA_UNUSED)
+{
+   static Elm_Atspi_Action atspi_actions[] = {
+  { "dismiss", NULL, NULL, _action_dismiss},
+  { NULL, NULL, NULL, NULL}
+   };
+   return _actions[0];
+}
+
 #include "elm_hover.eo.c"
diff --git a/src/lib/elm_hover.eo b/src/lib/elm_hover.eo
index 03a84b5..65a3238 100644
--- a/src/lib/elm_hover.eo
+++ b/src/lib/elm_hover.eo
@@ -7,7 +7,7 @@ enum Elm.Hover.Axis
both [[ELM_HOVER_AXIS_BOTH -- both.]]
 }
 
-class Elm.Hover (Elm.Layout, Evas.Clickable_Interface)
+class Elm.Hover (Elm.Layout, Evas.Clickable_Interface, 
Elm_Interface_Atspi_Widget_Action)
 {
eo_prefix: elm_obj_hover;
methods {
@@ -75,6 +75,7 @@ class Elm.Hover (Elm.Layout, Evas.Clickable_Interface)
   Elm.Container.content_unset;
   Elm.Layout.sizing_eval;
   Elm.Layout.content_aliases.get;
+  Elm_Interface_Atspi_Widget_Action.elm_actions.get;
}
events {
   smart,changed;

-- 




[EGIT] [core/elementary] master 01/02: hoversel: change accessibility role to popup

2015-12-15 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=709cf816c112859c253b5423a22a6896ec072b8f

commit 709cf816c112859c253b5423a22a6896ec072b8f
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Dec 15 13:30:20 2015 +0100

hoversel: change accessibility role to popup
---
 src/lib/elc_hoversel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c
index d45b687..0d91ae0 100644
--- a/src/lib/elc_hoversel.c
+++ b/src/lib/elc_hoversel.c
@@ -627,7 +627,7 @@ _elm_hoversel_eo_base_constructor(Eo *obj, 
Elm_Hoversel_Data *_pd EINA_UNUSED)
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_GLASS_PANE));
+ elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PUSH_BUTTON));
 
return obj;
 }

-- 




[EGIT] [core/enlightenment] master 01/01: conf_apps: fix add/remove screen lock applications.

2015-12-11 Thread Lukasz Stanislawski
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=b49e918be9e96dacd61964302d831cfc22147de4

commit b49e918be9e96dacd61964302d831cfc22147de4
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Dec 11 09:24:13 2015 -0500

conf_apps: fix add/remove screen lock applications.

Summary:
Fix missmatched paths between desklock and conf_applications module to
enable adding/removing screen lock applications with a dialog.

Test Plan:
Settings=>Apps=>Screen lock/unlock application
   Veryfy if apps are correctly added to config.

Reviewers: zmike, cedric

Subscribers: cedric, seoz

Differential Revision: https://phab.enlightenment.org/D3436
---
 src/modules/conf_applications/e_int_config_apps.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/modules/conf_applications/e_int_config_apps.c 
b/src/modules/conf_applications/e_int_config_apps.c
index 962d927..91ac0ba 100644
--- a/src/modules/conf_applications/e_int_config_apps.c
+++ b/src/modules/conf_applications/e_int_config_apps.c
@@ -142,7 +142,7 @@ e_int_config_apps_desk_lock(Evas_Object *parent 
EINA_UNUSED, const char *params
E_Config_Data *data;
char buff[PATH_MAX];
 
-   e_user_dir_concat_static(buff, "applications/screen-lock/.order");
+   e_user_dir_concat_static(buff, "applications/desk-lock/.order");
data = E_NEW(E_Config_Data, 1);
data->title = eina_stringshare_add(_("Screen Lock Applications"));
data->dialog = 
eina_stringshare_add("applications/screen_lock_applications");
@@ -157,7 +157,7 @@ e_int_config_apps_desk_unlock(Evas_Object *parent 
EINA_UNUSED, const char *param
E_Config_Data *data;
char buff[PATH_MAX];
 
-   e_user_dir_concat_static(buff, "applications/screen-unlock/.order");
+   e_user_dir_concat_static(buff, "applications/desk-unlock/.order");
data = E_NEW(E_Config_Data, 1);
data->title = eina_stringshare_add(_("Screen Unlock Applications"));
data->dialog = 
eina_stringshare_add("applications/screen_unlock_applications");

-- 




[EGIT] [core/enlightenment] enlightenment-0.20 26/29: conf_apps: fix add/remove screen lock applications.

2015-12-11 Thread Lukasz Stanislawski
discomfitor pushed a commit to branch enlightenment-0.20.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=1a9ff2b84160c6d50e956ee7efd2588be7555487

commit 1a9ff2b84160c6d50e956ee7efd2588be7555487
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Dec 11 09:24:13 2015 -0500

conf_apps: fix add/remove screen lock applications.

Summary:
Fix missmatched paths between desklock and conf_applications module to
enable adding/removing screen lock applications with a dialog.

Test Plan:
Settings=>Apps=>Screen lock/unlock application
   Veryfy if apps are correctly added to config.

Reviewers: zmike, cedric

Subscribers: cedric, seoz

Differential Revision: https://phab.enlightenment.org/D3436
---
 src/modules/conf_applications/e_int_config_apps.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/modules/conf_applications/e_int_config_apps.c 
b/src/modules/conf_applications/e_int_config_apps.c
index 962d927..91ac0ba 100644
--- a/src/modules/conf_applications/e_int_config_apps.c
+++ b/src/modules/conf_applications/e_int_config_apps.c
@@ -142,7 +142,7 @@ e_int_config_apps_desk_lock(Evas_Object *parent 
EINA_UNUSED, const char *params
E_Config_Data *data;
char buff[PATH_MAX];
 
-   e_user_dir_concat_static(buff, "applications/screen-lock/.order");
+   e_user_dir_concat_static(buff, "applications/desk-lock/.order");
data = E_NEW(E_Config_Data, 1);
data->title = eina_stringshare_add(_("Screen Lock Applications"));
data->dialog = 
eina_stringshare_add("applications/screen_lock_applications");
@@ -157,7 +157,7 @@ e_int_config_apps_desk_unlock(Evas_Object *parent 
EINA_UNUSED, const char *param
E_Config_Data *data;
char buff[PATH_MAX];
 
-   e_user_dir_concat_static(buff, "applications/screen-unlock/.order");
+   e_user_dir_concat_static(buff, "applications/desk-unlock/.order");
data = E_NEW(E_Config_Data, 1);
data->title = eina_stringshare_add(_("Screen Unlock Applications"));
data->dialog = 
eina_stringshare_add("applications/screen_unlock_applications");

-- 




[EGIT] [core/elementary] master 01/01: slider: minor accessibility events fix

2015-12-08 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=6936636edf0efcd77516066ed161ee1e7fc12b35

commit 6936636edf0efcd77516066ed161ee1e7fc12b35
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Dec 8 10:41:36 2015 +0100

slider: minor accessibility events fix

Emit accessibility events if slider value was chagned through API.
Moreover emit accessibility event more rarely if value is being
changed by the user.
---
 src/lib/elm_slider.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_slider.c b/src/lib/elm_slider.c
index 33f2ecc..a0a0645 100644
--- a/src/lib/elm_slider.c
+++ b/src/lib/elm_slider.c
@@ -65,6 +65,9 @@ _delay_change(void *data)
sd->delay = NULL;
eo_do(data, eo_event_callback_call(ELM_SLIDER_EVENT_DELAY_CHANGED, NULL));
 
+   if (_elm_config->atspi_mode)
+ elm_interface_atspi_accessible_value_changed_signal_emit(data);
+
return ECORE_CALLBACK_CANCEL;
 }
 
@@ -95,7 +98,6 @@ _val_fetch(Evas_Object *obj, Eina_Bool user_event)
 if (user_event)
   {
  eo_do(obj, eo_event_callback_call(ELM_SLIDER_EVENT_CHANGED, 
NULL));
- elm_interface_atspi_accessible_value_changed_signal_emit(obj);
  ecore_timer_del(sd->delay);
  sd->delay = ecore_timer_add(SLIDER_DELAY_CHANGED_INTERVAL, 
_delay_change, obj);
   }
@@ -127,6 +129,10 @@ _val_set(Evas_Object *obj)
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
edje_object_part_drag_value_set
  (wd->resize_obj, "elm.dragable.slider", pos, pos);
+
+   // emit accessiblity event also if value was chagend by API
+   if (_elm_config->atspi_mode)
+ elm_interface_atspi_accessible_value_changed_signal_emit(obj);
 }
 
 static void

-- 




[EGIT] [core/elementary] master 01/01: box: skip box in accessibility tree by default

2015-12-02 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=63381b64ffd7095a5c570c47f4a29d9d989800ba

commit 63381b64ffd7095a5c570c47f4a29d9d989800ba
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Dec 1 12:29:02 2015 +0100

box: skip box in accessibility tree by default
---
 src/lib/elm_box.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/elm_box.c b/src/lib/elm_box.c
index d37fd08..352e956 100644
--- a/src/lib/elm_box.c
+++ b/src/lib/elm_box.c
@@ -439,6 +439,7 @@ elm_box_add(Evas_Object *parent)
 EOLIAN static Eo *
 _elm_box_eo_base_constructor(Eo *obj, Elm_Box_Data *_pd EINA_UNUSED)
 {
+   eo_do(obj, elm_interface_atspi_accessible_type_set(ELM_ATSPI_TYPE_SKIPPED));
obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
eo_do(obj,
  evas_obj_type_set(MY_CLASS_NAME_LEGACY),

-- 




[EGIT] [core/elementary] master 01/01: atspi: always use widget's subobj as accessible children

2015-12-02 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=0aa37178abc4409a647bbf321a346bc5c7cbf261

commit 0aa37178abc4409a647bbf321a346bc5c7cbf261
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Dec 1 16:55:12 2015 +0100

atspi: always use widget's subobj as accessible children

Patch fixes issue when widgets could be orphaned in accessibility tree
due to overloaded accessible_children_get methods in widgets returning
Elm_Object_Items. Widgets like genlist, gengrid, list and toolbar returned
only items as its accessibility children so if some widget was attached
directly to those widgets (like ctxpopup/popup) it become orphaned
in accessibility tree.
---
 src/lib/elm_gengrid.c| 32 
 src/lib/elm_gengrid_item.eo  |  1 -
 src/lib/elm_genlist.c| 42 ++--
 src/lib/elm_genlist_item.eo  |  1 -
 src/lib/elm_interface_atspi_accessible.c | 28 -
 src/lib/elm_list.c   | 24 ++
 src/lib/elm_list_item.eo |  1 -
 src/lib/elm_toolbar.c| 13 --
 src/lib/elm_widget.c | 28 +
 src/lib/elm_widget_item.eo   |  1 -
 src/tests/elm_test_genlist.c | 36 ---
 src/tests/elm_test_list.c|  6 ++---
 12 files changed, 50 insertions(+), 163 deletions(-)

diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index 1b6f0b4..3c6018e 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -900,9 +900,6 @@ _item_content_realize(Elm_Gen_Item *it,
  elm_widget_sub_object_add(WIDGET(it), content);
  if (eo_do_ret(EO_OBJ(it), tmp, elm_wdg_item_disabled_get()))
elm_widget_disabled_set(content, EINA_TRUE);
-
- 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)));
   }
  }
 }
@@ -5534,27 +5531,6 @@ 
_elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED,
return ret;
 }
 
-EOLIAN Eina_List*
-_elm_gengrid_item_elm_interface_atspi_accessible_children_get(Eo *eo_it 
EINA_UNUSED, Elm_Gen_Item *it)
-{
-   Eina_List *ret = NULL;
-   if (VIEW(it))
- {
-Eina_List *parts;
-const char *key;
-parts = elm_widget_stringlist_get(edje_object_data_get(VIEW(it), 
"contents"));
-
-EINA_LIST_FREE(parts, key)
-  {
- Evas_Object *part;
- part = edje_object_part_swallow_get(VIEW(it), key);
- if (part && eo_isa(part, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
-   ret = eina_list_append(ret, part);
-  }
- }
-   return ret;
-}
-
 EAPI Elm_Object_Item *
 elm_gengrid_nth_item_get(const Evas_Object *obj, unsigned int nth)
 {
@@ -5687,15 +5663,17 @@ 
_elm_gengrid_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUS
 }
 
 EOLIAN Eina_List*
-_elm_gengrid_elm_interface_atspi_accessible_children_get(Eo *obj EINA_UNUSED, 
Elm_Gengrid_Data *sd)
+_elm_gengrid_elm_interface_atspi_accessible_children_get(Eo *obj, 
Elm_Gengrid_Data *sd)
 {
-   Eina_List *ret = NULL;
+   Eina_List *ret = NULL, *ret2 = NULL;
Elm_Gen_Item *it;
 
EINA_INLIST_FOREACH(sd->items, it)
   ret = eina_list_append(ret, EO_OBJ(it));
 
-   return ret;
+   eo_do_super(obj, ELM_GENGRID_CLASS, ret2 = 
elm_interface_atspi_accessible_children_get());
+
+   return eina_list_merge(ret, ret2);
 }
 
 EOLIAN Elm_Atspi_State_Set
diff --git a/src/lib/elm_gengrid_item.eo b/src/lib/elm_gengrid_item.eo
index 95a079c..0783ee5 100644
--- a/src/lib/elm_gengrid_item.eo
+++ b/src/lib/elm_gengrid_item.eo
@@ -211,6 +211,5 @@ class Elm.Gengrid_Item(Elm.Widget_Item)
Elm.Widget_Item.cursor_unset;
Elm_Interface_Atspi_Accessible.name.get;
Elm_Interface_Atspi_Accessible.state_set.get;
-   Elm_Interface_Atspi_Accessible.children.get;
   }
 }
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index d2d0005..020ab24 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -381,8 +381,6 @@ _item_content_realize(Elm_Gen_Item *it,
   ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key);
  if (!content) continue;
  *contents = eina_list_append(*contents, content);
- 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)));
  if (!edje_object_part_swallow(target, key, content))
{
   ERR("%s (%p) can not be swallowed into %s",
@@ -396,12 +394,6 @@ _item_con

[EGIT] [core/elementary] master 01/01: menu: enhance accessibility support

2015-12-02 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=1e390e033259c905a2215d3a96eb799a29907f02

commit 1e390e033259c905a2215d3a96eb799a29907f02
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Nov 27 18:14:54 2015 +0100

menu: enhance accessibility support
---
 src/lib/elm_atspi_bridge.c |   2 +
 src/lib/elm_menu.c | 147 +
 src/lib/elm_menu.eo|   5 +-
 src/lib/elm_menu_item.eo   |   9 ++-
 4 files changed, 161 insertions(+), 2 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index f0eec7d..782d1fd 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -3718,6 +3718,8 @@ _set_broadcast_flag(const char *event, Eo *bridge)
   STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_VISIBLE_DATA_CHANGED);
 else if (!strcmp(tokens[1], "ActiveDescendantChanged"))
   STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_ACTIVE_DESCENDANT_CHANGED);
+else if (!strcmp(tokens[1], "SelectionChanged"))
+  STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_SELECTION_CHANGED);
  }
else if (!strcmp(tokens[0], "Window"))
  {
diff --git a/src/lib/elm_menu.c b/src/lib/elm_menu.c
index ce49793..c5ca878 100644
--- a/src/lib/elm_menu.c
+++ b/src/lib/elm_menu.c
@@ -3,6 +3,7 @@
 #endif
 
 #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
+#define ELM_INTERFACE_ATSPI_SELECTION_PROTECTED
 
 #define ELM_WIDGET_ITEM_PROTECTED
 #include 
@@ -107,6 +108,8 @@ _submenu_sizing_eval(Elm_Menu_Item_Data *parent_it)
  {
 ELM_MENU_ITEM_DATA_GET(eo_item, item);
 elm_layout_sizing_eval(VIEW(item));
+if (_elm_config->atspi_mode)
+  elm_interface_atspi_accessible_state_changed_signal_emit(eo_item, 
ELM_ATSPI_STATE_SHOWING, EINA_TRUE);
  }
 
 
@@ -488,6 +491,7 @@ _menu_item_activate_cb(void *data,
  if (eo_item2 != EO_OBJ(item))
elm_menu_item_selected_set(eo_item2, 0);
   }
+eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, 
elm_interface_atspi_accessible_event_emit(EO_OBJ(item->parent), 
ELM_INTERFACE_ATSPI_SELECTION_EVENT_SELECTION_CHANGED, NULL));
  }
else
  {
@@ -497,7 +501,10 @@ _menu_item_activate_cb(void *data,
  if (eo_item2 != EO_OBJ(item))
elm_menu_item_selected_set(eo_item2, 0);
   }
+eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, 
elm_interface_atspi_accessible_event_emit(WIDGET(item), 
ELM_INTERFACE_ATSPI_SELECTION_EVENT_SELECTION_CHANGED, NULL));
  }
+   if (_elm_config->atspi_mode)
+ elm_interface_atspi_accessible_state_changed_signal_emit(EO_OBJ(item), 
ELM_ATSPI_STATE_SELECTED, EINA_TRUE);
 }
 
 static void
@@ -510,6 +517,8 @@ _menu_item_inactivate_cb(void *data,
 
item->selected = 0;
if (item->submenu.open) _submenu_hide(item);
+   if (_elm_config->atspi_mode)
+ elm_interface_atspi_accessible_state_changed_signal_emit(EO_OBJ(item), 
ELM_ATSPI_STATE_SELECTED, EINA_FALSE);
 }
 
 static Eina_Bool
@@ -560,6 +569,7 @@ static void
 _item_obj_create(Elm_Menu_Item_Data *item)
 {
VIEW(item) = elm_layout_add(WIDGET(item));
+   eo_do(VIEW(item), 
elm_interface_atspi_accessible_type_set(ELM_ATSPI_TYPE_SKIPPED));
evas_object_size_hint_weight_set
  (VIEW(item), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -583,6 +593,7 @@ static void
 _item_separator_obj_create(Elm_Menu_Item_Data *item)
 {
VIEW(item) = elm_layout_add(WIDGET(item));
+   eo_do(VIEW(item), 
elm_interface_atspi_accessible_type_set(ELM_ATSPI_TYPE_SKIPPED));
evas_object_size_hint_weight_set
  (VIEW(item), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(VIEW(item), EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -605,7 +616,9 @@ _item_submenu_obj_create(Elm_Menu_Item_Data *item)
char style[1024];
 
item->submenu.location = elm_icon_add(sd->bx);
+   eo_do(item->submenu.location, 
elm_interface_atspi_accessible_type_set(ELM_ATSPI_TYPE_DISABLED));
item->submenu.hv = hv = elm_hover_add(sd->bx);
+   eo_do(item->submenu.hv, 
elm_interface_atspi_accessible_type_set(ELM_ATSPI_TYPE_SKIPPED));
elm_widget_mirrored_set(hv, EINA_FALSE);
elm_hover_target_set(hv, item->submenu.location);
elm_hover_parent_set(hv, sd->parent);
@@ -671,8 +684,10 @@ _elm_menu_evas_object_smart_add(Eo *obj, Elm_Menu_Data 
*priv)
elm_widget_can_focus_set(obj, EINA_FALSE);
 
priv->location = elm_icon_add(obj);
+   eo_do(priv->location, 
elm_interface_atspi_accessible_type_set(ELM_ATSPI_TYPE_DISABLED));
 
priv->hv = elm_hover_add(obj);
+   eo_do(priv->hv, 
elm_interface_atspi_accessible_type_set(ELM_ATSPI_TYPE_SKIPPED));
elm_widget_mirrored_set(priv->hv, EINA_FALSE);
 
 

[EGIT] [core/elementary] master 01/01: atspi: add type of accessibility object

2015-12-01 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=e2b1e28a12741b3be9db2aa4edae9e42877049e6

commit e2b1e28a12741b3be9db2aa4edae9e42877049e6
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Nov 26 16:53:32 2015 +0100

atspi: add type of accessibility object

Type API provides possibility to skip/ignore widgets in accessiblity
tree. It make sense to ignore object if it do not provide any valuable 
contextual
information for disabled users. Skipped objects are usually container 
objects
and are ommited in parent-child relationship.

@feature
---
 src/lib/elm_atspi_app_object.c|  6 -
 src/lib/elm_interface_atspi_accessible.c  | 44 +--
 src/lib/elm_interface_atspi_accessible.eo | 19 +
 src/lib/elm_widget.c  | 41 +++-
 4 files changed, 95 insertions(+), 15 deletions(-)

diff --git a/src/lib/elm_atspi_app_object.c b/src/lib/elm_atspi_app_object.c
index 6e49891..11d5bb2 100644
--- a/src/lib/elm_atspi_app_object.c
+++ b/src/lib/elm_atspi_app_object.c
@@ -33,7 +33,11 @@ 
_elm_atspi_app_object_elm_interface_atspi_accessible_children_get(Eo *obj EINA_U
 
EINA_LIST_FOREACH(_elm_win_list, l, win)
  {
-if (eo_isa(win, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
+Elm_Atspi_Type type;
+if (!eo_isa(win, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
+  continue;
+eo_do(win, type = elm_interface_atspi_accessible_type_get());
+if (type == ELM_ATSPI_TYPE_REGULAR)
   accs = eina_list_append(accs, win);
  }
 
diff --git a/src/lib/elm_interface_atspi_accessible.c 
b/src/lib/elm_interface_atspi_accessible.c
index 2a38380..357e609 100644
--- a/src/lib/elm_interface_atspi_accessible.c
+++ b/src/lib/elm_interface_atspi_accessible.c
@@ -129,6 +129,7 @@ struct _Elm_Interface_Atspi_Accessible_Data
const char*translation_domain;
Elm_Atspi_Relation_Set relations;
Elm_Interface_Atspi_Accessible *parent;
+   Elm_Atspi_Type type: 2;
 };
 
 typedef struct _Elm_Interface_Atspi_Accessible_Data 
Elm_Interface_Atspi_Accessible_Data;
@@ -168,11 +169,25 @@ _elm_interface_atspi_accessible_index_in_parent_get(Eo 
*obj, Elm_Interface_Atspi
 EOLIAN static Elm_Interface_Atspi_Accessible *
 _elm_interface_atspi_accessible_parent_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd)
 {
-   return pd->parent;
+   Elm_Atspi_Type type;
+   Eo *parent = obj;
+
+   if (pd->parent) return pd->parent;
+
+   do {
+  eo_do(obj, parent = eo_parent_get());
+  if (eo_isa(parent, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
+{
+   eo_do(parent, type = elm_interface_atspi_accessible_type_get());
+   if (type != ELM_ATSPI_TYPE_SKIPPED) break;
+}
+   } while (parent);
+
+   return eo_isa(parent, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN) ? parent : NULL;
 }
 
 EOLIAN static void
-_elm_interface_atspi_accessible_parent_set(Eo *obj, 
Elm_Interface_Atspi_Accessible_Data *pd, Elm_Interface_Atspi_Accessible 
*new_parent)
+_elm_interface_atspi_accessible_parent_set(Eo *obj, 
Elm_Interface_Atspi_Accessible_Data *pd EINA_UNUSED, 
Elm_Interface_Atspi_Accessible *new_parent)
 {
if (pd->parent != new_parent)
  {
@@ -314,6 +329,7 @@ _elm_interface_atspi_accessible_event_emit(Eo *class 
EINA_UNUSED, void *pd EINA_
 {
Eina_List *l;
Elm_Atspi_Event_Handler *hdl;
+   Elm_Atspi_Type type;
 
if (!accessible || !event || !eo_isa(accessible, 
ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
  {
@@ -321,6 +337,18 @@ _elm_interface_atspi_accessible_event_emit(Eo *class 
EINA_UNUSED, void *pd EINA_
 return;
  }
 
+   eo_do(accessible, type = elm_interface_atspi_accessible_type_get());
+   if (type != ELM_ATSPI_TYPE_REGULAR)
+ return;
+
+   if (event == ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED)
+ {
+Elm_Atspi_Event_Children_Changed_Data *atspi_data = event_info;
+eo_do(atspi_data->child, type = 
elm_interface_atspi_accessible_type_get());
+if (type != ELM_ATSPI_TYPE_REGULAR)
+  return;
+ }
+
EINA_LIST_FOREACH(global_callbacks, l, hdl)
  {
 if (hdl->cb)
@@ -552,4 +580,16 @@ _elm_interface_atspi_accessible_root_get(Eo *class 
EINA_UNUSED, void *pd EINA_UN
return root;
 }
 
+EOLIAN Elm_Atspi_Type
+_elm_interface_atspi_accessible_type_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd)
+{
+   return pd->type;
+}
+
+EOLIAN void
+_elm_interface_atspi_accessible_type_set(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd, Elm_Atspi_Type val)
+{
+   pd->type = val;
+}
+
 #include "elm_interface_atspi_accessible.eo.c"
diff --git a/src/lib/elm_interface_atspi_accessible.eo 
b/src/lib/elm_interface_atspi_accessible.eo
index f337e56..378674e 100644
--- a/src/lib/elm_interface_atspi_accessible.eo
+++ b/src/lib/elm_interface_at

[EGIT] [core/elementary] master 01/01: atspi: remove useless "GetDefaultAttributeSet" method

2015-11-26 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=75b3ce919c725cc394600683ef149302eb6db7c9

commit 75b3ce919c725cc394600683ef149302eb6db7c9
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Wed Nov 25 14:02:25 2015 +0100

atspi: remove useless "GetDefaultAttributeSet" method

This method exists in atspi spec, however is not implemented
in libatspi library. Drop it for now as it seems useless.
---
 src/lib/elm_atspi_bridge.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 92ccd8a..6b08728 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -1832,7 +1832,6 @@ static const Eldbus_Method text_methods[] = {
{ "GetRangeExtents", ELDBUS_ARGS({"i", "startOffset"}, {"i", "endOffset"}, 
{"u", "coordType"}), ELDBUS_ARGS({"i", "x"}, {"i", "y"}, {"i","w"}, {"i","h"}), 
_text_range_extents_get, 0 },
{ "GetBoundedRanges", ELDBUS_ARGS({"i", "x"}, {"i", "y"}, {"i", "w"}, {"i", 
"h"}, {"u", "coordType"}, {"u", "xClipType"}, {"u", "yClipType"}), 
ELDBUS_ARGS({"a(issv)", NULL}), _text_bounded_ranges_get, 0 },
{ "GetAttributeRun", ELDBUS_ARGS({"i", "offset"}, {"b", 
"includeDefaults"}), ELDBUS_ARGS({"a(ss)", NULL}, {"i", "startOffset"}, {"i", 
"endOffset"}), _text_run_attributes_get, 0 },
-   { "GetDefaultAttributeSet", NULL, ELDBUS_ARGS({"a(ss)", NULL}), 
_text_default_attributes_get, 0 },
{ NULL, NULL, NULL, NULL, 0 }
 };
 

-- 




[EGIT] [core/elementary] master 01/01: atspi: fix default text attribute signature

2015-11-25 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=e2febed80109c6da8bffaf779e1cba018687598c

commit e2febed80109c6da8bffaf779e1cba018687598c
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Wed Nov 25 14:01:44 2015 +0100

atspi: fix default text attribute signature
---
 src/lib/elm_atspi_bridge.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 59a6c98..92ccd8a 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -1455,7 +1455,6 @@ _text_default_attributes_get(const 
Eldbus_Service_Interface *iface, const Eldbus
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);
-   int start = -1, end;
Eldbus_Message *ret;
Eldbus_Message_Iter *iter, *iter_array;
Eina_List *attrs;
@@ -1470,7 +1469,7 @@ _text_default_attributes_get(const 
Eldbus_Service_Interface *iface, const Eldbus
iter_array = eldbus_message_iter_container_new(iter, 'a', "{ss}");
EINA_SAFETY_ON_NULL_GOTO(iter_array, fail);
 
-   eo_do(obj, attrs = elm_interface_atspi_text_attributes_get(, ));
+   eo_do(obj, attrs = elm_interface_atspi_text_default_attributes_get());
 
EINA_LIST_FREE(attrs, attr)
 {
@@ -1479,7 +1478,6 @@ _text_default_attributes_get(const 
Eldbus_Service_Interface *iface, const Eldbus
 }
 
eldbus_message_iter_container_close(iter, iter_array);
-   eldbus_message_iter_arguments_append(iter, "ii", start, end);
 
return ret;
 

-- 




[EGIT] [core/elementary] master 01/01: atspi: typo fix

2015-11-21 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=edc6b3205298d5542fc045c9be615552923d624c

commit edc6b3205298d5542fc045c9be615552923d624c
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Sat Nov 21 16:19:53 2015 +0100

atspi: typo fix
---
 src/lib/elm_atspi_bridge.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 71fe7ee..59a6c98 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -4519,7 +4519,7 @@ _ecore_modifiers_2_atspi(unsigned int modifiers)
if (modifiers & ECORE_EVENT_MODIFIER_ALT)
  ret |= (1 << ATSPI_MODIFIER_ALT);
if (modifiers & ECORE_EVENT_MODIFIER_WIN)
- ret |= ATSPI_MODIFIER_META;
+ ret |= (1 << ATSPI_MODIFIER_META);
if (modifiers & ECORE_EVENT_MODIFIER_NUM)
  ret |= (1 << ATSPI_MODIFIER_NUMLOCK);
 

-- 




[EGIT] [core/elementary] master 01/01: atspi: support key modifers in bridge.

2015-11-21 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=b466cdb20ed26de9af962906f0850ce6613f0315

commit b466cdb20ed26de9af962906f0850ce6613f0315
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Sat Nov 21 14:01:54 2015 +0100

atspi: support key modifers in bridge.

@feature
---
 src/lib/elm_atspi_bridge.c | 24 +++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index e88e8dd..71fe7ee 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -4484,6 +4484,7 @@ _key_event_info_new(int event_type, const Ecore_Event_Key 
*data, Eo *bridge)
ret->event.key = eina_stringshare_add(data->key);
ret->event.string = eina_stringshare_add(data->string);
ret->event.compose = eina_stringshare_add(data->compose);
+   ret->event.modifiers = data->modifiers;
 
// not sure why it is here, but explicite keep it NULLed.
ret->event.data = NULL;
@@ -4504,6 +4505,27 @@ _key_event_info_free(Key_Event_Info *data)
free(data);
 }
 
+static short
+_ecore_modifiers_2_atspi(unsigned int modifiers)
+{
+   short ret = 0;
+
+   if (modifiers & ECORE_EVENT_MODIFIER_SHIFT)
+ ret |= (1 << ATSPI_MODIFIER_SHIFT);
+   if (modifiers & ECORE_EVENT_MODIFIER_CAPS)
+ ret |= (1 << ATSPI_MODIFIER_SHIFTLOCK);
+   if (modifiers & ECORE_EVENT_MODIFIER_CTRL)
+ ret |= (1 << ATSPI_MODIFIER_CONTROL);
+   if (modifiers & ECORE_EVENT_MODIFIER_ALT)
+ ret |= (1 << ATSPI_MODIFIER_ALT);
+   if (modifiers & ECORE_EVENT_MODIFIER_WIN)
+ ret |= ATSPI_MODIFIER_META;
+   if (modifiers & ECORE_EVENT_MODIFIER_NUM)
+ ret |= (1 << ATSPI_MODIFIER_NUMLOCK);
+
+   return ret;
+}
+
 static void
 _iter_marshall_key_event(Eldbus_Message_Iter *iter, Key_Event_Info *data)
 {
@@ -4520,7 +4542,7 @@ _iter_marshall_key_event(Eldbus_Message_Iter *iter, 
Key_Event_Info *data)
else
  type = ATSPI_KEY_RELEASED_EVENT;
 
-   eldbus_message_iter_arguments_append(struct_iter, "usb", type, 0, 
data->event.keycode, 0, data->event.timestamp, str, is_text);
+   eldbus_message_iter_arguments_append(struct_iter, "uinnisb", type, 0, 
data->event.keycode, _ecore_modifiers_2_atspi(data->event.modifiers), 
data->event.timestamp, str, is_text);
eldbus_message_iter_container_close(iter, struct_iter);
 }
 

-- 




[EGIT] [core/elementary] master 01/01: atspi: move root object creation to atspi class.

2015-11-20 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=e1c1ead2ee22ce4d92428ad6eadb414f6fbef884

commit e1c1ead2ee22ce4d92428ad6eadb414f6fbef884
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Wed Sep 9 13:58:14 2015 +0200

atspi: move root object creation to atspi class.
---
 src/lib/elm_atspi_bridge.c| 59 +++
 src/lib/elm_atspi_bridge.eo   |  8 -
 src/lib/elm_interface_atspi_accessible.c  | 11 ++
 src/lib/elm_interface_atspi_accessible.eo |  8 +
 src/lib/elm_win.c | 19 +-
 5 files changed, 58 insertions(+), 47 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index edd10fc..e88e8dd 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -67,7 +67,6 @@ 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;
@@ -131,7 +130,7 @@ static Eina_Bool _text_selection_changed_send(void *data, 
Eo *obj, const Eo_Even
 // 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 const char * _path_from_object(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);
@@ -577,7 +576,7 @@ _accessible_get_application(const Eldbus_Service_Interface 
*iface, const Eldbus_
Eldbus_Message *ret;
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);
+   Eo *root, *obj = _bridge_object_from_path(bridge, obj_path);
 
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, 
ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, msg);
 
@@ -585,7 +584,8 @@ _accessible_get_application(const Eldbus_Service_Interface 
*iface, const Eldbus_
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
 
Eldbus_Message_Iter *iter = eldbus_message_iter_get(ret);
-   _bridge_iter_object_reference_append(bridge, iter, 
elm_atspi_bridge_root_get(bridge));
+   eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, root = 
elm_interface_atspi_accessible_root_get());
+   _bridge_iter_object_reference_append(bridge, iter, root);
 
return ret;
 }
@@ -2006,7 +2006,7 @@ _bridge_object_from_path(Eo *bridge, const char *path)
unsigned long long eo_ptr = 0;
Eo *eo = NULL;
const char *tmp = path;
-   Eo *ret;
+   Eo *ret, *root;
 
int len = strlen(ELM_ACCESS_OBJECT_PATH_PREFIX);
if (strncmp(path, ELM_ACCESS_OBJECT_PATH_PREFIX, len))
@@ -2014,7 +2014,10 @@ _bridge_object_from_path(Eo *bridge, const char *path)
 
tmp = path + len; /* Skip over the prefix */
if (!strcmp(ELM_ACCESS_OBJECT_PATH_ROOT, tmp))
- return elm_atspi_bridge_root_get(bridge);
+ {
+eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, root = 
elm_interface_atspi_accessible_root_get());
+return root;
+ }
 
sscanf(tmp, "%llu", _ptr);
eo = (Eo *) (uintptr_t) eo_ptr;
@@ -2032,13 +2035,16 @@ _bridge_object_from_path(Eo *bridge, const char *path)
 }
 
 static const char *
-_bridge_path_from_object(Eo *bridge, const Eo *eo)
+_path_from_object(const Eo *eo)
 {
static char path[64];
+   Eo *root;
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(eo, ATSPI_DBUS_PATH_NULL);
+   if (!eo)
+ return ATSPI_DBUS_PATH_NULL;
+   eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, root = 
elm_interface_atspi_accessible_root_get());
 
-   if (eo == elm_atspi_bridge_root_get(bridge))
+   if (eo == root)
  snprintf(path, sizeof(path), "%s%s", ELM_ACCESS_OBJECT_PATH_PREFIX, 
ELM_ACCESS_OBJECT_PATH_ROOT);
else
  snprintf(path, sizeof(path), ELM_ACCESS_OBJECT_REFERENCE_TEMPLATE, 
(unsigned long long)(uintptr_t)eo);
@@ -3079,7 +3085,7 @@ _bridge_iter_object_reference_append(Eo *bridge, 
Eldbus_Message_Iter *iter, cons
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);
+   const char *path = _path_from_object(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, ite

[EGIT] [core/elementary] master 01/01: atspi: unprotect subset of methods

2015-11-19 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=98e6530ff787d403eb369aae12cd6bf02da63869

commit 98e6530ff787d403eb369aae12cd6bf02da63869
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Wed Nov 18 13:34:39 2015 +0100

atspi: unprotect subset of methods

Unprotect methods which are ment to be a part of public API.
This methods were initially unprotected, however it looks like
during eo refactoring @protect tags were added by mistake.

@fix
---
 src/lib/elm_interface_atspi_accessible.eo | 16 
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/lib/elm_interface_atspi_accessible.eo 
b/src/lib/elm_interface_atspi_accessible.eo
index 65485cd..e6a1411 100644
--- a/src/lib/elm_interface_atspi_accessible.eo
+++ b/src/lib/elm_interface_atspi_accessible.eo
@@ -12,7 +12,7 @@ mixin Elm_Interface_Atspi_Accessible ()
 localized_name: const(char)*;
  }
   }
-  @property name @protected {
+  @property name {
  get {
 [[Gets an string describing ATSPI widget role name.  Should be 
free by a user.]]
  }
@@ -30,7 +30,7 @@ mixin Elm_Interface_Atspi_Accessible ()
 relations: Elm_Atspi_Relation_Set;
  }
   }
-  @property role @protected {
+  @property role {
  get {
 [[Gets the role of the widget in ATSPI Accessibility domain.]]
  }
@@ -72,7 +72,7 @@ mixin Elm_Interface_Atspi_Accessible ()
 idx: int;
  }
   }
-  @property description @protected {
+  @property description {
  get {
 [[Gets widget contextual information.]]
  }
@@ -83,7 +83,7 @@ mixin Elm_Interface_Atspi_Accessible ()
 description: const(char)*;
  }
   }
-  @property parent @protected {
+  @property parent {
  get {
 [[Gets widget accessible parent.]]
  }
@@ -123,7 +123,7 @@ mixin Elm_Interface_Atspi_Accessible ()
 @in event_info: void*; [[Accessibility event details.]]
  }
   }
-  @property translation_domain @protected {
+  @property translation_domain {
  get {
 [[Gets the translation domain of "name" and "description"
   properties.]]
@@ -147,7 +147,7 @@ mixin Elm_Interface_Atspi_Accessible ()
 domain: const(char)*; [[ translation domain ]]
  }
   }
-  relationship_append @protected {
+  relationship_append {
  [[Defines the relationship between two accessible objects.
 
Adds unique relation between source object and relation_object of a
@@ -169,7 +169,7 @@ mixin Elm_Interface_Atspi_Accessible ()
 @in relation_object: const(Elm_Interface_Atspi_Accessible)*;
  }
   }
-  relationship_remove @protected {
+  relationship_remove {
  [[Removes the relationship between two accessible objects.
 
   If relation_object is NULL function removes all relations
@@ -180,7 +180,7 @@ mixin Elm_Interface_Atspi_Accessible ()
 @in relation_object: const(Elm_Interface_Atspi_Accessible)*;
  }
   }
-  relationships_clear @protected {
+  relationships_clear {
  [[Removes all relationships in accessible object.]]
   }
}

-- 




[EGIT] [core/elementary] master 01/01: atspi: add missing SELECTED changed signals

2015-11-05 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=4034204416a558f1d59d611f747c25c914b7efdd

commit 4034204416a558f1d59d611f747c25c914b7efdd
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Nov 5 10:52:28 2015 +0100

atspi: add missing SELECTED changed signals

@fix
---
 src/lib/elm_gengrid.c | 4 
 src/lib/elm_genlist.c | 4 
 src/lib/elm_list.c| 4 
 src/lib/elm_toolbar.c | 4 
 4 files changed, 16 insertions(+)

diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index 01c72cc..ce18912 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -536,6 +536,8 @@ _item_unselect(Elm_Gen_Item *it)
 sd->selected = eina_list_remove(sd->selected, eo_it);
 eo_do(WIDGET(it), eo_event_callback_call
   (EVAS_SELECTABLE_INTERFACE_EVENT_UNSELECTED, eo_it));
+if (_elm_config->atspi_mode)
+  elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, 
ELM_ATSPI_STATE_SELECTED, EINA_FALSE);
  }
 }
 
@@ -4127,6 +4129,8 @@ _item_select(Elm_Gen_Item *it)
if (it->generation == sd->generation)
  {
 eo_do(WIDGET(it), 
eo_event_callback_call(EVAS_SELECTABLE_INTERFACE_EVENT_SELECTED, eo_it));
+if (_elm_config->atspi_mode)
+  elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, 
ELM_ATSPI_STATE_SELECTED, EINA_TRUE);
 elm_object_item_focus_set(eo_it, EINA_TRUE);
  }
 
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index 2e4bd8b..a706bd9 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -3713,6 +3713,8 @@ _item_unselect(Elm_Gen_Item *it)
sd->selected = eina_list_remove(sd->selected, EO_OBJ(it));
eo_do(WIDGET(it), eo_event_callback_call
  (EVAS_SELECTABLE_INTERFACE_EVENT_UNSELECTED, EO_OBJ(it)));
+   if (_elm_config->atspi_mode)
+ elm_interface_atspi_accessible_state_changed_signal_emit(EO_OBJ(it), 
ELM_ATSPI_STATE_SELECTED, EINA_FALSE);
 }
 
 static void
@@ -5785,6 +5787,8 @@ _item_select(Elm_Gen_Item *it)
// delete item if it's requested deletion in the above callbacks.
if ((it->base)->on_deletion) goto item_deleted;
eo_do(WIDGET(it), 
eo_event_callback_call(EVAS_SELECTABLE_INTERFACE_EVENT_SELECTED, eo_it));
+   if (_elm_config->atspi_mode)
+ elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, 
ELM_ATSPI_STATE_SELECTED, EINA_TRUE);
// delete item if it's requested deletion in the above callbacks.
if ((it->base)->on_deletion) goto item_deleted;
it->walking--;
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index 065caa4..00be140 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -1420,6 +1420,8 @@ call:
 
if (it->func) it->func((void *)WIDGET_ITEM_DATA_GET(eo_it), WIDGET(it), 
eo_it);
eo_do(obj, eo_event_callback_call(EVAS_SELECTABLE_INTERFACE_EVENT_SELECTED, 
eo_it));
+ if (_elm_config->atspi_mode)
+   elm_interface_atspi_accessible_state_changed_signal_emit(eo_it, 
ELM_ATSPI_STATE_SELECTED, EINA_TRUE);
sd->last_selected_item = eo_it;
 
_elm_list_unwalk(obj, sd);
@@ -1488,6 +1490,8 @@ _item_unselect(Elm_List_Item_Data *it)
   (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)))
   eo_do(WIDGET(it), eo_event_callback_call
 (EVAS_SELECTABLE_INTERFACE_EVENT_UNSELECTED, EO_OBJ(it)));
+if (_elm_config->atspi_mode)
+  elm_interface_atspi_accessible_state_changed_signal_emit(EO_OBJ(it), 
ELM_ATSPI_STATE_SELECTED, EINA_FALSE);
  }
 
_elm_list_unwalk(obj, sd);
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index ef38744..5d46d1f 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -160,6 +160,8 @@ _item_unselect(Elm_Toolbar_Item_Data *item)
if (item->icon)
  elm_widget_signal_emit(item->icon, "elm,state,unselected", "elm");
eo_do(WIDGET(item), 
eo_event_callback_call(EVAS_SELECTABLE_INTERFACE_EVENT_UNSELECTED, 
EO_OBJ(item)));
+   if (_elm_config->atspi_mode)
+elm_interface_atspi_accessible_state_changed_signal_emit(EO_OBJ(item), 
ELM_ATSPI_STATE_SELECTED, EINA_FALSE);
 }
 
 static void
@@ -1168,6 +1170,8 @@ _item_select(Elm_Toolbar_Item_Data *it)
  }
eo_do(obj, eo_event_callback_call(EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, 
EO_OBJ(it)));
eo_do(obj, eo_event_callback_call(EVAS_SELECTABLE_INTERFACE_EVENT_SELECTED, 
EO_OBJ(it)));
+   if (_elm_config->atspi_mode)
+elm_interface_atspi_accessible_state_changed_signal_emit(EO_OBJ(it), 
ELM_ATSPI_STATE_SELECTED, EINA_TRUE);
 }
 
 static void

-- 




[EGIT] [core/elementary] master 04/04: widget: update child_can_focus flag on focusability change

2015-10-30 Thread Lukasz Stanislawski
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=3a885cd6c72e7fb94c46f45bd900b8c2dcf26768

commit 3a885cd6c72e7fb94c46f45bd900b8c2dcf26768
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Oct 30 07:22:05 2015 +0100

widget: update child_can_focus flag on focusability change

Summary:
Previously child_can_focus flag could be only updated when
child is deleted from object's subobject list. This patch
additionally updates child_can_focus flag when focusability
is changed with elm_widget_focus_can_set function.

Patch solves child_can_focus issue in similar situations:

elm_icon_add(layout);
elm_object_content_set(layout, icon);
elm_widget_child_can_focus_get(layout); // returns EINA_TRUE

icon = elm_icon_add(win);
elm_object_content_set(layout, icon);
elm_widget_child_can_focus_get(layout); // returns EINA_FALSE

@fix

Reviewers: cedric, stefan_schmidt

Subscribers: seoz

Differential Revision: https://phab.enlightenment.org/D3237

Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/elm_main.c   |  2 --
 src/lib/elm_widget.c | 23 +++
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c
index d436274..faa8624 100644
--- a/src/lib/elm_main.c
+++ b/src/lib/elm_main.c
@@ -1380,8 +1380,6 @@ elm_object_focus_allow_set(Evas_Object *obj,
 {
EINA_SAFETY_ON_NULL_RETURN(obj);
elm_widget_can_focus_set(obj, enable);
-/*FIXME: According to the elm_object_focus_allow_get(), child_can_focus field
-of the parent should be updated. Otherwise, the checking of it's child focus 
allow states should not be in elm_object_focus_allow_get() */
 }
 
 EAPI Eina_Bool
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 65d049a..832ea1e 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -1401,6 +1401,29 @@ _elm_widget_can_focus_set(Eo *obj, Elm_Widget_Smart_Data 
*sd, Eina_Bool can_focu
  }
else
  {
+// update child_can_focus of parents */
+Evas_Object *parent = elm_widget_parent_get(obj);
+while (parent)
+  {
+ const Eina_List *l;
+ Evas_Object *subobj;
+
+ ELM_WIDGET_DATA_GET(parent, sdp);
+
+ sdp->child_can_focus = EINA_FALSE;
+ EINA_LIST_FOREACH(sdp->subobjs, l, subobj)
+   {
+  if (_is_focusable(subobj))
+{
+   sdp->child_can_focus = EINA_TRUE;
+   break;
+}
+   }
+ /* break again, child_can_focus went back to
+  * original value */
+ if (sdp->child_can_focus) break;
+ parent = sdp->parent_obj;
+  }
 eo_do(obj, eo_event_callback_array_del(focus_callbacks(), NULL));
  }
 }

-- 




[EGIT] [core/elementary] master 01/01: atspi: fix invalid shift operation.

2015-10-20 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=ec69c39e6965c7d0a9fa2f4d09f87af2ad0f8822

commit ec69c39e6965c7d0a9fa2f4d09f87af2ad0f8822
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Oct 20 11:56:55 2015 +0200

atspi: fix invalid shift operation.

Add additional check in case when Elm_Atspi_Role_Type enum will enlarge.

CID: 1325724
---
 src/lib/elm_atspi_bridge.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index c755601..6019cca 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -2589,7 +2589,7 @@ _collection_match_roles_lookup(Eo *obj, struct 
collection_match_rule *rule)
 
eo_do(obj, role = elm_interface_atspi_accessible_role_get());
 
-   if (role > 64)
+   if (role >= 64)
  {
 role -= 64;
 role_set = rule->roles[1];
@@ -2597,6 +2597,12 @@ _collection_match_roles_lookup(Eo *obj, struct 
collection_match_rule *rule)
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:

-- 




[EGIT] [core/elementary] master 01/01: atspi: fix typo

2015-10-19 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=7426359664ba820993f368704e6dc8d40c8cd590

commit 7426359664ba820993f368704e6dc8d40c8cd590
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Mon Oct 19 13:39:56 2015 +0200

atspi: fix typo
---
 src/lib/elm_atspi_bridge.c| 6 +++---
 src/lib/elm_interface_atspi_accessible.eo | 2 +-
 src/lib/elm_interface_atspi_accessible.h  | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 2ced50d..f67c5c1 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -153,7 +153,7 @@ static const Elm_Atspi_Bridge_Event_Handler 
event_handlers[] = {
{ 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, 
_visible_data_changed_signal_send},
-   { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_ACTIVE_DESCENDANTS_CHANGED, 
_active_descendant_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},
@@ -242,7 +242,7 @@ static const Eldbus_Signal _event_obj_signals[] = {
[ATSPI_OBJECT_EVENT_VISIBLE_DATA_CHANGED] = {"VisibleDataChanged", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
[ATSPI_OBJECT_EVENT_SELECTION_CHANGED] = {"SelectionChanged", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
[ATSPI_OBJECT_EVENT_MODEL_CHANGED] = {"ModelChanged", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
-   [ATSPI_OBJECT_EVENT_ACTIVE_DESCENDANT_CHANGED] = 
{"ActiveDescendantsChanged", ELDBUS_ARGS({"siiv(so)", NULL}), 0},
+   [ATSPI_OBJECT_EVENT_ACTIVE_DESCENDANT_CHANGED] = 
{"ActiveDescendantChanged", ELDBUS_ARGS({"siiv(so)", NULL}), 0},
[ATSPI_OBJECT_EVENT_ROW_INSERTED] = {"RowInserted", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
[ATSPI_OBJECT_EVENT_ROW_REORDERED] = {"RowReordered", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
[ATSPI_OBJECT_EVENT_ROW_DELETED] = {"RowDeleted", ELDBUS_ARGS({"siiv(so)", 
NULL}), 0},
@@ -3695,7 +3695,7 @@ _set_broadcast_flag(const char *event, Eo *bridge)
   STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_TEXT_ATTRIBUTES_CHANGED);
 else if (!strcmp(tokens[1], "VisibleDataChanged"))
   STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_VISIBLE_DATA_CHANGED);
-else if (!strcmp(tokens[1], "ActiveDescendantsChanged"))
+else if (!strcmp(tokens[1], "ActiveDescendantChanged"))
   STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_ACTIVE_DESCENDANT_CHANGED);
  }
else if (!strcmp(tokens[0], "Window"))
diff --git a/src/lib/elm_interface_atspi_accessible.eo 
b/src/lib/elm_interface_atspi_accessible.eo
index 65b6b95..65485cd 100644
--- a/src/lib/elm_interface_atspi_accessible.eo
+++ b/src/lib/elm_interface_atspi_accessible.eo
@@ -189,7 +189,7 @@ mixin Elm_Interface_Atspi_Accessible ()
   children,changed: Elm_Atspi_Event_Children_Changed_Data;
   state,changed: Elm_Atspi_Event_State_Changed_Data;
   visible,data,changed;
-  active,descendants,changed;
+  active,descendant,changed;
   added;
   removed;
}
diff --git a/src/lib/elm_interface_atspi_accessible.h 
b/src/lib/elm_interface_atspi_accessible.h
index 8ebe244..dd3112f 100644
--- a/src/lib/elm_interface_atspi_accessible.h
+++ b/src/lib/elm_interface_atspi_accessible.h
@@ -361,9 +361,9 @@ EAPI Elm_Atspi_Relation_Set 
elm_atspi_relation_set_clone(const Elm_Atspi_Relatio
} while(0);
 
 /**
- * Emits ATSPI 'ActiveDescendantsChanged' dbus signal.
+ * Emits ATSPI 'ActiveDescendantChanged' dbus signal.
  */
-#define 
elm_interface_atspi_accessible_active_descendants_changed_signal_emit(obj, 
child) \
+#define 
elm_interface_atspi_accessible_active_descendant_changed_signal_emit(obj, 
child) \
eo_do(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, 
elm_interface_atspi_accessible_event_emit(obj, 
ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_ACTIVE_DESCENDANT_CHANGED, child));
 
 /**

-- 




[EGIT] [core/elementary] master 01/02: atspi: always update cache

2015-10-19 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=15171f47d7e74afdd1f621d0c22e7375a2c14ab0

commit 15171f47d7e74afdd1f621d0c22e7375a2c14ab0
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Oct 9 16:17:52 2015 +0200

atspi: always update cache

libatspi implementation allows to call methods on objects which
are not added to client cache with "AddAccessible" at-spi signal.
Bridge should allow to perform such calls by updating its internal
cache as soons as it returns a reference to the dbus object to client.
---
 src/lib/elm_atspi_bridge.c | 58 ++
 1 file changed, 33 insertions(+), 25 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index f67c5c1..c755601 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -556,7 +556,10 @@ _accessible_get_children(const Eldbus_Service_Interface 
*iface, const Eldbus_Mes
EINA_SAFETY_ON_NULL_GOTO(iter_array, fail);
 
EINA_LIST_FOREACH(children_list, l, children)
-  _bridge_iter_object_reference_append(bridge, iter_array, children);
+ {
+_bridge_iter_object_reference_append(bridge, iter_array, children);
+_bridge_object_register(bridge, children);
+ }
 
eldbus_message_iter_container_close(iter, iter_array);
eina_list_free(children_list);
@@ -776,6 +779,7 @@ _accessible_child_at_index(const Eldbus_Service_Interface 
*iface EINA_UNUSED, co
 
child = eina_list_nth(children, idx);
_bridge_iter_object_reference_append(bridge, iter, child);
+   _bridge_object_register(bridge, child);
eina_list_free(children);
 
return ret;
@@ -811,7 +815,10 @@ _accessible_get_relation_set(const 
Eldbus_Service_Interface *iface EINA_UNUSED,
 iter_array2 = eldbus_message_iter_container_new(iter_struct, 'a', 
"(so)");
 EINA_SAFETY_ON_NULL_GOTO(iter_array2, fail);
 EINA_LIST_FOREACH(rel->objects, l2, rel_obj)
-   _bridge_iter_object_reference_append(bridge, iter_array2, rel_obj);
+  {
+ _bridge_iter_object_reference_append(bridge, iter_array2, 
rel_obj);
+ _bridge_object_register(bridge, rel_obj);
+  }
 eldbus_message_iter_container_close(iter_struct, iter_array2);
 eldbus_message_iter_container_close(iter_array, iter_struct);
  }
@@ -863,6 +870,7 @@ _selection_selected_child_get(const 
Eldbus_Service_Interface *iface EINA_UNUSED,
eo_do(obj, child = elm_interface_atspi_selection_selected_child_get(idx));
 
_bridge_iter_object_reference_append(bridge, iter, child);
+   _bridge_object_register(bridge, child);
 
return ret;
 }
@@ -3311,6 +3319,7 @@ _component_get_accessible_at_point(const 
Eldbus_Service_Interface *iface EINA_UN
Eina_Bool type = coord_type == ATSPI_COORD_TYPE_SCREEN ? EINA_TRUE : 
EINA_FALSE;
eo_do(obj, accessible = 
elm_interface_atspi_component_accessible_at_point_get(type, x, y));
_bridge_iter_object_reference_append(bridge, iter, accessible);
+   _bridge_object_register(bridge, accessible);
 
return ret;
 }
@@ -4133,23 +4142,24 @@ _event_handlers_register(Eo *bridge)
 static void
 _bridge_object_unregister(Eo *bridge, Eo *obj)
 {
-   Eldbus_Message *sig;
-
ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(bridge, pd);
 
-   sig = eldbus_service_signal_new(pd->cache_interface, 
ATSPI_OBJECT_CHILD_REMOVED);
-   Eldbus_Message_Iter *iter = eldbus_message_iter_get(sig);
-   _bridge_iter_object_reference_append(bridge, iter, obj);
-   eldbus_service_signal_send(pd->cache_interface, sig);
-
eina_hash_del(pd->cache, , obj);
 }
 
 static Eina_Bool
 _on_object_add(void *data, Eo *obj, const Eo_Event_Description *event 
EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Eo *bridge = data;
-   _bridge_object_register(bridge, obj);
+   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);
 
return EINA_TRUE;
 }
@@ -4157,8 +4167,16 @@ _on_object_add(void *data, Eo *obj, const 
Eo_Event_Description *event EINA_UNUSE
 static Eina_Bool
 _on_object_del(void *data, Eo *obj, const Eo_Event_Description *event 
EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Eo *bridge = data;
-   _bridge_object_unregister(bridge, obj);
+   Eldbus_Message *sig;
+
+   ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(data, pd, EINA_TRUE);
+
+   _bridge_object_unregister(data, obj);
+
+   sig = eldbus_service_signal_new(pd->cache_interface, 
ATSPI_OBJECT_CHILD_REMOVED);
+   Eldbus_Message_Iter *iter = eldbus_message_iter_get(sig);
+   _bridge_iter_object_reference_append(data, iter, obj);
+   eldbus_service_sign

[EGIT] [core/elementary] master 02/02: atspi: clean-up children-changed event emission.

2015-10-19 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=d88cbf20c919aae1122e936819c06b19f99774ee

commit d88cbf20c919aae1122e936819c06b19f99774ee
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Oct 8 12:23:15 2015 +0200

atspi: clean-up children-changed event emission.

Patch fixes bugs caused by difference between elm widget
and atspi objects hierarchy.
---
 src/lib/elm_genlist.c |  7 +--
 src/lib/elm_list.c|  4 ++--
 src/lib/elm_toolbar.c |  7 +++
 src/lib/elm_widget.c  | 30 +++---
 src/lib/elm_widget.h  |  1 +
 src/lib/elm_win.c | 17 +++--
 6 files changed, 45 insertions(+), 21 deletions(-)

diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index cb71fb9..2e4bd8b 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -397,8 +397,11 @@ _item_content_realize(Elm_Gen_Item *it,
  snprintf(buf, sizeof(buf), "elm,state,%s,visible", key);
  edje_object_signal_emit(target, buf, "elm");
 
- if (_elm_config->atspi_mode)
-   eo_do(content, 
elm_interface_atspi_accessible_parent_set(EO_OBJ(it)));
+ 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);
+   }
   }
  }
 }
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index c4b81a0..065caa4 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -2333,19 +2333,19 @@ _item_new(Evas_Object *obj,
 
if (it->icon)
  {
+eo_do(it->icon, elm_interface_atspi_accessible_parent_set(eo_it));
 elm_widget_sub_object_add(obj, it->icon);
 evas_object_event_callback_add
   (it->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb,
   obj);
-eo_do(it->icon, elm_interface_atspi_accessible_parent_set(eo_it));
  }
if (it->end)
  {
+eo_do(it->end, elm_interface_atspi_accessible_parent_set(eo_it));
 elm_widget_sub_object_add(obj, it->end);
 evas_object_event_callback_add
   (it->end, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb,
   obj);
-eo_do(it->end, elm_interface_atspi_accessible_parent_set(eo_it));
  }
 
if (_elm_config->atspi_mode)
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index 58914b2..b5096b4 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -2367,6 +2367,9 @@ _item_new(Evas_Object *obj,
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
  _access_widget_item_register(it);
 
+   eo_do(icon_obj, elm_interface_atspi_accessible_parent_set(VIEW(it)));
+   eo_do(VIEW(it), elm_interface_atspi_accessible_parent_set(eo_it));
+
if (_item_icon_set(icon_obj, "toolbar/", icon))
  {
 it->icon = icon_obj;
@@ -2434,11 +2437,7 @@ _item_new(Evas_Object *obj,
  _item_select(it);
 
if (_elm_config->atspi_mode)
- {
-eo_do(icon_obj, elm_interface_atspi_accessible_parent_set(eo_it));
-eo_do(VIEW(it), elm_interface_atspi_accessible_parent_set(eo_it));
 elm_interface_atspi_accessible_added(eo_it);
- }
 
return it;
 }
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 4996141..65d049a 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -540,9 +540,6 @@ _elm_widget_evas_object_smart_show(Eo *obj, 
Elm_Widget_Smart_Data *_pd EINA_UNUS
if (_elm_config->atspi_mode)
  {
 elm_interface_atspi_accessible_added(obj);
-Eo *parent;
-eo_do(obj, parent = elm_interface_atspi_accessible_parent_get());
-if (parent) 
elm_interface_atspi_accessible_children_changed_added_signal_emit(parent, obj);
 if (_elm_widget_onscreen_is(obj))
elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_SHOWING, EINA_TRUE);
  }
@@ -563,12 +560,7 @@ _elm_widget_evas_object_smart_hide(Eo *obj, 
Elm_Widget_Smart_Data *_pd EINA_UNUS
eina_iterator_free(it);
 
if (_elm_config->atspi_mode)
- {
-Eo *parent;
-eo_do(obj, parent = elm_interface_atspi_accessible_parent_get());
-if (parent) 
elm_interface_atspi_accessible_children_changed_del_signal_emit(parent, obj);
-elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_SHOWING, EINA_FALSE);
- }
+ elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_SHOWING, EINA_FALSE);
 }
 
 EOLIAN static void
@@ -1208,6 +1200,13 @@ _elm_widget_sub_object_add(Eo *obj, 
Elm_Widget_Smart_Data *sd, Evas_Object *sobj
 
 elm_widget_display_mode_set(sobj,
   eva

[EGIT] [core/elementary] master 01/01: list: set atspi parent despite atspi mode.

2015-10-06 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=81eddb8c261ed3d59550f18ccc839e122e3654d3

commit 81eddb8c261ed3d59550f18ccc839e122e3654d3
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Oct 6 11:18:52 2015 +0200

list: set atspi parent despite atspi mode.

Path fixes failing test case when atspi mode was off.
---
 src/lib/elm_list.c| 8 +++-
 src/tests/elm_test_list.c | 2 +-
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index 3a4e2fd..c4b81a0 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -2337,6 +2337,7 @@ _item_new(Evas_Object *obj,
 evas_object_event_callback_add
   (it->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb,
   obj);
+eo_do(it->icon, elm_interface_atspi_accessible_parent_set(eo_it));
  }
if (it->end)
  {
@@ -2344,14 +2345,11 @@ _item_new(Evas_Object *obj,
 evas_object_event_callback_add
   (it->end, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb,
   obj);
+eo_do(it->end, elm_interface_atspi_accessible_parent_set(eo_it));
  }
 
if (_elm_config->atspi_mode)
- {
-if (it->end) eo_do(it->end, 
elm_interface_atspi_accessible_parent_set(eo_it));
-if (it->icon) eo_do(it->icon, 
elm_interface_atspi_accessible_parent_set(eo_it));
-elm_interface_atspi_accessible_added(eo_it);
- }
+ elm_interface_atspi_accessible_added(eo_it);
 
return it;
 }
diff --git a/src/tests/elm_test_list.c b/src/tests/elm_test_list.c
index b22e078..6ae7ab5 100644
--- a/src/tests/elm_test_list.c
+++ b/src/tests/elm_test_list.c
@@ -241,6 +241,6 @@ void elm_test_list(TCase *tc)
  tcase_add_test(tc, elm_list_atspi_selection_all_children_select);
  tcase_add_test(tc, elm_list_atspi_selection_clear);
  tcase_add_test(tc, elm_list_atspi_selection_child_deselect);
- tcase_add_test(tc, elm_atspi_children_parent);
 #endif
+ tcase_add_test(tc, elm_atspi_children_parent);
 }

-- 




[EGIT] [core/elementary] master 01/01: tests: add new tests for AT-SPI beta API.

2015-10-06 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=11e38c716b77d45917b9417caf7517cd4e63cf9b

commit 11e38c716b77d45917b9417caf7517cd4e63cf9b
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Oct 6 15:38:09 2015 +0200

tests: add new tests for AT-SPI beta API.
---
 src/lib/elm_widget.c |   5 +
 src/tests/elm_test_atspi.c   | 321 ++-
 src/tests/elm_test_genlist.c |   2 +-
 3 files changed, 325 insertions(+), 3 deletions(-)

diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 4a9022f..4996141 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -5810,6 +5810,11 @@ EOLIAN static char*
 _elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, 
Elm_Widget_Smart_Data *_pd EINA_UNUSED)
 {
const char *ret;
+   char *name;
+   eo_do_super(obj, ELM_WIDGET_CLASS, name = 
elm_interface_atspi_accessible_name_get());
+
+   if (name) return name;
+
ret = elm_object_text_get(obj);
if (!ret) return NULL;
 
diff --git a/src/tests/elm_test_atspi.c b/src/tests/elm_test_atspi.c
index da616ff..bf7c3b5 100644
--- a/src/tests/elm_test_atspi.c
+++ b/src/tests/elm_test_atspi.c
@@ -25,7 +25,7 @@ void generate_app(void)
evas_object_show(g_win);
 }
 
-START_TEST (elm_atspi_name_get)
+START_TEST (elm_atspi_app_obj_name_get)
 {
elm_init(0, NULL);
 
@@ -46,6 +46,64 @@ START_TEST (elm_atspi_name_get)
 }
 END_TEST
 
+START_TEST (elm_atspi_name_get)
+{
+   elm_init(0, NULL);
+   generate_app();
+
+   char *name;
+
+   eo_do(g_btn, name = elm_interface_atspi_accessible_name_get());
+
+   if (name && name[0]) {
+  ck_assert(0);
+   }
+
+   free(name);
+
+   // Set name with additional text tags
+   elm_object_text_set(g_btn, "Sometext");
+
+   eo_do(g_btn, name = elm_interface_atspi_accessible_name_get());
+
+   // Accessible name should have cleared tags
+   ck_assert(name != NULL);
+   ck_assert_str_eq(name, "Some\ntext");
+
+   free(name);
+   elm_shutdown();
+}
+END_TEST
+
+START_TEST (elm_atspi_name_set)
+{
+   elm_init(0, NULL);
+   generate_app();
+
+   char *name;
+
+   elm_object_text_set(g_btn, "Other text");
+   eo_do(g_btn, elm_interface_atspi_accessible_name_set("Test name"));
+
+   eo_do(g_btn, name = elm_interface_atspi_accessible_name_get());
+
+   ck_assert(name != NULL);
+   ck_assert_str_eq(name, "Test name");
+
+   free(name);
+
+   eo_do(g_btn, elm_interface_atspi_accessible_name_set(NULL));
+   eo_do(g_btn, name = elm_interface_atspi_accessible_name_get());
+
+   ck_assert(name != NULL);
+   ck_assert_str_eq(name, "Other text");
+
+   free(name);
+
+   elm_shutdown();
+}
+END_TEST
+
 START_TEST (elm_atspi_role_get)
 {
elm_init(0, NULL);
@@ -63,6 +121,29 @@ START_TEST (elm_atspi_role_get)
 }
 END_TEST
 
+START_TEST (elm_atspi_role_set)
+{
+   elm_init(0, NULL);
+   generate_app();
+   Elm_Atspi_Role role;
+
+   eo_do(g_btn, 
elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_ACCELERATOR_LABEL));
+   eo_do(g_btn, role = elm_interface_atspi_accessible_role_get());
+
+   if (role != ELM_ATSPI_ROLE_ACCELERATOR_LABEL)
+  ck_assert(0);
+
+   eo_do(g_btn, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_ENTRY));
+   eo_do(g_btn, role = elm_interface_atspi_accessible_role_get());
+
+   if (role != ELM_ATSPI_ROLE_ENTRY)
+  ck_assert(0);
+
+   elm_shutdown();
+}
+END_TEST
+
+
 
 START_TEST (elm_atspi_role_name_get)
 {
@@ -113,17 +194,36 @@ START_TEST (elm_atspi_description_set)
ck_assert(ret == NULL);
 
eo_do(root, elm_interface_atspi_accessible_description_set(desc));
-
eo_do(root, ret = elm_interface_atspi_accessible_description_get());
 
ck_assert(ret != NULL);
ck_assert_str_eq(ret, "Test description");
 
+   eo_do(root, elm_interface_atspi_accessible_description_set(NULL));
+   eo_do(root, ret = elm_interface_atspi_accessible_description_get());
+
+   ck_assert(ret == NULL);
+
eo_unref(root);
elm_shutdown();
 }
 END_TEST
 
+/* Test if intial description value is NULL */
+START_TEST (elm_atspi_description_get)
+{
+   elm_init(0, NULL);
+   generate_app();
+
+   const char *descr;
+   eo_do(g_bg, descr = elm_interface_atspi_accessible_description_get());
+
+   ck_assert(descr == NULL);
+
+   elm_shutdown();
+}
+END_TEST
+
 START_TEST (elm_atspi_children_and_parent)
 {
elm_init(0, NULL);
@@ -184,13 +284,230 @@ START_TEST (elm_atspi_children_and_parent2)
 }
 END_TEST
 
+/* Initial value of translation domain should be NULL */
+START_TEST (elm_atspi_translation_domain_get)
+{
+   elm_init(0, NULL);
+   generate_app();
+
+   const char *domain;
+
+   eo_do(g_btn, domain = 
elm_interface_atspi_accessible_translation_domain_get());
+
+   ck_assert(domain == NULL);
+
+   elm_shutdown();
+}
+END_TEST
+
+START_TEST (elm_atspi_translation_domain_set)
+{
+   elm_init(0, NULL);
+   generate_app();
+
+   const char *do

[EGIT] [core/elementary] master 01/01: atspi: add new relationship append/remove/clear API

2015-10-05 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=7158d62cb65edf2abf1da8ac0c50df6511d77d9b

commit 7158d62cb65edf2abf1da8ac0c50df6511d77d9b
Author: Lukasz Stanislawski <lukasz.stanislaw...@gmail.com>
Date:   Sun Oct 4 22:30:31 2015 +0200

atspi: add new relationship append/remove/clear API

Allow to add some extra contextul information about accessibility objects
which can be used by Assistive Technology to provide better user experience.

API is still marked as beta.

@feature
---
 src/lib/elm_atspi_bridge.c|  12 +-
 src/lib/elm_interface_atspi_accessible.c  | 180 +-
 src/lib/elm_interface_atspi_accessible.eo |  38 ++-
 src/lib/elm_interface_atspi_accessible.h  |  39 ++-
 src/lib/elm_widget.c  |  54 ++---
 src/lib/elm_widget.eo |   1 -
 6 files changed, 270 insertions(+), 54 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 9341153..b405655 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -786,11 +786,12 @@ _accessible_get_relation_set(const 
Eldbus_Service_Interface *iface 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 *obj = _bridge_object_from_path(bridge, obj_path);
+   Eo *rel_obj, *obj = _bridge_object_from_path(bridge, obj_path);
Eldbus_Message *ret = NULL;
Eldbus_Message_Iter *iter = NULL, *iter_array = NULL, *iter_array2 = NULL, 
*iter_struct;
Elm_Atspi_Relation *rel;
-   Eina_List *rels;
+   Eina_List *l, *l2;
+   Elm_Atspi_Relation_Set rels;
 
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, 
ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, msg);
 
@@ -803,17 +804,18 @@ _accessible_get_relation_set(const 
Eldbus_Service_Interface *iface EINA_UNUSED,
 
eo_do(obj, rels = elm_interface_atspi_accessible_relation_set_get());
 
-   EINA_LIST_FREE(rels, rel)
+   EINA_LIST_FOREACH(rels, l, rel)
  {
 iter_struct = eldbus_message_iter_container_new(iter_array, 'r', NULL);
 eldbus_message_iter_basic_append(iter_struct, 'u', 
_elm_relation_to_atspi_relation(rel->type));
 iter_array2 = eldbus_message_iter_container_new(iter_struct, 'a', 
"(so)");
 EINA_SAFETY_ON_NULL_GOTO(iter_array2, fail);
-_bridge_iter_object_reference_append(bridge, iter_array2, rel->obj);
+EINA_LIST_FOREACH(rel->objects, l2, rel_obj)
+   _bridge_iter_object_reference_append(bridge, iter_array2, rel_obj);
 eldbus_message_iter_container_close(iter_struct, iter_array2);
 eldbus_message_iter_container_close(iter_array, iter_struct);
-free(rel);
  }
+   elm_atspi_relation_set_free(rels);
eldbus_message_iter_container_close(iter, iter_array);
 
return ret;
diff --git a/src/lib/elm_interface_atspi_accessible.c 
b/src/lib/elm_interface_atspi_accessible.c
index 709d142..0c0a213 100644
--- a/src/lib/elm_interface_atspi_accessible.c
+++ b/src/lib/elm_interface_atspi_accessible.c
@@ -127,6 +127,7 @@ struct _Elm_Interface_Atspi_Accessible_Data
const char*name;
const char*description;
const char*translation_domain;
+   Elm_Atspi_Relation_Set relations;
Elm_Interface_Atspi_Accessible *parent;
 };
 
@@ -290,12 +291,10 @@ _elm_interface_atspi_accessible_state_set_get(Eo *obj 
EINA_UNUSED, Elm_Interface
return 0;
 }
 
-EOLIAN Eina_List*
+EOLIAN Elm_Atspi_Relation_Set
 _elm_interface_atspi_accessible_relation_set_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd EINA_UNUSED)
 {
-   WRN("The %s object does not implement the \"accessible_relation_set\" 
function.",
-   eo_class_name_get(eo_class_get(obj)));
-   return NULL;
+   return elm_atspi_relation_set_clone(pd->relations);
 }
 
 EAPI void elm_atspi_attributes_list_free(Eina_List *list)
@@ -369,4 +368,177 @@ _elm_interface_atspi_accessible_translation_domain_get(Eo 
*obj EINA_UNUSED, Elm_
return pd->translation_domain;
 }
 
+EAPI void
+elm_atspi_relation_free(Elm_Atspi_Relation *relation)
+{
+   eina_list_free(relation->objects);
+   free(relation);
+}
+
+EAPI Elm_Atspi_Relation *
+elm_atspi_relation_clone(const Elm_Atspi_Relation *relation)
+{
+   Elm_Atspi_Relation *ret = calloc(sizeof(Elm_Atspi_Relation), 1);
+   if (!ret) return NULL;
+
+   ret->type = relation->type;
+   ret->objects = eina_list_clone(relation->objects);
+   return ret;
+}
+
+static Eina_Bool
+_on_rel_obj_del(void *data, Eo *obj, const Eo_Event_Description *desc 
EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   Elm_Atspi_Relation_Set *set = data;
+   Elm_Atspi_Relation *rel;
+   Eina_List *l, *l2, *p, *p2;
+   Eo *rel_obj;
+
+   EINA_LIST_FOREACH_SAFE(*set, l, l2, rel)
+ {
+EINA_LIST_FOREACH_SAFE(rel->objects, p, p2, rel_obj)
+ 

[EGIT] [core/elementary] master 01/01: atspi: support org.a11y.atspi.Collection interface

2015-10-05 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=c57bed959e8984d928fc3dc8bf51f12f8d13731c

commit c57bed959e8984d928fc3dc8bf51f12f8d13731c
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Wed Aug 5 03:23:47 2015 +0200

atspi: support org.a11y.atspi.Collection interface

org.a11y.atspi.Collection interface allows to perform fast search
queries on accessibility objects tree.
Due to lack of specification of collection interface this implementation
base on gnome project implementation from 
https://git.gnome.org/browse/at-spi2-atk/.

@feature
---
 src/lib/elm_atspi_bridge.c | 720 -
 1 file changed, 711 insertions(+), 9 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 345ab6b..9341153 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -87,6 +87,7 @@ typedef struct _Elm_Atspi_Bridge_Data
 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;
@@ -98,6 +99,19 @@ typedef struct _Elm_Atspi_Bridge_Data
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;
 
@@ -644,6 +658,15 @@ 
_elm_atspi_state_set_to_atspi_state_set(Elm_Atspi_State_Set states)
return ret;
 }
 
+static Elm_Atspi_State_Set
+_atspi_state_set_to_elm_atspi_state_set(uint64_t states)
+{
+   //Currently Elm_Atspi_State and Atspi_State_Set are binary compatible,
+   //implement proper coversion when it will be needed.
+   Elm_Atspi_State_Set ret = states;
+   return ret;
+}
+
 static Eina_Hash*
 _elm_atspi_state_hash_build(void)
 {
@@ -2365,6 +2388,675 @@ static const Eldbus_Service_Interface_Desc 
application_iface_desc = {
ATSPI_DBUS_INTERFACE_APPLICATION, NULL, NULL, application_properties, 
_application_properties_get, _application_properties_set
 };
 
+void
+_collection_match_rule_free(struct collection_match_rule *rule)
+{
+   Elm_Atspi_Attribute *attr;
+   eina_list_free(rule->ifaces);
+   EINA_LIST_FREE(rule->attributes, attr)
+ {
+eina_stringshare_del(attr->key);
+eina_stringshare_del(attr->value);
+ }
+}
+
+static void
+_collection_roles_convert(uint64_t roles[2])
+{
+   // Currently elm roles and atspi roles are binary compatible.
+   // Implement this function when it will be needed.
+   (void)roles;
+}
+
+static Eina_Bool
+_collection_iter_match_rule_get(Eldbus_Message_Iter *iter, struct 
collection_match_rule *rule)
+{
+   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;
+
+   if (!eldbus_message_iter_arguments_get(iter, "aiia{ss}iaiiasib", 
_iter, _match, _iter, _match, _iter, 
_match, _iter, _match, ))
+ {
+ERR("Unable to get message arguments");
+return EINA_FALSE;
+ }
+
+   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;
+
+   if (!eldbus_message_iter_fixed_array_get(states_iter, 'i', , 
_count))
+ return EINA_FALSE;
+
+   //Roles according to libatspi impementation are transfered 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);
+
+   //Roles according to libatspi impementation are transfered in 4-int element 
fixed bit array
+   if (!eldbus_message_iter_fixed_array_get(role_iter, 'i', , 
_count))
+ return EINA_FALSE;
+
+   if (array_count != 4)
+ {
+ERR("Unexpected roles array size");
+return EINA_FALSE;
+ }
+
+   //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));
+
+   _collection_roles_convert(rule->roles);
+
+   //Get matching prop

[EGIT] [core/elementary] master 01/01: atspi: encapsulate common behaviour in atspi mixin class.

2015-10-02 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=7defa24fd074bd8cd35318c7707acf4fbce69c44

commit 7defa24fd074bd8cd35318c7707acf4fbce69c44
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Oct 1 17:24:42 2015 +0200

atspi: encapsulate common behaviour in atspi mixin class.

This patch moves some duplicated implementation from elm_widget
and elm_widget_item classes into atspi base mixin. It allows to
better share code and reduce maintainability.

Change-Id: I8d264661e7ffade7da72299f29075a536d71eaa3
---
 src/lib/elm_interface_atspi_accessible.c  | 84 ---
 src/lib/elm_interface_atspi_accessible.eo |  8 +--
 src/lib/elm_widget.c  | 78 
 src/lib/elm_widget.eo |  5 --
 src/lib/elm_widget.h  |  8 ---
 src/lib/elm_widget_item.eo|  4 --
 6 files changed, 58 insertions(+), 129 deletions(-)

diff --git a/src/lib/elm_interface_atspi_accessible.c 
b/src/lib/elm_interface_atspi_accessible.c
index 3524008..5bfb80e 100644
--- a/src/lib/elm_interface_atspi_accessible.c
+++ b/src/lib/elm_interface_atspi_accessible.c
@@ -121,10 +121,21 @@ struct _Elm_Atspi_Event_Handler
void *data;
 };
 
+struct _Elm_Interface_Atspi_Accessible_Data
+{
+   Elm_Atspi_Role role;
+   const char*name;
+   const char*description;
+   Elm_Interface_Atspi_Accessible *parent;
+};
+
+typedef struct _Elm_Interface_Atspi_Accessible_Data 
Elm_Interface_Atspi_Accessible_Data;
+
+
 static Eina_List *global_callbacks;
 
 EOLIAN static int
-_elm_interface_atspi_accessible_index_in_parent_get(Eo *obj, void *pd 
EINA_UNUSED)
+_elm_interface_atspi_accessible_index_in_parent_get(Eo *obj, 
Elm_Interface_Atspi_Accessible_Data *pd EINA_UNUSED)
 {
Eina_List *l, *children = NULL;
Eo *chld, *parent = NULL;
@@ -151,27 +162,24 @@ _elm_interface_atspi_accessible_index_in_parent_get(Eo 
*obj, void *pd EINA_UNUSE
return ret;
 }
 
-EOLIAN static Eo *
-_elm_interface_atspi_accessible_parent_get(Eo *obj EINA_UNUSED, void *pd 
EINA_UNUSED)
+EOLIAN static Elm_Interface_Atspi_Accessible *
+_elm_interface_atspi_accessible_parent_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd)
 {
-   Eo *parent = NULL;
-
-   /* By default using Eo_Base object hierarchy */
-   eo_do(obj, parent = eo_parent_get());
-   if (!parent) return NULL;
-
-   return eo_isa(parent, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN) ? parent : NULL;
+   return pd->parent;
 }
 
 EOLIAN static void
-_elm_interface_atspi_accessible_parent_set(Eo *obj, void *priv EINA_UNUSED, Eo 
*new_parent EINA_UNUSED)
+_elm_interface_atspi_accessible_parent_set(Eo *obj, 
Elm_Interface_Atspi_Accessible_Data *pd, Elm_Interface_Atspi_Accessible 
*new_parent)
 {
-   WRN("The %s object does not implement the \"accessible_parent_set\" 
function.",
-   eo_class_name_get(eo_class_get(obj)));
+   if (pd->parent != new_parent)
+ {
+pd->parent = new_parent;
+elm_interface_atspi_accessible_parent_changed_signal_emit(obj);
+ }
 }
 
 EOLIAN Eina_List*
-_elm_interface_atspi_accessible_attributes_get(Eo *obj EINA_UNUSED, void *pd 
EINA_UNUSED)
+_elm_interface_atspi_accessible_attributes_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd EINA_UNUSED)
 {
WRN("The %s object does not implement the \"accessible_attributes_set\" 
function.",
eo_class_name_get(eo_class_get(obj)));
@@ -179,20 +187,23 @@ _elm_interface_atspi_accessible_attributes_get(Eo *obj 
EINA_UNUSED, void *pd EIN
 }
 
 EOLIAN static Elm_Atspi_Role
-_elm_interface_atspi_accessible_role_get(Eo *obj EINA_UNUSED, void *pd 
EINA_UNUSED)
+_elm_interface_atspi_accessible_role_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd EINA_UNUSED)
 {
-   return ELM_ATSPI_ROLE_UNKNOWN;
+   return pd->role;
 }
 
 EOLIAN static void
-_elm_interface_atspi_accessible_role_set(Eo *obj EINA_UNUSED, void *pd 
EINA_UNUSED, Elm_Atspi_Role role EINA_UNUSED)
+_elm_interface_atspi_accessible_role_set(Eo *obj, 
Elm_Interface_Atspi_Accessible_Data *pd EINA_UNUSED, Elm_Atspi_Role role)
 {
-   WRN("The %s object does not implement the \"accessible_role_set\" 
function.",
-   eo_class_name_get(eo_class_get(obj)));
+   if (pd->role != role)
+ {
+pd->role = role;
+elm_interface_atspi_accessible_role_changed_signal_emit(obj);
+ }
 }
 
 EOLIAN const char *
-_elm_interface_atspi_accessible_role_name_get(Eo *obj EINA_UNUSED, void *pd 
EINA_UNUSED)
+_elm_interface_atspi_accessible_role_name_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd EINA_UNUSED)
 {
Elm_Atspi_Role role;
 
@@ -202,36 +213,30 @@ _elm_interface_atspi_accessible_role_name_get(Eo *obj 
EINA_UNUSED, void *pd EINA
 }
 
 EOLIAN char *
-_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, 

[EGIT] [core/elementary] master 02/03: widget_item: emit atspi children-changed only for non-destroyed parent.

2015-10-02 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=d1488623ca8cc91da5da95bc0e933f81ba83fc50

commit d1488623ca8cc91da5da95bc0e933f81ba83fc50
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Oct 2 11:35:27 2015 +0200

widget_item: emit atspi children-changed only for non-destroyed parent.
---
 src/lib/elm_interface_atspi_accessible.c | 2 +-
 src/lib/elm_widget.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/elm_interface_atspi_accessible.c 
b/src/lib/elm_interface_atspi_accessible.c
index 5bfb80e..483a35f 100644
--- a/src/lib/elm_interface_atspi_accessible.c
+++ b/src/lib/elm_interface_atspi_accessible.c
@@ -300,7 +300,7 @@ _elm_interface_atspi_accessible_event_emit(Eo *class 
EINA_UNUSED, void *pd EINA_
 
if (!accessible || !event || !eo_isa(accessible, 
ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
  {
-CRI("Invalid accessibility event emit parameters");
+CRI("Invalid parameters, event: %s, obj: %s", event ? event->name : 
"NULL", accessible ? eo_class_name_get(accessible) : "NULL");
 return;
  }
 
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index a8f5174..b14a625 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -4434,7 +4434,7 @@ _elm_widget_item_eo_base_destructor(Eo *eo_item, 
Elm_Widget_Item_Data *item)
eo_do(eo_item, elm_interface_atspi_accessible_description_set(NULL));
eo_do(eo_item, elm_interface_atspi_accessible_name_set(NULL));
 
-   if (_elm_config->atspi_mode)
+   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);

-- 




[EGIT] [core/elementary] master 01/03: atspi: fix state macros after extending Elm_Atspi_State_Type.

2015-10-02 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=3035b44231d992ae9d66fdca3e83560825a004b1

commit 3035b44231d992ae9d66fdca3e83560825a004b1
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Oct 2 11:33:46 2015 +0200

atspi: fix state macros after extending Elm_Atspi_State_Type.
---
 src/lib/elm_interface_atspi_accessible.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/lib/elm_interface_atspi_accessible.h 
b/src/lib/elm_interface_atspi_accessible.h
index 9b147c9..0012caa 100644
--- a/src/lib/elm_interface_atspi_accessible.h
+++ b/src/lib/elm_interface_atspi_accessible.h
@@ -17,17 +17,17 @@ typedef uint64_t Elm_Atspi_State_Set;
 /*
  * Sets a particilar state type for given state set.
  */
-#define STATE_TYPE_SET(state_set, type)   (state_set|= (1 << type))
+#define STATE_TYPE_SET(state_set, type)   (state_set|= (1L << type))
 
 /**
  * Unsets a particilar state type for given state set.
  */
-#define STATE_TYPE_UNSET(state_set, type) (state_set &= ~(1 << type))
+#define STATE_TYPE_UNSET(state_set, type) (state_set &= ~(1L << type))
 
 /**
  * Gets value of a particilar state type for given state set.
  */
-#define STATE_TYPE_GET(state_set, type)   (state_set & (1 << type))
+#define STATE_TYPE_GET(state_set, type)   (state_set & (1L << type))
 
 
 /**

-- 




[EGIT] [core/elementary] master 03/03: atspi: properly set parent.

2015-10-02 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=b1861986385479221ef9c13ca2d5ff1c0e259f6a

commit b1861986385479221ef9c13ca2d5ff1c0e259f6a
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Oct 2 16:44:19 2015 +0200

atspi: properly set parent.

Set proper atspi parents in cases when AT-SPI object tree structure
should be different then elementary tree (mostly in cases of 
elm_widget_items)

Add regression tests for those cases.
---
 src/lib/elm_gengrid.c| 15 
 src/lib/elm_genlist.c|  3 +++
 src/lib/elm_list.c   |  7 ++
 src/lib/elm_toolbar.c|  8 +++
 src/tests/elm_test_gengrid.c | 55 +++-
 src/tests/elm_test_genlist.c | 38 ++
 src/tests/elm_test_list.c| 31 +
 7 files changed, 156 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index 580d07a..01c72cc 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -898,6 +898,9 @@ _item_content_realize(Elm_Gen_Item *it,
  elm_widget_sub_object_add(WIDGET(it), content);
  if (eo_do_ret(EO_OBJ(it), tmp, elm_wdg_item_disabled_get()))
elm_widget_disabled_set(content, EINA_TRUE);
+
+ 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)));
   }
  }
 }
@@ -4432,6 +4435,12 @@ _elm_gengrid_item_append(Eo *obj, Elm_Gengrid_Data *sd, 
const Elm_Gengrid_Item_C
ecore_job_del(sd->calc_job);
sd->calc_job = ecore_job_add(_calc_job, obj);
 
+   if (_elm_config->atspi_mode)
+ {
+elm_interface_atspi_accessible_added(EO_OBJ(it));
+
elm_interface_atspi_accessible_children_changed_added_signal_emit(sd->obj, 
EO_OBJ(it));
+ }
+
return EO_OBJ(it);
 }
 
@@ -4452,6 +4461,12 @@ _elm_gengrid_item_prepend(Eo *obj, Elm_Gengrid_Data *sd, 
const Elm_Gengrid_Item_
ecore_job_del(sd->calc_job);
sd->calc_job = ecore_job_add(_calc_job, obj);
 
+   if (_elm_config->atspi_mode)
+ {
+elm_interface_atspi_accessible_added(EO_OBJ(it));
+
elm_interface_atspi_accessible_children_changed_added_signal_emit(sd->obj, 
EO_OBJ(it));
+ }
+
return EO_OBJ(it);
 }
 
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index d76352f..cb71fb9 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -396,6 +396,9 @@ _item_content_realize(Elm_Gen_Item *it,
 
  snprintf(buf, sizeof(buf), "elm,state,%s,visible", key);
  edje_object_signal_emit(target, buf, "elm");
+
+ if (_elm_config->atspi_mode)
+   eo_do(content, 
elm_interface_atspi_accessible_parent_set(EO_OBJ(it)));
   }
  }
 }
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index 7086486..3a4e2fd 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -2346,6 +2346,13 @@ _item_new(Evas_Object *obj,
   obj);
  }
 
+   if (_elm_config->atspi_mode)
+ {
+if (it->end) eo_do(it->end, 
elm_interface_atspi_accessible_parent_set(eo_it));
+if (it->icon) eo_do(it->icon, 
elm_interface_atspi_accessible_parent_set(eo_it));
+elm_interface_atspi_accessible_added(eo_it);
+ }
+
return it;
 }
 
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index 124c2ca..aa39481 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -2431,6 +2431,14 @@ _item_new(Evas_Object *obj,
_resizing_eval_item(it);
if ((!sd->items) && (sd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS))
  _item_select(it);
+
+   if (_elm_config->atspi_mode)
+ {
+eo_do(icon_obj, elm_interface_atspi_accessible_parent_set(eo_it));
+eo_do(VIEW(it), elm_interface_atspi_accessible_parent_set(eo_it));
+elm_interface_atspi_accessible_added(eo_it);
+ }
+
return it;
 }
 
diff --git a/src/tests/elm_test_gengrid.c b/src/tests/elm_test_gengrid.c
index 1d95a67..f0b3c2a 100644
--- a/src/tests/elm_test_gengrid.c
+++ b/src/tests/elm_test_gengrid.c
@@ -5,6 +5,7 @@
 #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
 #include 
 #include "elm_suite.h"
+#include "elm_test_helper.h"
 
 
 START_TEST (elm_atspi_role_get)
@@ -24,7 +25,59 @@ START_TEST (elm_atspi_role_get)
 }
 END_TEST
 
+// Temporary commnted since gengrid fields_update function do not call content 
callbacks
+// (different behaviour then genlist - which calls)
+#if 0
+static Evas_Object *content;
+
+static Evas_Object *
+gl_content_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part 
EINA_UNUSED)
+{
+   content = elm_button_add(obj);
+   evas_object_show(content);
+   return content;
+}
+
+/**
+ * Valida

[EGIT] [core/elementary] master 01/01: atspi: add translation domain for name and description.

2015-10-02 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=ac12f3adf246898f80085eb3bb0355d15cc113eb

commit ac12f3adf246898f80085eb3bb0355d15cc113eb
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Fri Oct 2 17:04:38 2015 +0200

atspi: add translation domain for name and description.

@feature
---
 src/lib/elm_interface_atspi_accessible.c  | 31 ++-
 src/lib/elm_interface_atspi_accessible.eo | 24 
 src/lib/elm_widget.c  |  2 ++
 3 files changed, 56 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_interface_atspi_accessible.c 
b/src/lib/elm_interface_atspi_accessible.c
index 483a35f..709d142 100644
--- a/src/lib/elm_interface_atspi_accessible.c
+++ b/src/lib/elm_interface_atspi_accessible.c
@@ -126,6 +126,7 @@ struct _Elm_Interface_Atspi_Accessible_Data
Elm_Atspi_Role role;
const char*name;
const char*description;
+   const char*translation_domain;
Elm_Interface_Atspi_Accessible *parent;
 };
 
@@ -215,7 +216,19 @@ _elm_interface_atspi_accessible_role_name_get(Eo *obj 
EINA_UNUSED, Elm_Interface
 EOLIAN char *
 _elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd)
 {
-   return pd->name ? strdup(pd->name) : NULL;
+   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
@@ -226,6 +239,10 @@ _elm_interface_atspi_accessible_name_set(Eo *obj 
EINA_UNUSED, Elm_Interface_Atsp
 
 const char * _elm_interface_atspi_accessible_description_get(Eo *obj 
EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd)
 {
+#ifdef ENABLE_NLS
+   if (pd->translation_domain)
+  return dgettext(pd->translation_domain, pd->description);
+#endif
return pd->description;
 }
 
@@ -340,4 +357,16 @@ _elm_interface_atspi_accessible_event_handler_del(Eo 
*class EINA_UNUSED, void *p
  }
 }
 
+EOLIAN void
+_elm_interface_atspi_accessible_translation_domain_set(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd, const char *domain)
+{
+   eina_stringshare_replace(>translation_domain, domain);
+}
+
+EOLIAN const char*
+_elm_interface_atspi_accessible_translation_domain_get(Eo *obj EINA_UNUSED, 
Elm_Interface_Atspi_Accessible_Data *pd)
+{
+   return pd->translation_domain;
+}
+
 #include "elm_interface_atspi_accessible.eo.c"
diff --git a/src/lib/elm_interface_atspi_accessible.eo 
b/src/lib/elm_interface_atspi_accessible.eo
index 98e02ad..f6a4ed7 100644
--- a/src/lib/elm_interface_atspi_accessible.eo
+++ b/src/lib/elm_interface_atspi_accessible.eo
@@ -123,6 +123,30 @@ mixin Elm_Interface_Atspi_Accessible ()
 @in event_info: void*; [[Accessibility event details.]]
  }
   }
+  @property translation_domain @protected {
+ get {
+[[Gets the translation domain of "name" and "description"
+  properties.]]
+ }
+ set {
+[[Sets the translation domain of "name" and "description"
+  properties.
+
+  Translation domain should be set if application wants to support 
i18n
+  for accessibily "name" and "description" properties.
+
+  When translation domain is set values of "name" and "description"
+  properties will be translated with dgettext function using
+  current translation domain as "domainname" parameter.
+
+  It is application developer responsibility to ensure that
+  translation files are loaded and binded to translation domain
+  when accessibility is enabled.]]
+ }
+ values {
+domain: const(char)*; [[ translation domain ]]
+ }
+  }
}
events {
   property,changed: const(char)*;
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index b14a625..73d024a 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -4433,6 +4433,7 @@ _elm_widget_item_eo_base_destructor(Eo *eo_item, 
Elm_Widget_Item_Data *item)
 
eo_do(eo_item, elm_interface_atspi_accessible_description_set(NULL));
eo_do(eo_item, elm_interface_atspi_accessible_name_set(NULL));
+   eo_do(eo_item, elm_interface_atspi_accessible_translation_domain_set(NULL));
 
if (_elm_config->atspi_mode && item->widget)
  
elm_interface_atspi_accessible_children_changed_del_signal_emit(item->widget, 
eo_item);
@@ -5707,6 +5708,7 @@ _elm_widget_eo_base_destructor(Eo *obj, 
Elm_Widget_Smart_Data *sd EINA_UNUSED)
 {
eo_do(obj, elm_interface_atspi_access

[EGIT] [core/elementary] master 01/01: Merge branch 'devs/stanluk/perf'

2015-10-01 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=b9d315996b917a2c04f5608ad3476140e1613ee0

commit b9d315996b917a2c04f5608ad3476140e1613ee0
Merge: 5471505 a109bf0
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Thu Oct 1 16:08:35 2015 +0200

Merge branch 'devs/stanluk/perf'

Serie of patches reducing overall memory overhead of atspi mode.

The main changes include:
* use recently fixed eldbus_service_register_fallback function instead
  of regular ones.
* use global accessibility events emitter and handler to avoid registering 
array
  of callbacks on every accessible object.
* do not keep strings with object paths

 src/lib/Makefile.am   |   1 +
 src/lib/elm_atspi_bridge.c| 917 +++---
 src/lib/elm_entry.c   |  10 +-
 src/lib/elm_genlist.c |  21 +-
 src/lib/elm_interface_atspi_accessible.c  |  55 ++
 src/lib/elm_interface_atspi_accessible.eo |  23 +
 src/lib/elm_interface_atspi_accessible.h  |  46 +-
 src/lib/elm_interface_atspi_window.h  |  56 ++
 src/lib/elm_interfaces.h  |   3 +-
 src/lib/elm_widget.c  |  38 +-
 src/lib/elm_win.c |  36 +-
 src/tests/elm_test_genlist.c  |  11 +-
 12 files changed, 697 insertions(+), 520 deletions(-)

-- 




[EGIT] [core/efl] master 18/20: eldbus: fix broken fallback interface.

2015-09-21 Thread Lukasz Stanislawski
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=abdbb9ad1432e2b3a7845f8466ec042fb684f2d0

commit abdbb9ad1432e2b3a7845f8466ec042fb684f2d0
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Tue Sep 22 00:04:35 2015 +0200

eldbus: fix broken fallback interface.

Summary:
Previous implementation assumed that fallback interface path should be 
changed
on every method call. This is generally not needed since real request
path can be obtained directly from dbus message passed as method call
paremeter.

This patch reverts this behaviour and additionally fix broken Property and 
Introspect
interface handling of fallback interface.

Reviewers: raster, lucasdemarchi, cedric

Subscribers: cedric, seoz

Differential Revision: https://phab.enlightenment.org/D3016

Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/eldbus/eldbus_service.c | 15 ---
 1 file changed, 15 deletions(-)

diff --git a/src/lib/eldbus/eldbus_service.c b/src/lib/eldbus/eldbus_service.c
index f92f821..9fdcdd5 100644
--- a/src/lib/eldbus/eldbus_service.c
+++ b/src/lib/eldbus/eldbus_service.c
@@ -669,8 +669,6 @@ _eldbus_service_object_add(Eldbus_Connection *conn, const 
char *path, Eina_Bool
obj->interfaces = eina_hash_string_superfast_new(NULL);
eldbus_connection_free_cb_add(conn, _on_connection_free, obj);
 
-   if (obj->fallback) return obj;
-
eina_hash_add(obj->interfaces, introspectable->name, introspectable);
eina_hash_add(obj->interfaces, properties_iface->name, properties_iface);
 
@@ -1324,18 +1322,11 @@ _object_handler(DBusConnection *dbus_conn EINA_UNUSED, 
DBusMessage *msg, void *u
const Eldbus_Method *method;
Eldbus_Message *eldbus_msg, *reply;
Eldbus_Connection *conn;
-   const char* fallback_path = NULL;
 
obj = user_data;
if (!obj) return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
conn = obj->conn;
 
-   if (obj->fallback)
- {
-   fallback_path = eina_stringshare_add(obj->path);
-   eina_stringshare_replace(>path, dbus_message_get_path(msg));
- }
-
DBG("Connection@%p Got message:\n"
   "  Type: %s\n"
   "  Path: %s\n"
@@ -1387,12 +1378,6 @@ _object_handler(DBusConnection *dbus_conn EINA_UNUSED, 
DBusMessage *msg, void *u
eldbus_connection_unref(conn);
eldbus_shutdown();
 
-   if (obj->fallback)
- {
-eina_stringshare_replace(>path, fallback_path);
-eina_stringshare_del(fallback_path);
- }
-
return DBUS_HANDLER_RESULT_HANDLED;
 }
 

-- 




[EGIT] [core/elementary] master 03/17: hoversel: add key binding for widget activation

2015-08-04 Thread Lukasz Stanislawski
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=6cff30bcae1e76ea3bf69428c7cc1c6054275aa8

commit 6cff30bcae1e76ea3bf69428c7cc1c6054275aa8
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Wed Jul 29 22:23:00 2015 +0200

hoversel: add key binding for widget activation

Test Plan:
1. Install previous version of elementary
2. Remove config from homedir
3. Build new config with elemetnary_config app
4. Install patched version of elementary
5. run elementary_test Hoversel test
6. Space end Enter should open hovesel

Reviewers: seoz, jaehwan, singh.amitesh, cedric

Reviewed By: cedric

Subscribers: seoz

Differential Revision: https://phab.enlightenment.org/D2787

Signed-off-by: Cedric BAIL ced...@osg.samsung.com
---
 config/default/base.src.in  | 20 +++-
 config/mobile/base.src.in   | 20 +++-
 config/standard/base.src.in | 20 +++-
 src/lib/elc_hoversel.c  | 10 ++
 src/lib/elm_config.c| 27 +++
 src/lib/elm_priv.h  |  2 +-
 6 files changed, 95 insertions(+), 4 deletions(-)

diff --git a/config/default/base.src.in b/config/default/base.src.in
index 40550d8..10257ee 100644
--- a/config/default/base.src.in
+++ b/config/default/base.src.in
@@ -1,5 +1,5 @@
 group Elm_Config struct {
-  value config_version int: 131075;
+  value config_version int: 131076;
   value engine string: ;
   value vsync uchar: 0;
   value thumbscroll_enable uchar: 1;
@@ -411,6 +411,24 @@ group Elm_Config struct {
   value action string: move;
   value params string: down;
}
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: KP_Enter;
+  value action string: activate;
+  value params string: ;
+   }
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: Return;
+  value action string: activate;
+  value params string: ;
+   }
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: space;
+  value action string: activate;
+  value params string: ;
+   }
 }
  }
  group Elm_Config_Bindings_Widget struct {
diff --git a/config/mobile/base.src.in b/config/mobile/base.src.in
index 772aca0..c18e2db 100644
--- a/config/mobile/base.src.in
+++ b/config/mobile/base.src.in
@@ -1,5 +1,5 @@
 group Elm_Config struct {
-  value config_version int: 131075;
+  value config_version int: 131076;
   value engine string: ;
   value vsync uchar: 0;
   value thumbscroll_enable uchar: 1;
@@ -415,6 +415,24 @@ group Elm_Config struct {
   value action string: move;
   value params string: down;
}
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: KP_Enter;
+  value action string: activate;
+  value params string: ;
+   }
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: Return;
+  value action string: activate;
+  value params string: ;
+   }
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: space;
+  value action string: activate;
+  value params string: ;
+   }
 }
  }
  group Elm_Config_Bindings_Widget struct {
diff --git a/config/standard/base.src.in b/config/standard/base.src.in
index af5ab67..3f4c0a5 100644
--- a/config/standard/base.src.in
+++ b/config/standard/base.src.in
@@ -1,5 +1,5 @@
 group Elm_Config struct {
-  value config_version int: 131075;
+  value config_version int: 131076;
   value engine string: ;
   value vsync uchar: 0;
   value thumbscroll_enable uchar: 0;
@@ -412,6 +412,24 @@ group Elm_Config struct {
   value action string: move;
   value params string: down;
}
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: KP_Enter;
+  value action string: activate;
+  value params string: ;
+   }
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: Return;
+  value action string: activate;
+  value params string: ;
+   }
+   group Elm_Config_Binding_Key struct {
+  value context int: 0;
+  value key string: space;
+  value action string: activate;
+  value params string: ;
+   }
 }
  }
  group

[EGIT] [core/elementary] master 01/01: widget_item: check view visibility in item_onscreen_is function.

2015-07-16 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=df2e80606141c251056b9d3093622fc0d64057a8

commit df2e80606141c251056b9d3093622fc0d64057a8
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Thu Jul 16 10:51:59 2015 +0200

widget_item: check view visibility in item_onscreen_is function.
---
 src/lib/elm_widget.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index f8da6fa..d683601 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -4502,6 +4502,9 @@ _elm_widget_item_onscreen_is(Elm_Object_Item *item)
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;
 

-- 




[EGIT] [core/elementary] master 01/01: atspi: handle all states names

2015-07-06 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=aad42e7cb4f7585888976fcabe73ba1968f84dc8

commit aad42e7cb4f7585888976fcabe73ba1968f84dc8
Author: Lukasz Stanislawski lukasz.stanislaw...@gmail.com
Date:   Mon Jul 6 23:32:35 2015 +0200

atspi: handle all states names
---
 src/lib/elm_atspi_bridge.c | 155 +++--
 1 file changed, 78 insertions(+), 77 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 6070ebf..915bea5 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -43,7 +43,6 @@
 #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_OBJECT_INTERFACE_GET_OR_RETURN_VAL(obj, key, ifc, val) \
Eldbus_Service_Interface *ifc; \
eo_do(obj, ifc = eo_key_data_get(key)); \
@@ -75,6 +74,7 @@ typedef struct _Elm_Atspi_Bridge_Data
Eldbus_Object *bus_obj;
Eina_List *pending_requests;
int id;
+   Eina_Hash *state_hash;
 
Eina_Bool connected : 1;
 } Elm_Atspi_Bridge_Data;
@@ -360,50 +360,56 @@ const int elm_roles_to_atspi_roles[][2] = {
{ ELM_ATSPI_ROLE_LAST_DEFINED, ATSPI_ROLE_LAST_DEFINED },
 };
 
+struct atspi_state_desc
+{
+   Elm_Atspi_State_Type elm_state;
+   AtspiStateType atspi_state;
+   const char *name;
+};
 
-const int elm_states_to_atspi_state[][2] = {
-   { ELM_ATSPI_STATE_INVALID, ATSPI_STATE_INVALID },
-   { ELM_ATSPI_STATE_ACTIVE, ATSPI_STATE_ACTIVE },
-   { ELM_ATSPI_STATE_ARMED, ATSPI_STATE_ARMED },
-   { ELM_ATSPI_STATE_BUSY, ATSPI_STATE_BUSY },
-   { ELM_ATSPI_STATE_CHECKED, ATSPI_STATE_CHECKED },
-   { ELM_ATSPI_STATE_COLLAPSED, ATSPI_STATE_COLLAPSED },
-   { ELM_ATSPI_STATE_DEFUNCT, ATSPI_STATE_DEFUNCT },
-   { ELM_ATSPI_STATE_EDITABLE, ATSPI_STATE_EDITABLE },
-   { ELM_ATSPI_STATE_ENABLED, ATSPI_STATE_ENABLED },
-   { ELM_ATSPI_STATE_EXPANDABLE, ATSPI_STATE_EXPANDABLE },
-   { ELM_ATSPI_STATE_EXPANDED, ATSPI_STATE_EXPANDED },
-   { ELM_ATSPI_STATE_FOCUSABLE, ATSPI_STATE_FOCUSABLE },
-   { ELM_ATSPI_STATE_FOCUSED, ATSPI_STATE_FOCUSED },
-   { ELM_ATSPI_STATE_HAS_TOOLTIP, ATSPI_STATE_HAS_TOOLTIP },
-   { ELM_ATSPI_STATE_HORIZONTAL, ATSPI_STATE_HORIZONTAL },
-   { ELM_ATSPI_STATE_ICONIFIED, ATSPI_STATE_ICONIFIED },
-   { ELM_ATSPI_STATE_MODAL, ATSPI_STATE_MODAL },
-   { ELM_ATSPI_STATE_MULTI_LINE, ATSPI_STATE_MULTI_LINE },
-   { ELM_ATSPI_STATE_MULTISELECTABLE, ATSPI_STATE_MULTISELECTABLE },
-   { ELM_ATSPI_STATE_OPAQUE, ATSPI_STATE_OPAQUE },
-   { ELM_ATSPI_STATE_PRESSED, ATSPI_STATE_PRESSED },
-   { ELM_ATSPI_STATE_RESIZABLE, ATSPI_STATE_RESIZABLE },
-   { ELM_ATSPI_STATE_SELECTABLE, ATSPI_STATE_SELECTABLE },
-   { ELM_ATSPI_STATE_SELECTED, ATSPI_STATE_SELECTED },
-   { ELM_ATSPI_STATE_SENSITIVE, ATSPI_STATE_SENSITIVE },
-   { ELM_ATSPI_STATE_SHOWING, ATSPI_STATE_SHOWING },
-   { ELM_ATSPI_STATE_SINGLE_LINE, ATSPI_STATE_SINGLE_LINE },
-   { ELM_ATSPI_STATE_STALE, ATSPI_STATE_STALE },
-   { ELM_ATSPI_STATE_TRANSIENT, ATSPI_STATE_TRANSIENT },
-   { ELM_ATSPI_STATE_VERTICAL, ATSPI_STATE_VERTICAL },
-   { ELM_ATSPI_STATE_VISIBLE, ATSPI_STATE_VISIBLE },
-   { ELM_ATSPI_STATE_MANAGES_DESCENDANTS, ATSPI_STATE_MANAGES_DESCENDANTS },
-   { ELM_ATSPI_STATE_INDETERMINATE, ATSPI_STATE_INDETERMINATE },
-   { ELM_ATSPI_STATE_REQUIRED, ATSPI_STATE_REQUIRED },
-   { ELM_ATSPI_STATE_TRUNCATED, ATSPI_STATE_TRUNCATED },
-   { ELM_ATSPI_STATE_ANIMATED, ATSPI_STATE_ANIMATED },
-   { ELM_ATSPI_STATE_INVALID_ENTRY, ATSPI_STATE_INVALID_ENTRY },
-   { ELM_ATSPI_STATE_SUPPORTS_AUTOCOMPLETION, 
ATSPI_STATE_SUPPORTS_AUTOCOMPLETION },
-   { ELM_ATSPI_STATE_SELECTABLE_TEXT, ATSPI_STATE_SELECTABLE_TEXT },
-   { ELM_ATSPI_STATE_IS_DEFAULT, ATSPI_STATE_IS_DEFAULT },
-   { ELM_ATSPI_STATE_VISITED, ATSPI_STATE_VISITED },
-   { ELM_ATSPI_STATE_LAST_DEFINED, ATSPI_STATE_LAST_DEFINED },
+const struct atspi_state_desc elm_states_to_atspi_state[] = {
+   { ELM_ATSPI_STATE_INVALID, ATSPI_STATE_INVALID, invalid },
+   { ELM_ATSPI_STATE_ACTIVE, ATSPI_STATE_ACTIVE, active },
+   { ELM_ATSPI_STATE_ARMED, ATSPI_STATE_ARMED, armed },
+   { ELM_ATSPI_STATE_BUSY, ATSPI_STATE_BUSY, busy },
+   { ELM_ATSPI_STATE_CHECKED, ATSPI_STATE_CHECKED, checked },
+   { ELM_ATSPI_STATE_COLLAPSED, ATSPI_STATE_COLLAPSED, collapsed },
+   { ELM_ATSPI_STATE_DEFUNCT, ATSPI_STATE_DEFUNCT, defunct },
+   { ELM_ATSPI_STATE_EDITABLE, ATSPI_STATE_EDITABLE, editable },
+   { ELM_ATSPI_STATE_ENABLED, ATSPI_STATE_ENABLED, enabled },
+   { ELM_ATSPI_STATE_EXPANDABLE, ATSPI_STATE_EXPANDABLE, expandable },
+   { ELM_ATSPI_STATE_EXPANDED, ATSPI_STATE_EXPANDED, expanded },
+   { ELM_ATSPI_STATE_FOCUSABLE, ATSPI_STATE_FOCUSABLE, focusable },
+   { ELM_ATSPI_STATE_FOCUSED, ATSPI_STATE_FOCUSED, focused },
+   { ELM_ATSPI_STATE_HAS_TOOLTIP, ATSPI_STATE_HAS_TOOLTIP, has-tooltip },
+   { ELM_ATSPI_STATE_HORIZONTAL, ATSPI_STATE_HORIZONTAL, horizontal

[EGIT] [core/elementary] master 01/01: atspi: fix missing Window signals on AT-SPI2 initialization

2015-06-29 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=0dc0ad891a33572bc2c056c425a3ae6566c26050

commit 0dc0ad891a33572bc2c056c425a3ae6566c26050
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Mon Jun 29 16:30:34 2015 +0200

atspi: fix missing Window signals on AT-SPI2 initialization

Patch adds connected/disconnected elm_atspi_bridge events to avoid
races between window getting focus and AT-SPI2 bus initialization.
When  bridge gets connected windows will reemit all Created,
Activated and Deactivated events with regard to window focus.
---
 src/lib/elm_atspi_bridge.c  | 45 +
 src/lib/elm_atspi_bridge.eo |  4 
 src/lib/elm_win.c   | 43 +--
 3 files changed, 54 insertions(+), 38 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 9a5c9cb..289f3af 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -2997,6 +2997,10 @@ _registered_listeners_get(void *data, const 
Eldbus_Message *msg, Eldbus_Pending
 eldbus_message_iter_arguments_get(siter, ss, bus, event);
 _set_broadcast_flag(event, data);
  }
+
+   if (!pd-connected)
+  eo_do(data, eo_event_callback_call(ELM_ATSPI_BRIDGE_EVENT_CONNECTED, 
NULL));
+   pd-connected = EINA_TRUE;
 }
 
 static void
@@ -3145,46 +3149,24 @@ static Eina_Bool
 _window_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc, 
void *event_info EINA_UNUSED)
 {
enum _Atspi_Window_Signals type;
-   const char *name;
 
ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(data, pd, EINA_FALSE);
ELM_ATSPI_OBJECT_INTERFACE_GET_OR_RETURN_VAL(obj, 
eo_class_name_get(ELM_INTERFACE_ATSPI_WINDOW_INTERFACE), ifc, EINA_FALSE);
 
if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED)
- {
-type = ATSPI_WINDOW_EVENT_CREATE;
-name = Create;
- }
+ type = ATSPI_WINDOW_EVENT_CREATE;
else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DESTROYED)
- {
-type = ATSPI_WINDOW_EVENT_DESTROY;
-name = Destroy;
- }
+ type = ATSPI_WINDOW_EVENT_DESTROY;
else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED)
- {
-type = ATSPI_WINDOW_EVENT_DEACTIVATE;
-name = Deactivate;
- }
+ type = ATSPI_WINDOW_EVENT_DEACTIVATE;
else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_ACTIVATED)
- {
-type = ATSPI_WINDOW_EVENT_ACTIVATE;
-name = Activate;
- }
+ type = ATSPI_WINDOW_EVENT_ACTIVATE;
else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MAXIMIZED)
- {
-type = ATSPI_WINDOW_EVENT_MAXIMIZE;
-name = Maximize;
- }
+ type = ATSPI_WINDOW_EVENT_MAXIMIZE;
else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MINIMIZED)
- {
-type = ATSPI_WINDOW_EVENT_MINIMIZE;
-name = Minimize;
- }
+ type = ATSPI_WINDOW_EVENT_MINIMIZE;
else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_RESTORED)
- {
-type = ATSPI_WINDOW_EVENT_RESTORE;
-name = Restore;
- }
+ type = ATSPI_WINDOW_EVENT_RESTORE;
else
  return EINA_FALSE;
 
@@ -3197,7 +3179,7 @@ _window_signal_send(void *data, Eo *obj, const 
Eo_Event_Description *desc, void
 return EINA_FALSE;
  }
 
-   _bridge_signal_send(data, ifc, type, name, 0, 0, i, 0);
+   _bridge_signal_send(data, ifc, type, , 0, 0, i, 0);
return EINA_TRUE;
 }
 
@@ -3461,6 +3443,7 @@ _a11y_connection_shutdown(Eo *bridge)
if (pd-a11y_bus) eldbus_connection_unref(pd-a11y_bus);
pd-a11y_bus = NULL;
 
+   eo_do(bridge, eo_event_callback_call(ELM_ATSPI_BRIDGE_EVENT_DISCONNECTED, 
NULL));
pd-connected = EINA_FALSE;
 }
 
@@ -3492,8 +3475,6 @@ _a11y_bus_initialize(Eo *obj, const char *socket_addr)
// buid cache
eo_do(obj, root = elm_obj_atspi_bridge_root_get());
_bridge_cache_build(obj, root);
-
-   pd-connected = EINA_TRUE;
 }
 
 static void
diff --git a/src/lib/elm_atspi_bridge.eo b/src/lib/elm_atspi_bridge.eo
index fc1471a..eafd9f4 100644
--- a/src/lib/elm_atspi_bridge.eo
+++ b/src/lib/elm_atspi_bridge.eo
@@ -23,4 +23,8 @@ class Elm.Atspi_Bridge (Eo.Base)
   Eo.Base.constructor;
   Eo.Base.destructor;
}
+   events {
+  connected;
+  disconnected;
+   }
 }
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index ff2021e..e41113a 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -1507,9 +1507,6 @@ _elm_win_evas_object_smart_show(Eo *obj, Elm_Win_Data *sd)
TRAP(sd, show);
 
if (sd-shot.info) _shot_handle(sd);
-
-   if (_elm_config-atspi_mode)
- eo_do(obj, 
eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED, NULL));
 }
 
 EOLIAN static void
@@ -1878,6 +1875,9 @@ _elm_win_evas_object_smart_del(Eo *obj, Elm_Win_Data *sd)
 evas_font_cache_flush(evas_object_evas_get(obj));
 elm_exit

[EGIT] [core/elementary] master 01/01: atspi: add missing header

2015-06-29 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=65bfc92ad68d45927abef9a6b7f1bc6ae76c8da8

commit 65bfc92ad68d45927abef9a6b7f1bc6ae76c8da8
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Mon Jun 29 11:39:16 2015 +0200

atspi: add missing header
---
 src/lib/Makefile.am | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index ece5597..bcfc36e 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -34,6 +34,7 @@ includesdir = $(includedir)/elementary-@VMAJ@
 
 includesunstable_HEADERS = \
 elm_gen_common.h \
+elm_atspi_bridge.h \
 elm_interface_atspi_accessible.h \
 elm_interface_atspi_text.h \
 elm_interface_atspi_widget_action.h \

-- 




[EGIT] [core/efl] master 01/01: ecore-x: move grabbed_is check to multi_handler

2015-06-17 Thread Lukasz Stanislawski
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=73dc72515c8d25a1118331a01f9ba446cdaef20e

commit 73dc72515c8d25a1118331a01f9ba446cdaef20e
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Wed Jun 17 13:45:35 2015 -0400

ecore-x: move grabbed_is check to multi_handler

Summary:
Previous implementation used mouse_handler to create mouse events from touch
events if the device was grabbed and no emulated mouse events were emitted 
by X server.
However the same functionality could be achieved by using multi_handler with
additional condition on grabbed devices.

Test Plan: elementary_test - Multitouch

Reviewers: cedric, raster, devilhorns

Subscribers: seoz, cedric

Differential Revision: https://phab.enlightenment.org/D2700
---
 src/lib/ecore_x/xlib/ecore_x_xi2.c | 26 --
 1 file changed, 4 insertions(+), 22 deletions(-)

diff --git a/src/lib/ecore_x/xlib/ecore_x_xi2.c 
b/src/lib/ecore_x/xlib/ecore_x_xi2.c
index 2c3acaf..7824817 100644
--- a/src/lib/ecore_x/xlib/ecore_x_xi2.c
+++ b/src/lib/ecore_x/xlib/ecore_x_xi2.c
@@ -304,11 +304,6 @@ _ecore_x_input_mouse_handler(XEvent *xevent)
 
switch (xevent-xcookie.evtype)
  {
-#ifdef ECORE_XI2_2
-  case XI_TouchUpdate:
- if (!_ecore_x_input_grabbed_is(devid))
-   break;
-#endif
   case XI_Motion:
 INF(Handling XI_Motion);
 _ecore_mouse_move
@@ -327,11 +322,6 @@ _ecore_x_input_mouse_handler(XEvent *xevent)
   evd-root_x, evd-root_y);
 break;
 
-#ifdef ECORE_XI2_2
-  case XI_TouchBegin:
- if (!_ecore_x_input_grabbed_is(devid))
-   break;
-#endif
   case XI_ButtonPress:
 INF(ButtonEvent:multi press time=%u x=%d y=%d devid=%d, (unsigned 
int)evd-time, (int)evd-event_x, (int)evd-event_y, devid);
 _ecore_mouse_button
@@ -352,11 +342,6 @@ _ecore_x_input_mouse_handler(XEvent *xevent)
   evd-root_x, evd-root_y);
 break;
 
-#ifdef ECORE_XI2_2
-  case XI_TouchEnd:
- if (!_ecore_x_input_grabbed_is(devid))
-   break;
-#endif
   case XI_ButtonRelease:
 INF(ButtonEvent:multi release time=%u x=%d y=%d devid=%d, (unsigned 
int)evd-time, (int)evd-event_x, (int)evd-event_y, devid);
 _ecore_mouse_button
@@ -396,7 +381,7 @@ _ecore_x_input_multi_handler(XEvent *xevent)
  XIDeviceEvent *evd = (XIDeviceEvent *)(xevent-xcookie.data);
  int devid = evd-deviceid;
  int i = _ecore_x_input_touch_index_get(devid, evd-detail, 
XI_TouchUpdate);
- if ((i == 0)  (evd-flags  XITouchEmulatingPointer)) return;
+ if ((i == 0)  (evd-flags  XITouchEmulatingPointer)  
!_ecore_x_input_grabbed_is(devid)) return;
  INF(Handling XI_TouchUpdate);
  _ecore_mouse_move(evd-time,
0,   // state
@@ -419,7 +404,7 @@ _ecore_x_input_multi_handler(XEvent *xevent)
  XIDeviceEvent *evd = (XIDeviceEvent *)(xevent-xcookie.data);
  int devid = evd-deviceid;
  int i = _ecore_x_input_touch_index_get(devid, evd-detail, 
XI_TouchBegin);
- if ((i == 0)  (evd-flags  XITouchEmulatingPointer)) return;
+ if ((i == 0)  (evd-flags  XITouchEmulatingPointer)  
!_ecore_x_input_grabbed_is(devid)) return;
  INF(Handling XI_TouchBegin);
  _ecore_mouse_button(ECORE_EVENT_MOUSE_BUTTON_DOWN,
  evd-time,
@@ -444,7 +429,7 @@ _ecore_x_input_multi_handler(XEvent *xevent)
  XIDeviceEvent *evd = (XIDeviceEvent *)(xevent-xcookie.data);
  int devid = evd-deviceid;
  int i = _ecore_x_input_touch_index_get(devid, evd-detail, 
XI_TouchEnd);
- if ((i == 0)  (evd-flags  XITouchEmulatingPointer))
+ if ((i == 0)  (evd-flags  XITouchEmulatingPointer)  
!_ecore_x_input_grabbed_is(devid))
{
   _ecore_x_input_touch_index_clear(devid,  i);
   return;
@@ -675,10 +660,7 @@ _ecore_x_input_handler(XEvent *xevent)
  if ((dev-use == XISlavePointer) 
  !(evd-flags  XIPointerEmulated))
{
-  if (evd-flags  XITouchEmulatingPointer)
-_ecore_x_input_mouse_handler(xevent);
-  else
-_ecore_x_input_multi_handler(xevent);
+  _ecore_x_input_multi_handler(xevent);
}
  else if (dev-use == XIFloatingSlave)
_ecore_x_input_mouse_handler(xevent);

-- 




[EGIT] [core/elementary] master 01/01: list: add atspi SELECTABLE state to elm_list items.

2015-06-11 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=b3dab84df131bbffbc795b602a9b2c255e0497ee

commit b3dab84df131bbffbc795b602a9b2c255e0497ee
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Thu Jun 11 10:57:23 2015 +0200

list: add atspi SELECTABLE state to elm_list items.
---
 src/lib/elm_list.c | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index ab7a49a..1ee5915 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -2170,8 +2170,13 @@ 
_elm_list_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_List_
Eina_Bool sel;
 
eo_do_super(eo_it, ELM_LIST_ITEM_CLASS, ret = 
elm_interface_atspi_accessible_state_set_get());
-   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());
if (sel)
  STATE_TYPE_SET(ret, ELM_ATSPI_STATE_SELECTED);
else

-- 




[EGIT] [core/elementary] master 01/01: atspi: fix popup role and signal emission

2015-06-05 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=62a258dea7224656f6430708a45c95872f42d9fd

commit 62a258dea7224656f6430708a45c95872f42d9fd
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Fri Jun 5 15:59:46 2015 +0200

atspi: fix popup role and signal emission
---
 src/lib/elc_popup.c  | 2 +-
 src/lib/elm_widget.c | 5 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c
index a274591..965223f 100644
--- a/src/lib/elc_popup.c
+++ b/src/lib/elc_popup.c
@@ -1512,7 +1512,7 @@ _elm_popup_eo_base_constructor(Eo *obj, Elm_Popup_Data 
*_pd EINA_UNUSED)
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_POPUP_MENU));
+ elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_NOTIFICATION));
 
return obj;
 }
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index b826ee9..8ebb23f 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -550,6 +550,8 @@ _elm_widget_evas_object_smart_show(Eo *obj, 
Elm_Widget_Smart_Data *_pd EINA_UNUS
 Eo *parent;
 eo_do(obj, parent = elm_interface_atspi_accessible_parent_get());
 
elm_interface_atspi_accessible_children_changed_added_signal_emit(parent, obj);
+if (_elm_widget_onscreen_is(obj))
+   elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_SHOWING, EINA_TRUE);
  }
 
it = evas_object_smart_iterator_new(obj);
@@ -574,6 +576,9 @@ _elm_widget_evas_object_smart_hide(Eo *obj, 
Elm_Widget_Smart_Data *_pd EINA_UNUS
 evas_object_hide(o);
  }
eina_iterator_free(it);
+
+   if (_elm_config-atspi_mode)
+ elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_SHOWING, EINA_FALSE);
 }
 
 EOLIAN static void

-- 




[EGIT] [core/efl] master 01/01: ecore-x: add new grab touch devices functionality.

2015-06-04 Thread Lukasz Stanislawski
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2017c8be95c06a905a363838922176931cd2a34f

commit 2017c8be95c06a905a363838922176931cd2a34f
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Thu Jun 4 13:06:27 2015 -0400

ecore-x: add new grab touch devices functionality.

Summary:
EFL currently supports pointer grabbing. This patch introduces new API
allowing to grab all slave touch devices registered in X server
Grabbing is performed by XIGrabDevice function from XInput 2.0.

By default ecore_x_input_touch_devices_grab grabs all XISlavePointer 
devices,
having XITouchInfoClass. Function returns EINA_TRUE if at least one touch 
device
was successfully grabbed. ecore_x_input_touch_devices_ungrab ungrabs all
previously grabbed devices.

To process events correctly change has been done in x_input_handler to 
emulate
mouse pointer events. If XITouchEmulatingPointer flag is set on touch 
events and
device is grabbed framework will generate mouse events. This is required
due to X Server design in which mouse events are no longer send to client 
when device is
detached (grabbed) from virtual core pointer.

@feature

Reviewers: cedric, raster, devilhorns

Subscribers: seoz, cedric

Differential Revision: https://phab.enlightenment.org/D2568
---
 src/lib/ecore_x/Ecore_X.h |   2 +
 src/lib/ecore_x/xcb/ecore_xcb_input.c |  14 
 src/lib/ecore_x/xlib/ecore_x_xi2.c| 117 +-
 3 files changed, 132 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index 86a33c9..8c3a41f 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -2533,6 +2533,8 @@ EAPI Eina_Bool  ecore_x_image_to_argb_convert(void 
*src, int sbpp, int sbpl,
 
 EAPI Eina_Bool  ecore_x_input_multi_select(Ecore_X_Window win); /** 
@since 1.13 */
 EAPI Eina_Bool ecore_x_input_raw_select(Ecore_X_Window win); /** @since 
1.8 */
+EAPI Eina_Bool  ecore_x_input_touch_devices_grab(Ecore_X_Window win); /** 
@since 1.15 */
+EAPI Eina_Bool  ecore_x_input_touch_devices_ungrab(void); /** @since 1.15 
*/
 
 EAPI Eina_Bool  ecore_x_vsync_animator_tick_source_set(Ecore_X_Window win);
 
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_input.c 
b/src/lib/ecore_x/xcb/ecore_xcb_input.c
index e94cc80..cd9e488 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_input.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_input.c
@@ -279,3 +279,17 @@ ecore_x_input_raw_select(Ecore_X_Window win EINA_UNUSED)
/* NB: FIXME: This is just a placeholder. XCB does not have XInput2 yet */
return EINA_FALSE;
 }
+
+EAPI Eina_Bool
+ecore_x_input_touch_devices_grab(Ecore_X_Window win EINA_UNUSED)
+{
+   /* NB: FIXME: This is just a placeholder. XCB does not have XInput2 yet */
+   return EINA_FALSE;
+}
+
+EAPI Eina_Bool
+ecore_x_input_touch_devices_ungrab(void)
+{
+   /* NB: FIXME: This is just a placeholder. XCB does not have XInput2 yet */
+   return EINA_FALSE;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_xi2.c 
b/src/lib/ecore_x/xlib/ecore_x_xi2.c
index 832b424..d18bbab 100644
--- a/src/lib/ecore_x/xlib/ecore_x_xi2.c
+++ b/src/lib/ecore_x/xlib/ecore_x_xi2.c
@@ -41,6 +41,7 @@ static int _ecore_x_xi2_num = 0;
 #ifdef ECORE_XI2_2
 static Eina_Inlist *_ecore_x_xi2_touch_info_list = NULL;
 #endif /* ifdef ECORE_XI2_2 */
+static Eina_List *_ecore_x_xi2_grabbed_devices_list;
 #endif /* ifdef ECORE_XI2 */
 
 void
@@ -140,6 +141,10 @@ _ecore_x_input_shutdown(void)
 
_ecore_x_xi2_num = 0;
_ecore_x_xi2_opcode = -1;
+
+   if (_ecore_x_xi2_grabbed_devices_list)
+ eina_list_free(_ecore_x_xi2_grabbed_devices_list);
+   _ecore_x_xi2_grabbed_devices_list = NULL;
 #endif /* ifdef ECORE_XI2 */
 }
 
@@ -271,6 +276,23 @@ _ecore_x_input_raw_handler(XEvent *xevent)
 #endif /* ifdef ECORE_XI2 */
 }
 
+static Eina_Bool
+_ecore_x_input_grabbed_is(int deviceId)
+{
+#ifdef ECORE_XI2
+   void *id;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(_ecore_x_xi2_grabbed_devices_list, l, id)
+ {
+if (deviceId == (intptr_t)id)
+  return EINA_TRUE;
+ }
+#endif /* ifdef ECORE_XI2 */
+
+   return EINA_FALSE;
+}
+
 void
 _ecore_x_input_mouse_handler(XEvent *xevent)
 {
@@ -282,6 +304,9 @@ _ecore_x_input_mouse_handler(XEvent *xevent)
 
switch (xevent-xcookie.evtype)
  {
+  case XI_TouchUpdate:
+ if (!_ecore_x_input_grabbed_is(devid))
+   break;
   case XI_Motion:
 INF(Handling XI_Motion);
 _ecore_mouse_move
@@ -300,6 +325,9 @@ _ecore_x_input_mouse_handler(XEvent *xevent)
   evd-root_x, evd-root_y);
 break;
 
+  case XI_TouchBegin:
+ if (!_ecore_x_input_grabbed_is(devid))
+   break;
   case XI_ButtonPress:
 INF(ButtonEvent:multi press time=%u x=%d y=%d devid=%d, (unsigned 
int)evd-time, (int)evd-event_x, (int)evd-event_y, devid

[EGIT] [core/elementary] master 02/02: entry: improve at-spi2 accessibility support

2015-06-03 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=9f7de33fdb26db5a3b14fb08a1d99b12cfb41d22

commit 9f7de33fdb26db5a3b14fb08a1d99b12cfb41d22
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Wed Jun 3 17:36:42 2015 +0200

entry: improve at-spi2 accessibility support

* return guide text instead of content
* mask passwords
* set proper at-spi roles when entry enables password mode.
---
 src/lib/elm_entry.c  | 28 
 src/lib/elm_entry.eo |  1 +
 2 files changed, 29 insertions(+)

diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index c20582e..c88cfe2 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -59,6 +59,8 @@
 
 ELM_PRIV_ENTRY_SIGNALS(ELM_PRIV_STATIC_VARIABLE_DECLARE);
 
+#define ENTRY_PASSWORD_MASK_CHARACTER 0x002A
+
 static const Evas_Smart_Cb_Description _smart_callbacks[] = {
ELM_PRIV_ENTRY_SIGNALS(ELM_PRIV_SMART_CALLBACKS_DESC)
{SIG_WIDGET_LANG_CHANGED, }, /** handled by elm_widget */
@@ -3813,6 +3815,7 @@ _elm_entry_password_set(Eo *obj, Elm_Entry_Data *sd, 
Eina_Bool password)
 sd-line_wrap = ELM_WRAP_NONE;
 elm_entry_input_hint_set(obj, ((sd-input_hints  
~ELM_INPUT_HINT_AUTO_COMPLETE) | ELM_INPUT_HINT_SENSITIVE_DATA));
 _entry_selection_callbacks_unregister(obj);
+elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PASSWORD_TEXT);
  }
else
  {
@@ -3825,6 +3828,7 @@ _elm_entry_password_set(Eo *obj, Elm_Entry_Data *sd, 
Eina_Bool password)
 
 elm_entry_input_hint_set(obj, ((sd-input_hints | 
ELM_INPUT_HINT_AUTO_COMPLETE)  ~ELM_INPUT_HINT_SENSITIVE_DATA));
 _entry_selection_callbacks_register(obj);
+elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_ENTRY);
  }
 
eo_do(obj, elm_obj_widget_theme_apply());
@@ -5112,6 +5116,9 @@ _elm_entry_elm_interface_atspi_text_character_get(Eo 
*obj, Elm_Entry_Data *_pd E
 
free(txt);
 
+   if (_pd-password)
+ ret = ENTRY_PASSWORD_MASK_CHARACTER;
+
return ret;
 }
 
@@ -5198,6 +5205,13 @@ _elm_entry_elm_interface_atspi_text_string_get(Eo *obj, 
Elm_Entry_Data *_pd EINA
evas_textblock_cursor_free(cur);
evas_textblock_cursor_free(cur2);
 
+   if (ret  _pd-password)
+ {
+int i = 0;
+while (ret[i] != '\0')
+ ret[i++] = ENTRY_PASSWORD_MASK_CHARACTER;
+ }
+
return ret;
 
 fail:
@@ -5233,6 +5247,13 @@ _elm_entry_elm_interface_atspi_text_text_get(Eo *obj, 
Elm_Entry_Data *_pd EINA_U
evas_textblock_cursor_free(cur);
evas_textblock_cursor_free(cur2);
 
+   if (ret  _pd-password)
+ {
+int i = 0;
+while (ret[i] != '\0')
+ ret[i++] = ENTRY_PASSWORD_MASK_CHARACTER;
+ }
+
return ret;
 
 fail:
@@ -5647,4 +5668,11 @@ 
_elm_entry_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Entry_Data
return ret;
 }
 
+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;
+}
+
 #include elm_entry.eo.c
diff --git a/src/lib/elm_entry.eo b/src/lib/elm_entry.eo
index c60e848..baf422c 100644
--- a/src/lib/elm_entry.eo
+++ b/src/lib/elm_entry.eo
@@ -1200,6 +1200,7 @@ class Elm.Entry (Elm.Layout, Elm_Interface_Scrollable, 
Evas.Clickable_Interface,
   Elm_Interface_Scrollable.policy.set;
   Elm_Interface_Scrollable.bounce_allow.set;
   Elm_Interface_Atspi_Accessible.state_set.get;
+  Elm_Interface_Atspi_Accessible.name.get;
   Elm_Interface_Atspi_Text.text.get;
   Elm_Interface_Atspi_Text.string.get;
   Elm_Interface_Atspi_Text.attribute.get;

-- 




[EGIT] [core/elementary] master 01/02: atspi: fix signal name

2015-06-03 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=4b041b4740e7bcf759fb936d9ced5015b669616f

commit 4b041b4740e7bcf759fb936d9ced5015b669616f
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Wed Jun 3 16:58:23 2015 +0200

atspi: fix signal name
---
 src/lib/elm_atspi_bridge.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 7857c5c..4bf6673 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -187,7 +187,7 @@ static const Eldbus_Signal _event_obj_signals[] = {
[ATSPI_OBJECT_EVENT_COLUMN_REORDERED] = {ColumnReordered, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
[ATSPI_OBJECT_EVENT_COLUMN_DELETED] = {ColumnDeleted, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
[ATSPI_OBJECT_EVENT_TEXT_BOUNDS_CHANGED] = {TextBoundsChanged, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
-   [ATSPI_OBJECT_EVENT_TEXT_SELECTION_CHANGED] = {SelectionChanged, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
+   [ATSPI_OBJECT_EVENT_TEXT_SELECTION_CHANGED] = {TextSelectionChanged, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
[ATSPI_OBJECT_EVENT_TEXT_CHANGED] = {TextChanged, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
[ATSPI_OBJECT_EVENT_TEXT_ATTRIBUTES_CHANGED] = {TextAttributesChanged, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
[ATSPI_OBJECT_EVENT_TEXT_CARET_MOVED] = {TextCaretMoved, 
ELDBUS_ARGS({siiv(so), NULL}), 0},

-- 




[EGIT] [core/elementary] master 01/01: genlist: implement Atspi_Selection interface

2015-05-26 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=9719b3560c4a1d9e821a0dcc499bfeeaca5b09c8

commit 9719b3560c4a1d9e821a0dcc499bfeeaca5b09c8
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Tue May 26 15:34:52 2015 +0200

genlist: implement Atspi_Selection interface

Allow to select and deselect genlist items by Assistive Technology
Clients through org.a11y.atspi.Selection dbus interface.
---
 src/lib/elm_genlist.c  | 101 +
 src/lib/elm_genlist.eo |  10 -
 2 files changed, 110 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index 4962347..af2e35a 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -5,6 +5,7 @@
 #include fnmatch.h
 
 #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
+#define ELM_INTERFACE_ATSPI_SELECTION_PROTECTED
 #define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
 #define ELM_WIDGET_ITEM_PROTECTED
 
@@ -7991,5 +7992,105 @@ 
_elm_genlist_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Genlist_D
return ret;
 }
 
+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;
+}
+
 #include elm_genlist.eo.c
 #include elm_genlist_item.eo.c
diff --git a/src/lib/elm_genlist.eo b/src/lib/elm_genlist.eo
index 8a4b612..552b4d3 100644
--- a/src/lib/elm_genlist.eo
+++ b/src/lib/elm_genlist.eo
@@ -1,7 +1,7 @@
 import elm_general;
 
 class Elm.Genlist (Elm.Layout, Elm_Interface_Scrollable, 
Evas.Clickable_Interface,
-   Elm_Interface_Atspi_Widget_Action)
+   Elm_Interface_Atspi_Widget_Action, 
Elm_Interface_Atspi_Selection)
 {
eo_prefix: elm_obj_genlist;
methods {
@@ -731,6 +731,14 @@ class Elm.Genlist (Elm.Layout, Elm_Interface_Scrollable, 
Evas.Clickable_Interfac
   Elm_Interface_Atspi_Accessible.children.get;
   Elm_Interface_Atspi_Accessible.state_set.get;
   Elm_Interface_Atspi_Widget_Action.elm_actions.get;
+  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

[EGIT] [core/elementary] master 02/04: atspi: do not return ELM_ATSPI_STATE_ACTIVE when widget is enabled.

2015-05-13 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=10109852fe7e98c0e72c328e603b957a65ef534b

commit 10109852fe7e98c0e72c328e603b957a65ef534b
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Wed May 13 10:12:27 2015 +0200

atspi: do not return ELM_ATSPI_STATE_ACTIVE when widget is enabled.

According to atspi specification ATSPI_STATE_ACTIVE is reserved
only for windows having keyboard focus.
---
 src/lib/elm_widget.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 8f48d6b..d27b27d 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -4457,7 +4457,6 @@ 
_elm_widget_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_item EINA_U
  STATE_TYPE_SET(states, ELM_ATSPI_STATE_FOCUSED);
if (!elm_object_item_disabled_get(eo_item))
  {
-STATE_TYPE_SET(states, ELM_ATSPI_STATE_ACTIVE);
 STATE_TYPE_SET(states, ELM_ATSPI_STATE_ENABLED);
 STATE_TYPE_SET(states, ELM_ATSPI_STATE_SENSITIVE);
  }
@@ -5640,7 +5639,6 @@ 
_elm_widget_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Widget_Sma
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_SENSITIVE);
  }
 

-- 




[EGIT] [core/elementary] master 01/04: atspi: handle state change notifications in on_focus function

2015-05-13 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=16fc2b347835b165ab033e3a502e0a08d33f41ba

commit 16fc2b347835b165ab033e3a502e0a08d33f41ba
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Wed May 13 09:57:16 2015 +0200

atspi: handle state change notifications in on_focus function
---
 src/lib/elm_entry.c  |  4 
 src/lib/elm_layout.c |  4 
 src/lib/elm_widget.c | 13 -
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index 9e2e743..16b0fbd 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -1099,6 +1099,8 @@ _elm_entry_elm_widget_on_focus(Eo *obj, Elm_Entry_Data 
*sd)
 !edje_object_part_text_imf_context_get(sd-entry_edje, elm.text))
   elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
 evas_object_smart_callback_call(obj, SIG_FOCUSED, NULL);
+if (_elm_config-atspi_mode)
+  elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
 _return_key_enabled_check(obj);
 _validate(obj);
  }
@@ -1110,6 +1112,8 @@ _elm_entry_elm_widget_on_focus(Eo *obj, Elm_Entry_Data 
*sd)
 !edje_object_part_text_imf_context_get(sd-entry_edje, elm.text))
   elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF);
 evas_object_smart_callback_call(obj, SIG_UNFOCUSED, NULL);
+if (_elm_config-atspi_mode)
+  elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
 
 if (_elm_config-selection_clear_enable)
   {
diff --git a/src/lib/elm_layout.c b/src/lib/elm_layout.c
index f04b80f..06adc9d 100644
--- a/src/lib/elm_layout.c
+++ b/src/lib/elm_layout.c
@@ -406,12 +406,16 @@ _elm_layout_elm_widget_on_focus(Eo *obj, 
Elm_Layout_Smart_Data *_pd EINA_UNUSED)
 elm_layout_signal_emit(obj, elm,action,focus, elm);
 evas_object_focus_set(wd-resize_obj, EINA_TRUE);
 evas_object_smart_callback_call(obj, SIG_LAYOUT_FOCUSED, NULL);
+if (_elm_config-atspi_mode)
+  elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
  }
else
  {
 elm_layout_signal_emit(obj, elm,action,unfocus, elm);
 evas_object_focus_set(wd-resize_obj, EINA_FALSE);
 evas_object_smart_callback_call(obj, SIG_LAYOUT_UNFOCUSED, NULL);
+if (_elm_config-atspi_mode)
+  elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
  }
 
return EINA_TRUE;
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 1763bc5..8f48d6b 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -5430,13 +5430,6 @@ elm_widget_tree_dot_dump(const Evas_Object *top,
 #endif
 }
 
-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)
 {
@@ -5452,8 +5445,6 @@ _elm_widget_eo_base_constructor(Eo *obj, 
Elm_Widget_Smart_Data *sd)
sd-on_create = EINA_FALSE;
 
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
@@ -5479,12 +5470,16 @@ _elm_widget_on_focus(Eo *obj, Elm_Widget_Smart_Data *sd)
  if (!sd-resize_obj)
evas_object_focus_set(obj, EINA_TRUE);
  evas_object_smart_callback_call(obj, SIG_WIDGET_FOCUSED, NULL);
+ if (_elm_config-atspi_mode)
+   elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
   }
 else
   {
  if (!sd-resize_obj)
evas_object_focus_set(obj, EINA_FALSE);
  evas_object_smart_callback_call(obj, SIG_WIDGET_UNFOCUSED, NULL);
+ if (_elm_config-atspi_mode)
+   elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
   }
  }
else

-- 




[EGIT] [core/elementary] master 03/04: atspi: set FOCUSABLE state only when widget has no focusable children

2015-05-13 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=020ad4df7b737fa7225b4e98e3ffd78c11de71d6

commit 020ad4df7b737fa7225b4e98e3ffd78c11de71d6
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Wed May 13 11:38:20 2015 +0200

atspi: set FOCUSABLE state only when widget has no focusable children

AT-SPI2 specification states that active window can have only one widget
with FOCUSED state. This differs from elementary design which assumes
that whole elementary widget tree branch is focused.
Patch assumes that if a widget have no focusable children and can have
focus it can be marked as FOCUSABLE on atspi bus.
---
 src/lib/elm_layout.c |  4 ++--
 src/lib/elm_widget.c | 15 +--
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/lib/elm_layout.c b/src/lib/elm_layout.c
index 06adc9d..5fa33e0 100644
--- a/src/lib/elm_layout.c
+++ b/src/lib/elm_layout.c
@@ -406,7 +406,7 @@ _elm_layout_elm_widget_on_focus(Eo *obj, 
Elm_Layout_Smart_Data *_pd EINA_UNUSED)
 elm_layout_signal_emit(obj, elm,action,focus, elm);
 evas_object_focus_set(wd-resize_obj, EINA_TRUE);
 evas_object_smart_callback_call(obj, SIG_LAYOUT_FOCUSED, NULL);
-if (_elm_config-atspi_mode)
+if (_elm_config-atspi_mode  !elm_widget_child_can_focus_get(obj))
   elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
  }
else
@@ -414,7 +414,7 @@ _elm_layout_elm_widget_on_focus(Eo *obj, 
Elm_Layout_Smart_Data *_pd EINA_UNUSED)
 elm_layout_signal_emit(obj, elm,action,unfocus, elm);
 evas_object_focus_set(wd-resize_obj, EINA_FALSE);
 evas_object_smart_callback_call(obj, SIG_LAYOUT_UNFOCUSED, NULL);
-if (_elm_config-atspi_mode)
+if (_elm_config-atspi_mode  !elm_widget_child_can_focus_get(obj))
   elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
  }
 
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index d27b27d..27221d5 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -5469,7 +5469,7 @@ _elm_widget_on_focus(Eo *obj, Elm_Widget_Smart_Data *sd)
  if (!sd-resize_obj)
evas_object_focus_set(obj, EINA_TRUE);
  evas_object_smart_callback_call(obj, SIG_WIDGET_FOCUSED, NULL);
- if (_elm_config-atspi_mode)
+ if (_elm_config-atspi_mode  
!elm_widget_child_can_focus_get(obj))
elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
   }
 else
@@ -5477,7 +5477,7 @@ _elm_widget_on_focus(Eo *obj, Elm_Widget_Smart_Data *sd)
  if (!sd-resize_obj)
evas_object_focus_set(obj, EINA_FALSE);
  evas_object_smart_callback_call(obj, SIG_WIDGET_UNFOCUSED, NULL);
- if (_elm_config-atspi_mode)
+ if (_elm_config-atspi_mode  
!elm_widget_child_can_focus_get(obj))
elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
   }
  }
@@ -5632,10 +5632,13 @@ 
_elm_widget_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Widget_Sma
   ((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_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);

-- 




[EGIT] [core/elementary] master 02/02: atspi: add component interface to elm_widget_item objects.

2015-05-12 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=fb4608d9dae9123f451dd1ebc4c10c2b2c996884

commit fb4608d9dae9123f451dd1ebc4c10c2b2c996884
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Tue May 12 15:30:52 2015 +0200

atspi: add component interface to elm_widget_item objects.
---
 src/lib/elm_widget.c   | 56 ++
 src/lib/elm_widget_item.eo |  8 ++-
 2 files changed, 63 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 4bb2a59..1763bc5 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -5702,5 +5702,61 @@ 
_elm_widget_elm_interface_atspi_accessible_relation_set_get(Eo *obj, Elm_Widget_
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;
+}
+
 #include elm_widget_item.eo.c
 #include elm_widget.eo.c
diff --git a/src/lib/elm_widget_item.eo b/src/lib/elm_widget_item.eo
index c40ce28..771edac 100644
--- a/src/lib/elm_widget_item.eo
+++ b/src/lib/elm_widget_item.eo
@@ -1,4 +1,5 @@
-class Elm.Widget_Item(Eo.Base, Elm_Interface_Atspi_Accessible)
+class Elm.Widget_Item(Eo.Base, Elm_Interface_Atspi_Accessible,
+  Elm_Interface_Atspi_Component)
 {
   eo_prefix: elm_wdg_item;
   legacy_prefix: elm_object_item;
@@ -729,5 +730,10 @@ class Elm.Widget_Item(Eo.Base, 
Elm_Interface_Atspi_Accessible)
Elm_Interface_Atspi_Accessible.role.set;
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;
   }
 }

-- 




[EGIT] [core/elementary] master 01/01: gengrid: fix mem leak occuring when getting name from atspi interface

2015-05-04 Thread Lukasz Stanislawski
stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=2123a813459f291553303c29d834436d2058cb6c

commit 2123a813459f291553303c29d834436d2058cb6c
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Mon May 4 11:45:06 2015 +0200

gengrid: fix mem leak occuring when getting name from atspi interface
---
 src/lib/elm_gengrid.c | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index f22886e..696292c 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -4956,17 +4956,19 @@ 
_elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED,
 
 EINA_LIST_FREE(texts, key)
   {
- char *s = it-itc-func.text_get
+ char *str_markup = it-itc-func.text_get
 ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key);
 
- s = _elm_util_mkup_to_text(s);
+ char *str_utf8 = _elm_util_mkup_to_text(str_markup);
 
- if (s)
+ free(str_markup);
+
+ if (str_utf8)
{
   if (eina_strbuf_length_get(buf)  0)
 eina_strbuf_append(buf, , );
-  eina_strbuf_append(buf, s);
-  free(s);
+  eina_strbuf_append(buf, str_utf8);
+  free(str_utf8);
}
   }
  }

-- 




[EGIT] [core/elementary] elementary-1.13 01/01: atspi: add missing signals array sentiel.

2015-04-16 Thread Lukasz Stanislawski
stanluk pushed a commit to branch elementary-1.13.

http://git.enlightenment.org/core/elementary.git/commit/?id=0c80bcfbfbfdf29f0bb3bb0c5aa212aa8dd96e76

commit 0c80bcfbfbfdf29f0bb3bb0c5aa212aa8dd96e76
Author: Lukasz Stanislawski l.stanisl...@samsung.com
Date:   Thu Apr 16 13:30:43 2015 +0200

atspi: add missing signals array sentiel.

@fix
---
 src/lib/elm_atspi_bridge.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index a3f5e24..ead3ee0 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -183,6 +183,7 @@ static const Eldbus_Signal _event_obj_signals[] = {
[ATSPI_OBJECT_EVENT_TEXT_ATTRIBUTES_CHANGED] = {TextAttributesChanged, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
[ATSPI_OBJECT_EVENT_TEXT_CARET_MOVED] = {TextCaretMoved, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
[ATSPI_OBJECT_EVENT_ATTRIBUTES_CHANGED] = {AttributesChanged, 
ELDBUS_ARGS({siiv(so), NULL}), 0},
+   {NULL, ELDBUS_ARGS({NULL, NULL}), 0}
 };
 
 static const Eldbus_Signal _window_obj_signals[] = {

--