summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Stanislawski <l.stanislaws@samsung.com>2014-07-25 10:33:19 +0200
committerLukasz Stanislawski <l.stanislaws@samsung.com>2014-07-25 11:58:16 +0200
commit4dcb2df11c1bb99e310f43e2951bdfb87e43f057 (patch)
tree25b468eb70e694f2e1cdde8b36e8aaefb49b369a
parent06cd087da13b7703725b65074b556e435dbf28c9 (diff)
atspi: expose more actions through atspi bus.
Summary: Main purpose of exposing widget actions and keyboard shortcuts is to allow accessibility clients to implement alternative methods of GUI navigation. Reviewers: z.kosinski Reviewed By: z.kosinski Subscribers: seoz Differential Revision: https://phab.enlightenment.org/D1227
-rw-r--r--src/lib/Makefile.am1
-rw-r--r--src/lib/elc_ctxpopup.c19
-rw-r--r--src/lib/elc_ctxpopup.eo3
-rw-r--r--src/lib/elc_fileselector.c15
-rw-r--r--src/lib/elc_fileselector.eo4
-rw-r--r--src/lib/elc_hoversel.c17
-rw-r--r--src/lib/elc_hoversel.eo4
-rw-r--r--src/lib/elc_naviframe.c9
-rw-r--r--src/lib/elc_player.c16
-rw-r--r--src/lib/elc_player.eo3
-rw-r--r--src/lib/elc_popup.c19
-rw-r--r--src/lib/elc_popup.eo3
-rw-r--r--src/lib/elm_atspi_bridge.c14
-rw-r--r--src/lib/elm_button.c9
-rw-r--r--src/lib/elm_calendar.c19
-rw-r--r--src/lib/elm_calendar.eo3
-rw-r--r--src/lib/elm_check.c9
-rw-r--r--src/lib/elm_colorselector.c17
-rw-r--r--src/lib/elm_colorselector.eo3
-rw-r--r--src/lib/elm_diskselector.c17
-rw-r--r--src/lib/elm_diskselector.eo4
-rw-r--r--src/lib/elm_flipselector.c15
-rw-r--r--src/lib/elm_flipselector.eo3
-rw-r--r--src/lib/elm_gengrid.c27
-rw-r--r--src/lib/elm_genlist.c25
-rw-r--r--src/lib/elm_genlist.eo4
-rw-r--r--src/lib/elm_image.c9
-rw-r--r--src/lib/elm_interface_atspi_action.eo5
-rw-r--r--src/lib/elm_interface_atspi_widget_action.c42
-rw-r--r--src/lib/elm_interface_atspi_widget_action.eo2
-rw-r--r--src/lib/elm_interface_atspi_widget_action.h10
-rw-r--r--src/lib/elm_list.c27
-rw-r--r--src/lib/elm_list.eo4
-rw-r--r--src/lib/elm_map.c21
-rw-r--r--src/lib/elm_map.eo4
-rw-r--r--src/lib/elm_panel.c14
-rw-r--r--src/lib/elm_panel.eo4
-rw-r--r--src/lib/elm_photocam.c21
-rw-r--r--src/lib/elm_photocam.eo4
-rw-r--r--src/lib/elm_radio.c14
-rw-r--r--src/lib/elm_radio.eo3
-rw-r--r--src/lib/elm_scroller.c21
-rw-r--r--src/lib/elm_scroller.eo4
-rw-r--r--src/lib/elm_slider.c17
-rw-r--r--src/lib/elm_slider.eo4
-rw-r--r--src/lib/elm_slideshow.c16
-rw-r--r--src/lib/elm_slideshow.eo3
-rw-r--r--src/lib/elm_spinner.c18
-rw-r--r--src/lib/elm_spinner.eo4
-rw-r--r--src/lib/elm_toolbar.c18
-rw-r--r--src/lib/elm_toolbar.eo4
-rw-r--r--src/lib/elm_video.c16
-rw-r--r--src/lib/elm_video.eo3
-rw-r--r--src/lib/elm_win.c19
-rw-r--r--src/lib/elm_win.eo4
-rw-r--r--src/tests/elm_cxx_suite.cc1
56 files changed, 565 insertions, 53 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index efff27023..11e5e3638 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -50,6 +50,7 @@ includesunstable_HEADERS = \
50elm_gen_common.h \ 50elm_gen_common.h \
51elm_interface_atspi_accessible.h \ 51elm_interface_atspi_accessible.h \
52elm_interface_atspi_text.h \ 52elm_interface_atspi_text.h \
53elm_interface_atspi_widget_action.h \
53elm_interface_fileselector.h \ 54elm_interface_fileselector.h \
54elm_interface_scrollable.h \ 55elm_interface_scrollable.h \
55elm_widget.h \ 56elm_widget.h \
diff --git a/src/lib/elc_ctxpopup.c b/src/lib/elc_ctxpopup.c
index a2ae83d25..072638d20 100644
--- a/src/lib/elc_ctxpopup.c
+++ b/src/lib/elc_ctxpopup.c
@@ -11,6 +11,10 @@
11#include "elm_interface_atspi_accessible.h" 11#include "elm_interface_atspi_accessible.h"
12#include "elm_interface_atspi_accessible.eo.h" 12#include "elm_interface_atspi_accessible.eo.h"
13 13
14#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
15#include "elm_interface_atspi_widget_action.h"
16#include "elm_interface_atspi_widget_action.eo.h"
17
14#define MY_CLASS ELM_CTXPOPUP_CLASS 18#define MY_CLASS ELM_CTXPOPUP_CLASS
15 19
16#define MY_CLASS_NAME "Elm_Ctxpopup" 20#define MY_CLASS_NAME "Elm_Ctxpopup"
@@ -1436,4 +1440,19 @@ _item_new(Eo *obj,
1436 return item; 1440 return item;
1437} 1441}
1438 1442
1443EOLIAN static const Elm_Atspi_Action*
1444_elm_ctxpopup_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Ctxpopup_Data *sd EINA_UNUSED)
1445{
1446 static Elm_Atspi_Action atspi_actions[] = {
1447 { "move,previous", "move", "previous", _key_action_move},
1448 { "move,next", "move", "next", _key_action_move},
1449 { "move,left", "move", "left", _key_action_move},
1450 { "move,right", "move", "right", _key_action_move},
1451 { "move,up", "move", "up", _key_action_move},
1452 { "move,down", "move", "down", _key_action_move},
1453 { NULL, NULL, NULL, NULL }
1454 };
1455 return &atspi_actions[0];
1456}
1457
1439#include "elc_ctxpopup.eo.c" 1458#include "elc_ctxpopup.eo.c"
diff --git a/src/lib/elc_ctxpopup.eo b/src/lib/elc_ctxpopup.eo
index b9ffdbc67..4dc74d585 100644
--- a/src/lib/elc_ctxpopup.eo
+++ b/src/lib/elc_ctxpopup.eo
@@ -1,4 +1,4 @@
1class Elm_Ctxpopup (Elm_Layout) 1class Elm_Ctxpopup (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_ctxpopup; 3 eo_prefix: elm_obj_ctxpopup;
4 properties { 4 properties {
@@ -263,6 +263,7 @@ class Elm_Ctxpopup (Elm_Layout)
263 Elm_Container.content_unset; 263 Elm_Container.content_unset;
264 Elm_Layout.sub_object_add_enable; 264 Elm_Layout.sub_object_add_enable;
265 Elm_Layout.sizing_eval; 265 Elm_Layout.sizing_eval;
266 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
266 } 267 }
267 events { 268 events {
268 language,changed; 269 language,changed;
diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c
index 106b91039..cf91b176a 100644
--- a/src/lib/elc_fileselector.c
+++ b/src/lib/elc_fileselector.c
@@ -18,6 +18,10 @@
18#include "elm_interface_atspi_accessible.h" 18#include "elm_interface_atspi_accessible.h"
19#include "elm_interface_atspi_accessible.eo.h" 19#include "elm_interface_atspi_accessible.eo.h"
20 20
21#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
22#include "elm_interface_atspi_widget_action.h"
23#include "elm_interface_atspi_widget_action.eo.h"
24
21#define MY_CLASS ELM_FILESELECTOR_CLASS 25#define MY_CLASS ELM_FILESELECTOR_CLASS
22 26
23#define MY_CLASS_NAME "Elm_Fileselector" 27#define MY_CLASS_NAME "Elm_Fileselector"
@@ -2320,4 +2324,15 @@ _elm_fileselector_class_destructor(Eo_Class *klass EINA_UNUSED)
2320 } 2324 }
2321} 2325}
2322 2326
2327EOLIAN const Elm_Atspi_Action *
2328_elm_fileselector_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *pd EINA_UNUSED)
2329{
2330 static Elm_Atspi_Action atspi_actions[] = {
2331 { "select", "select", NULL, _key_action_select },
2332 { "escape", "escape", NULL, _key_action_escape},
2333 { NULL, NULL, NULL, NULL}
2334 };
2335 return &atspi_actions[0];
2336}
2337
2323#include "elc_fileselector.eo.c" 2338#include "elc_fileselector.eo.c"
diff --git a/src/lib/elc_fileselector.eo b/src/lib/elc_fileselector.eo
index 255da19c3..9b85ae434 100644
--- a/src/lib/elc_fileselector.eo
+++ b/src/lib/elc_fileselector.eo
@@ -1,4 +1,5 @@
1class Elm_Fileselector (Elm_Layout, Elm_Interface_Fileselector) 1class Elm_Fileselector (Elm_Layout, Elm_Interface_Fileselector,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_fileselector; 4 eo_prefix: elm_obj_fileselector;
4 properties { 5 properties {
@@ -61,6 +62,7 @@ class Elm_Fileselector (Elm_Layout, Elm_Interface_Fileselector)
61 Elm_Interface_Fileselector.multi_select; 62 Elm_Interface_Fileselector.multi_select;
62 Elm_Interface_Fileselector.folder_only; 63 Elm_Interface_Fileselector.folder_only;
63 Elm_Interface_Fileselector.mode; 64 Elm_Interface_Fileselector.mode;
65 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
64 } 66 }
65 events { 67 events {
66 focused; 68 focused;
diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c
index 612ba6c83..a7d43e95d 100644
--- a/src/lib/elc_hoversel.c
+++ b/src/lib/elc_hoversel.c
@@ -11,6 +11,10 @@
11#include "elm_interface_atspi_accessible.h" 11#include "elm_interface_atspi_accessible.h"
12#include "elm_interface_atspi_accessible.eo.h" 12#include "elm_interface_atspi_accessible.eo.h"
13 13
14#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
15#include "elm_interface_atspi_widget_action.h"
16#include "elm_interface_atspi_widget_action.eo.h"
17
14#define MY_CLASS ELM_HOVERSEL_CLASS 18#define MY_CLASS ELM_HOVERSEL_CLASS
15 19
16#define MY_CLASS_NAME "Elm_Hoversel" 20#define MY_CLASS_NAME "Elm_Hoversel"
@@ -591,4 +595,17 @@ _elm_hoversel_class_constructor(Eo_Class *klass)
591 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 595 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
592} 596}
593 597
598EOLIAN const Elm_Atspi_Action *
599_elm_hoversel_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Hoversel_Data *pd EINA_UNUSED)
600{
601 static Elm_Atspi_Action atspi_actions[] = {
602 { "move,up", "move", "up", _key_action_move},
603 { "move,down", "move", "down", _key_action_move},
604 { "move,left", "move", "left", _key_action_move},
605 { "move,right", "move", "right", _key_action_move},
606 { NULL, NULL, NULL, NULL}
607 };
608 return &atspi_actions[0];
609}
610
594#include "elc_hoversel.eo.c" 611#include "elc_hoversel.eo.c"
diff --git a/src/lib/elc_hoversel.eo b/src/lib/elc_hoversel.eo
index 385356ec3..47ad95da5 100644
--- a/src/lib/elc_hoversel.eo
+++ b/src/lib/elc_hoversel.eo
@@ -1,4 +1,5 @@
1class Elm_Hoversel (Elm_Button, Evas.Selectable_Interface) 1class Elm_Hoversel (Elm_Button, Evas.Selectable_Interface,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_hoversel; 4 eo_prefix: elm_obj_hoversel;
4 properties { 5 properties {
@@ -149,6 +150,7 @@ class Elm_Hoversel (Elm_Button, Evas.Selectable_Interface)
149 Elm_Widget.translate; 150 Elm_Widget.translate;
150 Elm_Widget.event; 151 Elm_Widget.event;
151 Elm_Button.admits_autorepeat.get; 152 Elm_Button.admits_autorepeat.get;
153 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
152 } 154 }
153 events { 155 events {
154 selected; 156 selected;
diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c
index cefcfd493..2e58c44b9 100644
--- a/src/lib/elc_naviframe.c
+++ b/src/lib/elc_naviframe.c
@@ -12,6 +12,7 @@
12#include "elm_interface_atspi_accessible.eo.h" 12#include "elm_interface_atspi_accessible.eo.h"
13 13
14#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED 14#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
15#include "elm_interface_atspi_widget_action.h"
15#include "elm_interface_atspi_widget_action.eo.h" 16#include "elm_interface_atspi_widget_action.eo.h"
16 17
17#define MY_CLASS ELM_NAVIFRAME_CLASS 18#define MY_CLASS ELM_NAVIFRAME_CLASS
@@ -1888,10 +1889,14 @@ _elm_naviframe_class_constructor(Eo_Class *klass)
1888 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 1889 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
1889} 1890}
1890 1891
1891EOLIAN const Elm_Action * 1892EOLIAN const Elm_Atspi_Action *
1892_elm_naviframe_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *pd EINA_UNUSED) 1893_elm_naviframe_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *pd EINA_UNUSED)
1893{ 1894{
1894 return &key_actions[0]; 1895 static Elm_Atspi_Action atspi_actions[] = {
1896 { "top_item_get", "top_item_get", NULL, _key_action_top_item_get },
1897 { NULL, NULL, NULL, NULL }
1898 };
1899 return &atspi_actions[0];
1895} 1900}
1896 1901
1897#include "elc_naviframe.eo.c" 1902#include "elc_naviframe.eo.c"
diff --git a/src/lib/elc_player.c b/src/lib/elc_player.c
index 3da4abee9..3733d353f 100644
--- a/src/lib/elc_player.c
+++ b/src/lib/elc_player.c
@@ -13,6 +13,10 @@
13#include "elm_interface_atspi_accessible.h" 13#include "elm_interface_atspi_accessible.h"
14#include "elm_interface_atspi_accessible.eo.h" 14#include "elm_interface_atspi_accessible.eo.h"
15 15
16#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
17#include "elm_interface_atspi_widget_action.h"
18#include "elm_interface_atspi_widget_action.eo.h"
19
16#define MY_CLASS ELM_PLAYER_CLASS 20#define MY_CLASS ELM_PLAYER_CLASS
17 21
18#define MY_CLASS_NAME "Elm_Player" 22#define MY_CLASS_NAME "Elm_Player"
@@ -722,4 +726,16 @@ _elm_player_class_constructor(Eo_Class *klass)
722 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 726 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
723} 727}
724 728
729EOLIAN const Elm_Atspi_Action *
730_elm_player_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Player_Data *pd EINA_UNUSED)
731{
732 static Elm_Atspi_Action atspi_actions[] = {
733 { "move,left", "move", "left", _key_action_move},
734 { "move,right", "move", "right", _key_action_move},
735 { "play", "play", NULL, _key_action_play},
736 { NULL, NULL, NULL, NULL}
737 };
738 return &atspi_actions[0];
739}
740
725#include "elc_player.eo.c" 741#include "elc_player.eo.c"
diff --git a/src/lib/elc_player.eo b/src/lib/elc_player.eo
index 84ebbd415..b85ea3985 100644
--- a/src/lib/elc_player.eo
+++ b/src/lib/elc_player.eo
@@ -1,4 +1,4 @@
1class Elm_Player (Elm_Layout) 1class Elm_Player (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_player; 3 eo_prefix: elm_obj_player;
4 implements { 4 implements {
@@ -10,6 +10,7 @@ class Elm_Player (Elm_Layout)
10 Elm_Widget.event; 10 Elm_Widget.event;
11 Elm_Container.content_set; 11 Elm_Container.content_set;
12 Elm_Layout.sizing_eval; 12 Elm_Layout.sizing_eval;
13 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
13 } 14 }
14 events { 15 events {
15 forward,clicked; 16 forward,clicked;
diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c
index c5a3d7843..65233d989 100644
--- a/src/lib/elc_popup.c
+++ b/src/lib/elc_popup.c
@@ -10,6 +10,10 @@
10#include "elm_interface_atspi_accessible.h" 10#include "elm_interface_atspi_accessible.h"
11#include "elm_interface_atspi_accessible.eo.h" 11#include "elm_interface_atspi_accessible.eo.h"
12 12
13#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
14#include "elm_interface_atspi_widget_action.h"
15#include "elm_interface_atspi_widget_action.eo.h"
16
13#define MY_CLASS ELM_POPUP_CLASS 17#define MY_CLASS ELM_POPUP_CLASS
14 18
15#define MY_CLASS_NAME "Elm_Popup" 19#define MY_CLASS_NAME "Elm_Popup"
@@ -1692,4 +1696,19 @@ _elm_popup_class_constructor(Eo_Class *klass)
1692 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 1696 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
1693} 1697}
1694 1698
1699EOLIAN const Elm_Atspi_Action *
1700_elm_popup_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Popup_Data *pd EINA_UNUSED)
1701{
1702 static Elm_Atspi_Action atspi_actions[] = {
1703 { "move,previous", "move", "previous", _key_action_move},
1704 { "move,next", "move", "next", _key_action_move},
1705 { "move,left", "move", "left", _key_action_move},
1706 { "move,right", "move", "right", _key_action_move},
1707 { "move,up", "move", "up", _key_action_move},
1708 { "move,down", "move", "down", _key_action_move},
1709 { NULL, NULL, NULL, NULL }
1710 };
1711 return &atspi_actions[0];
1712}
1713
1695#include "elc_popup.eo.c" 1714#include "elc_popup.eo.c"
diff --git a/src/lib/elc_popup.eo b/src/lib/elc_popup.eo
index 00618eb9b..c3b73c5de 100644
--- a/src/lib/elc_popup.eo
+++ b/src/lib/elc_popup.eo
@@ -1,4 +1,4 @@
1class Elm_Popup (Elm_Layout) 1class Elm_Popup (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_popup; 3 eo_prefix: elm_obj_popup;
4 properties { 4 properties {
@@ -177,6 +177,7 @@ class Elm_Popup (Elm_Layout)
177 Elm_Layout.text_set; 177 Elm_Layout.text_set;
178 Elm_Layout.text_get; 178 Elm_Layout.text_get;
179 Elm_Layout.sizing_eval; 179 Elm_Layout.sizing_eval;
180 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
180 } 181 }
181 events { 182 events {
182 block,clicked; 183 block,clicked;
diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 66d63ebb6..e83757c91 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -921,7 +921,8 @@ _action_localized_name_get(const Eldbus_Service_Interface *iface, const Eldbus_M
921static Eldbus_Message * 921static Eldbus_Message *
922_action_key_binding_get(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg) 922_action_key_binding_get(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg)
923{ 923{
924 const char *key, *obj_path = eldbus_service_object_path_get(iface); 924 const char *obj_path = eldbus_service_object_path_get(iface);
925 char *key;
925 Eo *obj = _access_object_from_path(obj_path); 926 Eo *obj = _access_object_from_path(obj_path);
926 int idx; 927 int idx;
927 Eldbus_Message *ret; 928 Eldbus_Message *ret;
@@ -933,8 +934,8 @@ _action_key_binding_get(const Eldbus_Service_Interface *iface, const Eldbus_Mess
933 EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL); 934 EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
934 935
935 eo_do(obj, key = elm_interface_atspi_action_keybinding_get(idx)); 936 eo_do(obj, key = elm_interface_atspi_action_keybinding_get(idx));
936 key = key ? key : ""; 937 eldbus_message_arguments_append(ret, "s", key ? key : "");
937 eldbus_message_arguments_append(ret, "s", key); 938 if (key) free(key);
938 939
939 return ret; 940 return ret;
940} 941}
@@ -962,12 +963,13 @@ _action_actions_get(const Eldbus_Service_Interface *iface, const Eldbus_Message
962 int id = 0; 963 int id = 0;
963 EINA_LIST_FREE(actions, action) 964 EINA_LIST_FREE(actions, action)
964 { 965 {
965 const char *key, *descr; 966 const char *descr;
967 char *key;
966 eo_do(obj, key = elm_interface_atspi_action_keybinding_get(id)); 968 eo_do(obj, key = elm_interface_atspi_action_keybinding_get(id));
967 key = key ? key : "";
968 eo_do(obj, descr = elm_interface_atspi_action_description_get(id)); 969 eo_do(obj, descr = elm_interface_atspi_action_description_get(id));
969 descr = descr ? descr : ""; 970 descr = descr ? descr : "";
970 eldbus_message_iter_arguments_append(iter_array, "sss", action, descr, key); 971 eldbus_message_iter_arguments_append(iter_array, "sss", action, descr, key ? key : "");
972 if (key) free(key);
971 id++; 973 id++;
972 } 974 }
973 975
diff --git a/src/lib/elm_button.c b/src/lib/elm_button.c
index d9376c08f..418b79157 100644
--- a/src/lib/elm_button.c
+++ b/src/lib/elm_button.c
@@ -11,6 +11,7 @@
11 11
12// ATSPI Accessibility 12// ATSPI Accessibility
13#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED 13#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
14#include "elm_interface_atspi_widget_action.h"
14#include "elm_interface_atspi_widget_action.eo.h" 15#include "elm_interface_atspi_widget_action.eo.h"
15 16
16#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED 17#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
@@ -427,10 +428,14 @@ _elm_button_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Butto
427 return EINA_FALSE; 428 return EINA_FALSE;
428} 429}
429 430
430EOLIAN const Elm_Action * 431EOLIAN const Elm_Atspi_Action *
431_elm_button_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Button_Data *pd EINA_UNUSED) 432_elm_button_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Button_Data *pd EINA_UNUSED)
432{ 433{
433 return &key_actions[0]; 434 static Elm_Atspi_Action atspi_actions[] = {
435 { "activate", "activate", NULL, _key_action_activate },
436 { NULL, NULL, NULL, NULL}
437 };
438 return &atspi_actions[0];
434} 439}
435 440
436static void 441static void
diff --git a/src/lib/elm_calendar.c b/src/lib/elm_calendar.c
index 976c9bb1b..1bde95d89 100644
--- a/src/lib/elm_calendar.c
+++ b/src/lib/elm_calendar.c
@@ -10,6 +10,10 @@
10#include "elm_interface_atspi_accessible.h" 10#include "elm_interface_atspi_accessible.h"
11#include "elm_interface_atspi_accessible.eo.h" 11#include "elm_interface_atspi_accessible.eo.h"
12 12
13#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
14#include "elm_interface_atspi_widget_action.h"
15#include "elm_interface_atspi_widget_action.eo.h"
16
13#define MY_CLASS ELM_CALENDAR_CLASS 17#define MY_CLASS ELM_CALENDAR_CLASS
14 18
15#define MY_CLASS_NAME "Elm_Calendar" 19#define MY_CLASS_NAME "Elm_Calendar"
@@ -1435,4 +1439,19 @@ _elm_calendar_class_constructor(Eo_Class *klass)
1435 _elm_calendar_smart_focus_next_enable = EINA_TRUE; 1439 _elm_calendar_smart_focus_next_enable = EINA_TRUE;
1436} 1440}
1437 1441
1442EOLIAN static const Elm_Atspi_Action*
1443_elm_calendar_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Calendar_Data *sd EINA_UNUSED)
1444{
1445 static Elm_Atspi_Action atspi_actions[] = {
1446 { "move,prior", "move", "prior", _key_action_move},
1447 { "move,next", "move", "next", _key_action_move},
1448 { "move,left", "move", "left", _key_action_move},
1449 { "move,right", "move", "right", _key_action_move},
1450 { "move,up", "move", "up", _key_action_move},
1451 { "move,down", "move", "down", _key_action_move},
1452 { NULL, NULL, NULL, NULL }
1453 };
1454 return &atspi_actions[0];
1455}
1456
1438#include "elm_calendar.eo.c" 1457#include "elm_calendar.eo.c"
diff --git a/src/lib/elm_calendar.eo b/src/lib/elm_calendar.eo
index 0d30bcaed..2156ef685 100644
--- a/src/lib/elm_calendar.eo
+++ b/src/lib/elm_calendar.eo
@@ -1,4 +1,4 @@
1class Elm_Calendar (Elm_Layout) 1class Elm_Calendar (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_calendar; 3 eo_prefix: elm_obj_calendar;
4 properties { 4 properties {
@@ -402,6 +402,7 @@ class Elm_Calendar (Elm_Layout)
402 Elm_Widget.focus_next; 402 Elm_Widget.focus_next;
403 Elm_Widget.event; 403 Elm_Widget.event;
404 Elm_Layout.sizing_eval; 404 Elm_Layout.sizing_eval;
405 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
405 } 406 }
406 events { 407 events {
407 changed; 408 changed;
diff --git a/src/lib/elm_check.c b/src/lib/elm_check.c
index f64941020..9a6373651 100644
--- a/src/lib/elm_check.c
+++ b/src/lib/elm_check.c
@@ -13,6 +13,7 @@
13#include "elm_interface_atspi_accessible.eo.h" 13#include "elm_interface_atspi_accessible.eo.h"
14 14
15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED 15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
16#include "elm_interface_atspi_widget_action.h"
16#include "elm_interface_atspi_widget_action.eo.h" 17#include "elm_interface_atspi_widget_action.eo.h"
17 18
18#define MY_CLASS ELM_CHECK_CLASS 19#define MY_CLASS ELM_CHECK_CLASS
@@ -437,10 +438,14 @@ _elm_check_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Check_
437 return EINA_FALSE; 438 return EINA_FALSE;
438} 439}
439 440
440EOLIAN const Elm_Action * 441EOLIAN const Elm_Atspi_Action *
441_elm_check_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Check_Data *pd EINA_UNUSED) 442_elm_check_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Check_Data *pd EINA_UNUSED)
442{ 443{
443 return &key_actions[0]; 444 static Elm_Atspi_Action atspi_action[] = {
445 { "activate", "activate", NULL, _key_action_activate },
446 { NULL, NULL, NULL, NULL }
447 };
448 return &atspi_action[0];
444} 449}
445 450
446static void 451static void
diff --git a/src/lib/elm_colorselector.c b/src/lib/elm_colorselector.c
index dad612fdb..e57294d0a 100644
--- a/src/lib/elm_colorselector.c
+++ b/src/lib/elm_colorselector.c
@@ -10,6 +10,10 @@
10#include "elm_interface_atspi_accessible.h" 10#include "elm_interface_atspi_accessible.h"
11#include "elm_interface_atspi_accessible.eo.h" 11#include "elm_interface_atspi_accessible.eo.h"
12 12
13#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
14#include "elm_interface_atspi_widget_action.h"
15#include "elm_interface_atspi_widget_action.eo.h"
16
13#define MY_CLASS ELM_COLORSELECTOR_CLASS 17#define MY_CLASS ELM_COLORSELECTOR_CLASS
14 18
15#define MY_CLASS_NAME "Elm_Colorselector" 19#define MY_CLASS_NAME "Elm_Colorselector"
@@ -2145,4 +2149,17 @@ _elm_colorselector_class_constructor(Eo_Class *klass)
2145 _elm_colorselector_smart_focus_next_enable = EINA_TRUE; 2149 _elm_colorselector_smart_focus_next_enable = EINA_TRUE;
2146} 2150}
2147 2151
2152EOLIAN static const Elm_Atspi_Action*
2153_elm_colorselector_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Colorselector_Data *sd EINA_UNUSED)
2154{
2155 static Elm_Atspi_Action atspi_actions[] = {
2156 { "move,left", "move", "left", _key_action_move},
2157 { "move,right", "move", "right", _key_action_move},
2158 { "move,up", "move", "up", _key_action_move},
2159 { "move,down", "move", "down", _key_action_move},
2160 { NULL, NULL, NULL, NULL }
2161 };
2162 return &atspi_actions[0];
2163}
2164
2148#include "elm_colorselector.eo.c" 2165#include "elm_colorselector.eo.c"
diff --git a/src/lib/elm_colorselector.eo b/src/lib/elm_colorselector.eo
index fda588bc8..bc9765893 100644
--- a/src/lib/elm_colorselector.eo
+++ b/src/lib/elm_colorselector.eo
@@ -1,4 +1,4 @@
1class Elm_Colorselector (Elm_Layout) 1class Elm_Colorselector (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_colorselector; 3 eo_prefix: elm_obj_colorselector;
4 properties { 4 properties {
@@ -135,6 +135,7 @@ class Elm_Colorselector (Elm_Layout)
135 Elm_Widget.access; 135 Elm_Widget.access;
136 Elm_Widget.event; 136 Elm_Widget.event;
137 Elm_Layout.sizing_eval; 137 Elm_Layout.sizing_eval;
138 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
138 } 139 }
139 events { 140 events {
140 color,item,selected; 141 color,item,selected;
diff --git a/src/lib/elm_diskselector.c b/src/lib/elm_diskselector.c
index 44a56df6c..1021d8438 100644
--- a/src/lib/elm_diskselector.c
+++ b/src/lib/elm_diskselector.c
@@ -11,6 +11,10 @@
11#include "elm_interface_atspi_accessible.h" 11#include "elm_interface_atspi_accessible.h"
12#include "elm_interface_atspi_accessible.eo.h" 12#include "elm_interface_atspi_accessible.eo.h"
13 13
14#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
15#include "elm_interface_atspi_widget_action.h"
16#include "elm_interface_atspi_widget_action.eo.h"
17
14#define DISPLAY_ITEM_NUM_MIN 3 18#define DISPLAY_ITEM_NUM_MIN 3
15 19
16#define MY_CLASS ELM_DISKSELECTOR_CLASS 20#define MY_CLASS ELM_DISKSELECTOR_CLASS
@@ -1787,4 +1791,17 @@ _elm_diskselector_class_constructor(Eo_Class *klass)
1787 _elm_diskselector_smart_focus_next_enable = EINA_TRUE; 1791 _elm_diskselector_smart_focus_next_enable = EINA_TRUE;
1788} 1792}
1789 1793
1794EOLIAN static const Elm_Atspi_Action*
1795_elm_diskselector_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Diskselector_Data *sd EINA_UNUSED)
1796{
1797 static Elm_Atspi_Action atspi_actions[] = {
1798 { "move,previous", "move", "prev", _key_action_move},
1799 { "move,next", "move", "next", _key_action_move},
1800 { "move,first", "move", "first", _key_action_move},
1801 { "move,last", "move", "last", _key_action_move},
1802 { NULL, NULL, NULL, NULL }
1803 };
1804 return &atspi_actions[0];
1805}
1806
1790#include "elm_diskselector.eo.c" 1807#include "elm_diskselector.eo.c"
diff --git a/src/lib/elm_diskselector.eo b/src/lib/elm_diskselector.eo
index 11655603e..87dab781a 100644
--- a/src/lib/elm_diskselector.eo
+++ b/src/lib/elm_diskselector.eo
@@ -1,4 +1,5 @@
1class Elm_Diskselector (Elm_Widget, Elm_Interface_Scrollable) 1class Elm_Diskselector (Elm_Widget, Elm_Interface_Scrollable,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_diskselector; 4 eo_prefix: elm_obj_diskselector;
4 properties { 5 properties {
@@ -249,6 +250,7 @@ class Elm_Diskselector (Elm_Widget, Elm_Interface_Scrollable)
249 Elm_Widget.sub_object_del; 250 Elm_Widget.sub_object_del;
250 Elm_Widget.event; 251 Elm_Widget.event;
251 Elm_Interface_Scrollable.policy; 252 Elm_Interface_Scrollable.policy;
253 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
252 } 254 }
253 events { 255 events {
254 selected; 256 selected;
diff --git a/src/lib/elm_flipselector.c b/src/lib/elm_flipselector.c
index 09a1d47fb..b7b826e46 100644
--- a/src/lib/elm_flipselector.c
+++ b/src/lib/elm_flipselector.c
@@ -11,6 +11,10 @@
11#include "elm_interface_atspi_accessible.h" 11#include "elm_interface_atspi_accessible.h"
12#include "elm_interface_atspi_accessible.eo.h" 12#include "elm_interface_atspi_accessible.eo.h"
13 13
14#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
15#include "elm_interface_atspi_widget_action.h"
16#include "elm_interface_atspi_widget_action.eo.h"
17
14#define MY_CLASS ELM_FLIPSELECTOR_CLASS 18#define MY_CLASS ELM_FLIPSELECTOR_CLASS
15 19
16#define MY_CLASS_NAME "Elm_Flipselector" 20#define MY_CLASS_NAME "Elm_Flipselector"
@@ -862,4 +866,15 @@ _elm_flipselector_class_constructor(Eo_Class *klass)
862 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 866 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
863} 867}
864 868
869EOLIAN const Elm_Atspi_Action *
870_elm_flipselector_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *pd EINA_UNUSED)
871{
872 static Elm_Atspi_Action atspi_actions[] = {
873 { "flip,up", "flip", "up", _key_action_flip},
874 { "flip,down", "flip", "down", _key_action_flip},
875 { NULL, NULL, NULL, NULL}
876 };
877 return &atspi_actions[0];
878}
879
865#include "elm_flipselector.eo.c" 880#include "elm_flipselector.eo.c"
diff --git a/src/lib/elm_flipselector.eo b/src/lib/elm_flipselector.eo
index eba93555b..d78827c04 100644
--- a/src/lib/elm_flipselector.eo
+++ b/src/lib/elm_flipselector.eo
@@ -1,4 +1,4 @@
1class Elm_Flipselector (Elm_Layout) 1class Elm_Flipselector (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_flipselector; 3 eo_prefix: elm_obj_flipselector;
4 properties { 4 properties {
@@ -202,6 +202,7 @@ class Elm_Flipselector (Elm_Layout)
202 Elm_Widget.focus_direction_manager_is; 202 Elm_Widget.focus_direction_manager_is;
203 Elm_Widget.event; 203 Elm_Widget.event;
204 Elm_Layout.sizing_eval; 204 Elm_Layout.sizing_eval;
205 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
205 } 206 }
206 events { 207 events {
207 selected; 208 selected;
diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index c357e5a1a..03c6d7ac0 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -12,6 +12,10 @@
12#include "elm_interface_atspi_accessible.h" 12#include "elm_interface_atspi_accessible.h"
13#include "elm_interface_atspi_accessible.eo.h" 13#include "elm_interface_atspi_accessible.eo.h"
14 14
15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
16#include "elm_interface_atspi_widget_action.h"
17#include "elm_interface_atspi_widget_action.eo.h"
18
15#define MY_PAN_CLASS ELM_GENGRID_PAN_CLASS 19#define MY_PAN_CLASS ELM_GENGRID_PAN_CLASS
16 20
17#define MY_PAN_CLASS_NAME "Elm_Gengrid_Pan" 21#define MY_PAN_CLASS_NAME "Elm_Gengrid_Pan"
@@ -4795,4 +4799,27 @@ _elm_gengrid_class_constructor(Eo_Class *klass)
4795 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 4799 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
4796} 4800}
4797 4801
4802EOLIAN const Elm_Atspi_Action *
4803_elm_gengrid_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd EINA_UNUSED)
4804{
4805 static Elm_Atspi_Action atspi_actions[] = {
4806 { "move,prior", "move", "prior", _key_action_move},
4807 { "move,next", "move", "next", _key_action_move},
4808 { "move,left", "move", "left", _key_action_move},
4809 { "move,left,multi", "move", "left_multi", _key_action_move},
4810 { "move,right", "move", "right", _key_action_move},
4811 { "move,right,multi", "move", "right_multi", _key_action_move},
4812 { "move,up", "move", "up", _key_action_move},
4813 { "move,up,multi", "move", "up_multi", _key_action_move},
4814 { "move,down", "move", "down", _key_action_move},
4815 { "move,down,multi", "move", "down_multi", _key_action_move},
4816 { "move,first", "move", "first", _key_action_move},
4817 { "move,last", "move", "last", _key_action_move},
4818 { "select", "select", NULL, _key_action_select},
4819 { "escape", "escape", NULL, _key_action_escape},
4820 { NULL, NULL, NULL, NULL }
4821 };
4822 return &atspi_actions[0];
4823}
4824
4798#include "elm_gengrid.eo.c" 4825#include "elm_gengrid.eo.c"
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index f09f1fe90..bb347d1ce 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -15,6 +15,10 @@
15#include "elm_interface_atspi_accessible.h" 15#include "elm_interface_atspi_accessible.h"
16#include "elm_interface_atspi_accessible.eo.h" 16#include "elm_interface_atspi_accessible.eo.h"
17 17
18#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
19#include "elm_interface_atspi_widget_action.h"
20#include "elm_interface_atspi_widget_action.eo.h"
21
18#define MY_PAN_CLASS ELM_GENLIST_PAN_CLASS 22#define MY_PAN_CLASS ELM_GENLIST_PAN_CLASS
19 23
20#define MY_PAN_CLASS_NAME "Elm_Genlist_Pan" 24#define MY_PAN_CLASS_NAME "Elm_Genlist_Pan"
@@ -7621,4 +7625,25 @@ _elm_genlist_class_constructor(Eo_Class *klass)
7621 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 7625 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
7622} 7626}
7623 7627
7628EOLIAN const Elm_Atspi_Action *
7629_elm_genlist_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Genlist_Data *pd EINA_UNUSED)
7630{
7631 static Elm_Atspi_Action atspi_actions[] = {
7632 { "move,prior", "move", "prior", _key_action_move},
7633 { "move,next", "move", "next", _key_action_move},
7634 { "move,left", "move", "left", _key_action_move},
7635 { "move,right", "move", "right", _key_action_move},
7636 { "move,up", "move", "up", _key_action_move},
7637 { "move,up,multi", "move", "up_multi", _key_action_move},
7638 { "move,down", "move", "down", _key_action_move},
7639 { "move,down,multi", "move", "down_multi", _key_action_move},
7640 { "move,first", "move", "first", _key_action_move},
7641 { "move,last", "move", "last", _key_action_move},
7642 { "select", "select", NULL, _key_action_select},
7643 { "escape", "escape", NULL, _key_action_escape},
7644 { NULL, NULL, NULL, NULL }
7645 };
7646 return &atspi_actions[0];
7647}
7648
7624#include "elm_genlist.eo.c" 7649#include "elm_genlist.eo.c"
diff --git a/src/lib/elm_genlist.eo b/src/lib/elm_genlist.eo
index 78aed245a..cc4077c3a 100644
--- a/src/lib/elm_genlist.eo
+++ b/src/lib/elm_genlist.eo
@@ -1,4 +1,5 @@
1class Elm_Genlist (Elm_Layout, Elm_Interface_Scrollable, Evas.Clickable_Interface) 1class Elm_Genlist (Elm_Layout, Elm_Interface_Scrollable, Evas.Clickable_Interface,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_genlist; 4 eo_prefix: elm_obj_genlist;
4 properties { 5 properties {
@@ -727,6 +728,7 @@ class Elm_Genlist (Elm_Layout, Elm_Interface_Scrollable, Evas.Clickable_Interfac
727 Elm_Layout.sizing_eval; 728 Elm_Layout.sizing_eval;
728 Elm_Interface_Scrollable.bounce_allow; 729 Elm_Interface_Scrollable.bounce_allow;
729 Elm_Interface_Scrollable.policy; 730 Elm_Interface_Scrollable.policy;
731 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
730 } 732 }
731 events { 733 events {
732 language,changed; 734 language,changed;
diff --git a/src/lib/elm_image.c b/src/lib/elm_image.c
index 73ca0a68d..eb0ac6ab3 100644
--- a/src/lib/elm_image.c
+++ b/src/lib/elm_image.c
@@ -15,6 +15,7 @@
15#include "elm_interface_atspi_accessible.eo.h" 15#include "elm_interface_atspi_accessible.eo.h"
16 16
17#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED 17#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
18#include "elm_interface_atspi_widget_action.h"
18#include "elm_interface_atspi_widget_action.eo.h" 19#include "elm_interface_atspi_widget_action.eo.h"
19 20
20#define FMT_SIZE_T "%zu" 21#define FMT_SIZE_T "%zu"
@@ -1345,10 +1346,14 @@ _elm_image_elm_interface_atspi_image_extents_get(Eo *obj, Elm_Image_Data *sd EIN
1345 elm_image_object_size_get(obj, w, h); 1346 elm_image_object_size_get(obj, w, h);
1346} 1347}
1347 1348
1348EOLIAN const Elm_Action * 1349EOLIAN const Elm_Atspi_Action *
1349_elm_image_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Image_Data *pd EINA_UNUSED) 1350_elm_image_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Image_Data *pd EINA_UNUSED)
1350{ 1351{
1351 return &key_actions[0]; 1352 static Elm_Atspi_Action atspi_actions[] = {
1353 { "activate", "activate", NULL, _key_action_activate },
1354 { NULL, NULL, NULL, NULL },
1355 };
1356 return &atspi_actions[0];
1352} 1357}
1353 1358
1354 1359
diff --git a/src/lib/elm_interface_atspi_action.eo b/src/lib/elm_interface_atspi_action.eo
index 0f876e729..4afa82a89 100644
--- a/src/lib/elm_interface_atspi_action.eo
+++ b/src/lib/elm_interface_atspi_action.eo
@@ -59,11 +59,12 @@ mixin Elm_Interface_Atspi_Action ()
59 return bool; 59 return bool;
60 } 60 }
61 keybinding_get @protected { 61 keybinding_get @protected {
62 /*@ Gets configured keybinding for specific action and widget. */ 62 /*@ Gets configured keybinding for specific action and widget.
63 returned pointer should be free by a user.*/
63 params { 64 params {
64 @in int id; 65 @in int id;
65 } 66 }
66 return const(char)*; 67 return char*;
67 } 68 }
68 } 69 }
69 implements { 70 implements {
diff --git a/src/lib/elm_interface_atspi_widget_action.c b/src/lib/elm_interface_atspi_widget_action.c
index af2a05274..489ad814d 100644
--- a/src/lib/elm_interface_atspi_widget_action.c
+++ b/src/lib/elm_interface_atspi_widget_action.c
@@ -10,6 +10,7 @@
10#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED 10#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
11 11
12#include "elm_interface_atspi_action.eo.h" 12#include "elm_interface_atspi_action.eo.h"
13#include "elm_interface_atspi_widget_action.h"
13#include "elm_interface_atspi_widget_action.eo.h" 14#include "elm_interface_atspi_widget_action.eo.h"
14 15
15extern Eina_Hash *_elm_key_bindings; 16extern Eina_Hash *_elm_key_bindings;
@@ -17,7 +18,8 @@ extern Eina_Hash *_elm_key_bindings;
17EOLIAN static Eina_Bool 18EOLIAN static Eina_Bool
18_elm_interface_atspi_widget_action_elm_interface_atspi_action_action_do(Eo *obj, void *pd EINA_UNUSED, int id) 19_elm_interface_atspi_widget_action_elm_interface_atspi_action_action_do(Eo *obj, void *pd EINA_UNUSED, int id)
19{ 20{
20 const Elm_Action *actions = NULL; 21 const Elm_Atspi_Action *actions = NULL;
22 const char *param;
21 Eina_Bool (*func)(Eo *eo, const char *params) = NULL; 23 Eina_Bool (*func)(Eo *eo, const char *params) = NULL;
22 int tmp = 0; 24 int tmp = 0;
23 25
@@ -29,6 +31,7 @@ _elm_interface_atspi_widget_action_elm_interface_atspi_action_action_do(Eo *obj,
29 if (tmp == id) 31 if (tmp == id)
30 { 32 {
31 func = actions[tmp].func; 33 func = actions[tmp].func;
34 param = actions[tmp].param;
32 break; 35 break;
33 } 36 }
34 tmp++; 37 tmp++;
@@ -37,15 +40,15 @@ _elm_interface_atspi_widget_action_elm_interface_atspi_action_action_do(Eo *obj,
37 if (!func) 40 if (!func)
38 return EINA_FALSE; 41 return EINA_FALSE;
39 42
40 return func(obj, NULL); 43 return func(obj, param);
41} 44}
42 45
43EOLIAN static const char * 46EOLIAN static char*
44_elm_interface_atspi_widget_action_elm_interface_atspi_action_keybinding_get(Eo *obj, void *pd EINA_UNUSED, int id) 47_elm_interface_atspi_widget_action_elm_interface_atspi_action_keybinding_get(Eo *obj, void *pd EINA_UNUSED, int id)
45{ 48{
46 const Elm_Action *actions = NULL; 49 const Elm_Atspi_Action *actions = NULL;
47 Eina_List *l, *binding_list; 50 Eina_List *l1, *binding_list;
48 const char *action = NULL; 51 const char *action = NULL, *param = NULL;
49 Elm_Config_Binding_Key *binding; 52 Elm_Config_Binding_Key *binding;
50 int tmp = 0; 53 int tmp = 0;
51 54
@@ -59,7 +62,8 @@ _elm_interface_atspi_widget_action_elm_interface_atspi_action_keybinding_get(Eo
59 { 62 {
60 if (tmp == id) 63 if (tmp == id)
61 { 64 {
62 action = actions->name; 65 action = actions[tmp].action;
66 param = actions[tmp].param;
63 break; 67 break;
64 } 68 }
65 tmp++; 69 tmp++;
@@ -70,10 +74,22 @@ _elm_interface_atspi_widget_action_elm_interface_atspi_action_keybinding_get(Eo
70 74
71 if (binding_list) 75 if (binding_list)
72 { 76 {
73 EINA_LIST_FOREACH(binding_list, l, binding) 77 EINA_LIST_FOREACH(binding_list, l1, binding)
74 { 78 {
75 if (!strcmp(binding->action, action)) 79 if (!strcmp(binding->action, action) && (!param ||
76 return binding->key; 80 !strcmp(binding->params, param)))
81 {
82 Eina_List *l2;
83 Elm_Config_Binding_Modifier *bm;
84 char *ret;
85 Eina_Strbuf *buf = eina_strbuf_new();
86 eina_strbuf_append_printf(buf, "%s", binding->key);
87 EINA_LIST_FOREACH(binding->modifiers, l2, bm)
88 if (bm->flag) eina_strbuf_append_printf(buf, "+%s", bm->mod);
89 ret = eina_strbuf_string_steal(buf);
90 eina_strbuf_free(buf);
91 return ret;
92 }
77 } 93 }
78 } 94 }
79 95
@@ -83,7 +99,7 @@ _elm_interface_atspi_widget_action_elm_interface_atspi_action_keybinding_get(Eo
83EOLIAN static const char * 99EOLIAN static const char *
84_elm_interface_atspi_widget_action_elm_interface_atspi_action_name_get(Eo *obj, void *pd EINA_UNUSED, int id) 100_elm_interface_atspi_widget_action_elm_interface_atspi_action_name_get(Eo *obj, void *pd EINA_UNUSED, int id)
85{ 101{
86 const Elm_Action *actions = NULL; 102 const Elm_Atspi_Action *actions = NULL;
87 int tmp = 0; 103 int tmp = 0;
88 104
89 eo_do(obj, actions = elm_interface_atspi_widget_action_elm_actions_get()); 105 eo_do(obj, actions = elm_interface_atspi_widget_action_elm_actions_get());
@@ -91,7 +107,7 @@ _elm_interface_atspi_widget_action_elm_interface_atspi_action_name_get(Eo *obj,
91 107
92 while (actions[tmp].name) 108 while (actions[tmp].name)
93 { 109 {
94 if (tmp == id) return actions->name; 110 if (tmp == id) return actions[tmp].name;
95 tmp++; 111 tmp++;
96 } 112 }
97 return NULL; 113 return NULL;
@@ -112,7 +128,7 @@ _elm_interface_atspi_widget_action_elm_interface_atspi_action_description_get(Eo
112EOLIAN static Eina_List* 128EOLIAN static Eina_List*
113_elm_interface_atspi_widget_action_elm_interface_atspi_action_actions_get(Eo *obj, void *pd EINA_UNUSED) 129_elm_interface_atspi_widget_action_elm_interface_atspi_action_actions_get(Eo *obj, void *pd EINA_UNUSED)
114{ 130{
115 const Elm_Action *actions = NULL; 131 const Elm_Atspi_Action *actions = NULL;
116 Eina_List *ret = NULL; 132 Eina_List *ret = NULL;
117 int tmp = 0; 133 int tmp = 0;
118 134
diff --git a/src/lib/elm_interface_atspi_widget_action.eo b/src/lib/elm_interface_atspi_widget_action.eo
index 7d5d1a798..5f24f7332 100644
--- a/src/lib/elm_interface_atspi_widget_action.eo
+++ b/src/lib/elm_interface_atspi_widget_action.eo
@@ -8,7 +8,7 @@ mixin Elm_Interface_Atspi_Widget_Action (Elm_Interface_Atspi_Action)
8 get { 8 get {
9 } 9 }
10 values { 10 values {
11 const(Elm_Action)* actions; /*@ NULL-terminated array of Elm_Actions 11 const(Elm_Atspi_Action)* actions; /*@ NULL-terminated array of Elm_Actions
12 */ 12 */
13 } 13 }
14 } 14 }
diff --git a/src/lib/elm_interface_atspi_widget_action.h b/src/lib/elm_interface_atspi_widget_action.h
new file mode 100644
index 000000000..8002edfe4
--- /dev/null
+++ b/src/lib/elm_interface_atspi_widget_action.h
@@ -0,0 +1,10 @@
1
2struct _Elm_Atspi_Action
3{
4 const char *name;
5 const char *action;
6 const char *param;
7 Eina_Bool (*func)(Evas_Object *obj, const char *params);
8};
9
10typedef struct _Elm_Atspi_Action Elm_Atspi_Action;
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index bf20b911f..455c2084f 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -12,6 +12,10 @@
12#include "elm_interface_atspi_accessible.h" 12#include "elm_interface_atspi_accessible.h"
13#include "elm_interface_atspi_accessible.eo.h" 13#include "elm_interface_atspi_accessible.eo.h"
14 14
15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
16#include "elm_interface_atspi_widget_action.h"
17#include "elm_interface_atspi_widget_action.eo.h"
18
15#define MY_CLASS ELM_LIST_CLASS 19#define MY_CLASS ELM_LIST_CLASS
16 20
17#define MY_CLASS_NAME "Elm_List" 21#define MY_CLASS_NAME "Elm_List"
@@ -2985,4 +2989,27 @@ _elm_list_class_constructor(Eo_Class *klass)
2985 2989
2986 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 2990 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
2987} 2991}
2992
2993EOLIAN const Elm_Atspi_Action *
2994_elm_list_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_List_Data *pd EINA_UNUSED)
2995{
2996 static Elm_Atspi_Action atspi_actions[] = {
2997 { "move,prior", "move", "prior", _key_action_move},
2998 { "move,next", "move", "next", _key_action_move},
2999 { "move,left", "move", "left", _key_action_move},
3000 { "move,left,multi", "move", "left_multi", _key_action_move},
3001 { "move,right", "move", "right", _key_action_move},
3002 { "move,right,multi", "move", "right_multi", _key_action_move},
3003 { "move,up", "move", "up", _key_action_move},
3004 { "move,up,multi", "move", "up_multi", _key_action_move},
3005 { "move,down", "move", "down", _key_action_move},
3006 { "move,down,multi", "move", "down_multi", _key_action_move},
3007 { "move,first", "move", "first", _key_action_move},
3008 { "move,last", "move", "last", _key_action_move},
3009 { "select", "select", NULL, _key_action_select},
3010 { "escape", "escape", NULL, _key_action_escape},
3011 { NULL, NULL, NULL, NULL }
3012 };
3013 return &atspi_actions[0];
3014}
2988#include "elm_list.eo.c" 3015#include "elm_list.eo.c"
diff --git a/src/lib/elm_list.eo b/src/lib/elm_list.eo
index c093d0575..8a495d0ed 100644
--- a/src/lib/elm_list.eo
+++ b/src/lib/elm_list.eo
@@ -1,4 +1,5 @@
1class Elm_List (Elm_Layout, Elm_Interface_Scrollable) 1class Elm_List (Elm_Layout, Elm_Interface_Scrollable,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_list; 4 eo_prefix: elm_obj_list;
4 properties { 5 properties {
@@ -607,6 +608,7 @@ class Elm_List (Elm_Layout, Elm_Interface_Scrollable)
607 Elm_Widget.item_loop_enabled.get; 608 Elm_Widget.item_loop_enabled.get;
608 Elm_Layout.sizing_eval; 609 Elm_Layout.sizing_eval;
609 Elm_Interface_Scrollable.policy.set; 610 Elm_Interface_Scrollable.policy.set;
611 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
610 } 612 }
611 events { 613 events {
612 activated; 614 activated;
diff --git a/src/lib/elm_map.c b/src/lib/elm_map.c
index 4541279c5..a704e4ac4 100644
--- a/src/lib/elm_map.c
+++ b/src/lib/elm_map.c
@@ -12,6 +12,10 @@
12#include "elm_interface_atspi_accessible.h" 12#include "elm_interface_atspi_accessible.h"
13#include "elm_interface_atspi_accessible.eo.h" 13#include "elm_interface_atspi_accessible.eo.h"
14 14
15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
16#include "elm_interface_atspi_widget_action.h"
17#include "elm_interface_atspi_widget_action.eo.h"
18
15#define MY_PAN_CLASS ELM_MAP_PAN_CLASS 19#define MY_PAN_CLASS ELM_MAP_PAN_CLASS
16 20
17#define MY_PAN_CLASS_NAME "Elm_Map_Pan" 21#define MY_PAN_CLASS_NAME "Elm_Map_Pan"
@@ -5501,4 +5505,21 @@ _elm_map_class_constructor(Eo_Class *klass)
5501 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 5505 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
5502} 5506}
5503 5507
5508EOLIAN const Elm_Atspi_Action *
5509_elm_map_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Map_Data *pd EINA_UNUSED)
5510{
5511 static Elm_Atspi_Action atspi_actions[] = {
5512 { "move,prior", "move", "prior", _key_action_move},
5513 { "move,next", "move", "next", _key_action_move},
5514 { "move,left", "move", "left", _key_action_move},
5515 { "move,right", "move", "right", _key_action_move},
5516 { "move,up", "move", "up", _key_action_move},
5517 { "move,down", "move", "down", _key_action_move},
5518 { "zoom,in", "zoom", "in", _key_action_zoom},
5519 { "zoom,out", "zoom", "out", _key_action_zoom},
5520 { NULL, NULL, NULL, NULL }
5521 };
5522 return &atspi_actions[0];
5523}
5524
5504#include "elm_map.eo.c" 5525#include "elm_map.eo.c"
diff --git a/src/lib/elm_map.eo b/src/lib/elm_map.eo
index d394785a3..5d07d771e 100644
--- a/src/lib/elm_map.eo
+++ b/src/lib/elm_map.eo
@@ -1,4 +1,5 @@
1class Elm_Map (Elm_Widget, Elm_Interface_Scrollable) 1class Elm_Map (Elm_Widget, Elm_Interface_Scrollable,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_map; 4 eo_prefix: elm_obj_map;
4 properties { 5 properties {
@@ -780,6 +781,7 @@ class Elm_Map (Elm_Widget, Elm_Interface_Scrollable)
780 Elm_Widget.theme_apply; 781 Elm_Widget.theme_apply;
781 Elm_Widget.on_focus; 782 Elm_Widget.on_focus;
782 Elm_Widget.event; 783 Elm_Widget.event;
784 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
783 } 785 }
784 events { 786 events {
785 clicked; 787 clicked;
diff --git a/src/lib/elm_panel.c b/src/lib/elm_panel.c
index c3245a28d..b6af91b38 100644
--- a/src/lib/elm_panel.c
+++ b/src/lib/elm_panel.c
@@ -13,6 +13,10 @@
13#include "elm_interface_atspi_accessible.h" 13#include "elm_interface_atspi_accessible.h"
14#include "elm_interface_atspi_accessible.eo.h" 14#include "elm_interface_atspi_accessible.eo.h"
15 15
16#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
17#include "elm_interface_atspi_widget_action.h"
18#include "elm_interface_atspi_widget_action.eo.h"
19
16#define MY_CLASS ELM_PANEL_CLASS 20#define MY_CLASS ELM_PANEL_CLASS
17 21
18#define MY_CLASS_NAME "Elm_Panel" 22#define MY_CLASS_NAME "Elm_Panel"
@@ -1387,4 +1391,14 @@ _elm_panel_class_constructor(Eo_Class *klass)
1387 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 1391 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
1388} 1392}
1389 1393
1394EOLIAN const Elm_Atspi_Action *
1395_elm_panel_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Panel_Data *pd EINA_UNUSED)
1396{
1397 static Elm_Atspi_Action atspi_actions[] = {
1398 { "toggle", "toggle", NULL, _key_action_toggle},
1399 { NULL, NULL, NULL, NULL }
1400 };
1401 return &atspi_actions[0];
1402}
1403
1390#include "elm_panel.eo.c" 1404#include "elm_panel.eo.c"
diff --git a/src/lib/elm_panel.eo b/src/lib/elm_panel.eo
index 25e98b7ac..e2396154d 100644
--- a/src/lib/elm_panel.eo
+++ b/src/lib/elm_panel.eo
@@ -1,4 +1,5 @@
1class Elm_Panel (Elm_Layout, Elm_Interface_Scrollable) 1class Elm_Panel (Elm_Layout, Elm_Interface_Scrollable,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_panel; 4 eo_prefix: elm_obj_panel;
4 properties { 5 properties {
@@ -96,6 +97,7 @@ class Elm_Panel (Elm_Layout, Elm_Interface_Scrollable)
96 Elm_Container.content_unset; 97 Elm_Container.content_unset;
97 Elm_Container.content_set; 98 Elm_Container.content_set;
98 Elm_Layout.sizing_eval; 99 Elm_Layout.sizing_eval;
100 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
99 } 101 }
100 events { 102 events {
101 focused; 103 focused;
diff --git a/src/lib/elm_photocam.c b/src/lib/elm_photocam.c
index da9895deb..57e813769 100644
--- a/src/lib/elm_photocam.c
+++ b/src/lib/elm_photocam.c
@@ -12,6 +12,10 @@
12#include "elm_interface_atspi_accessible.h" 12#include "elm_interface_atspi_accessible.h"
13#include "elm_interface_atspi_accessible.eo.h" 13#include "elm_interface_atspi_accessible.eo.h"
14 14
15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
16#include "elm_interface_atspi_widget_action.h"
17#include "elm_interface_atspi_widget_action.eo.h"
18
15#define MY_PAN_CLASS ELM_PHOTOCAM_PAN_CLASS 19#define MY_PAN_CLASS ELM_PHOTOCAM_PAN_CLASS
16 20
17#define MY_PAN_CLASS_NAME "Elm_Photocam_Pan" 21#define MY_PAN_CLASS_NAME "Elm_Photocam_Pan"
@@ -2075,4 +2079,21 @@ _elm_photocam_class_constructor(Eo_Class *klass)
2075 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 2079 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
2076} 2080}
2077 2081
2082EOLIAN const Elm_Atspi_Action *
2083_elm_photocam_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Photocam_Data *pd EINA_UNUSED)
2084{
2085 static Elm_Atspi_Action atspi_actions[] = {
2086 { "move,prior", "move", "prior", _key_action_move},
2087 { "move,next", "move", "next", _key_action_move},
2088 { "move,left", "move", "left", _key_action_move},
2089 { "move,right", "move", "right", _key_action_move},
2090 { "move,up", "move", "up", _key_action_move},
2091 { "move,down", "move", "down", _key_action_move},
2092 { "zoom,in", "zoom", "in", _key_action_zoom},
2093 { "zoom,out", "zoom", "out", _key_action_zoom},
2094 { NULL, NULL, NULL, NULL }
2095 };
2096 return &atspi_actions[0];
2097}
2098
2078#include "elm_photocam.eo.c" 2099#include "elm_photocam.eo.c"
diff --git a/src/lib/elm_photocam.eo b/src/lib/elm_photocam.eo
index 70dfb3bf1..f07a05424 100644
--- a/src/lib/elm_photocam.eo
+++ b/src/lib/elm_photocam.eo
@@ -1,4 +1,5 @@
1class Elm_Photocam (Elm_Widget, Elm_Interface_Scrollable) 1class Elm_Photocam (Elm_Widget, Elm_Interface_Scrollable,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_photocam; 4 eo_prefix: elm_obj_photocam;
4 properties { 5 properties {
@@ -234,6 +235,7 @@ class Elm_Photocam (Elm_Widget, Elm_Interface_Scrollable)
234 Elm_Widget.on_focus; 235 Elm_Widget.on_focus;
235 Elm_Widget.event; 236 Elm_Widget.event;
236 Elm_Interface_Scrollable.region_bring_in; 237 Elm_Interface_Scrollable.region_bring_in;
238 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
237 } 239 }
238 events { 240 events {
239 clicked; 241 clicked;
diff --git a/src/lib/elm_radio.c b/src/lib/elm_radio.c
index 0532c1834..045ce2917 100644
--- a/src/lib/elm_radio.c
+++ b/src/lib/elm_radio.c
@@ -12,6 +12,10 @@
12#include "elm_interface_atspi_accessible.h" 12#include "elm_interface_atspi_accessible.h"
13#include "elm_interface_atspi_accessible.eo.h" 13#include "elm_interface_atspi_accessible.eo.h"
14 14
15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
16#include "elm_interface_atspi_widget_action.h"
17#include "elm_interface_atspi_widget_action.eo.h"
18
15#define MY_CLASS ELM_RADIO_CLASS 19#define MY_CLASS ELM_RADIO_CLASS
16 20
17#define MY_CLASS_NAME "Elm_Radio" 21#define MY_CLASS_NAME "Elm_Radio"
@@ -444,4 +448,14 @@ _elm_radio_class_constructor(Eo_Class *klass)
444 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 448 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
445} 449}
446 450
451EOLIAN const Elm_Atspi_Action *
452_elm_radio_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Radio_Data *pd EINA_UNUSED)
453{
454 static Elm_Atspi_Action atspi_actions[] = {
455 { "activate", "activate", NULL, _key_action_activate},
456 { NULL, NULL, NULL, NULL }
457 };
458 return &atspi_actions[0];
459}
460
447#include "elm_radio.eo.c" 461#include "elm_radio.eo.c"
diff --git a/src/lib/elm_radio.eo b/src/lib/elm_radio.eo
index 22037c451..ae5d99a47 100644
--- a/src/lib/elm_radio.eo
+++ b/src/lib/elm_radio.eo
@@ -1,4 +1,4 @@
1class Elm_Radio (Elm_Layout) 1class Elm_Radio (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_radio; 3 eo_prefix: elm_obj_radio;
4 properties { 4 properties {
@@ -112,6 +112,7 @@ class Elm_Radio (Elm_Layout)
112 Elm_Layout.text_aliases.get; 112 Elm_Layout.text_aliases.get;
113 Elm_Layout.content_aliases.get; 113 Elm_Layout.content_aliases.get;
114 Elm_Layout.sizing_eval; 114 Elm_Layout.sizing_eval;
115 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
115 } 116 }
116 events { 117 events {
117 changed; 118 changed;
diff --git a/src/lib/elm_scroller.c b/src/lib/elm_scroller.c
index 7d10c7516..64c6e0954 100644
--- a/src/lib/elm_scroller.c
+++ b/src/lib/elm_scroller.c
@@ -13,6 +13,10 @@
13#include "elm_interface_atspi_accessible.h" 13#include "elm_interface_atspi_accessible.h"
14#include "elm_interface_atspi_accessible.eo.h" 14#include "elm_interface_atspi_accessible.eo.h"
15 15
16#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
17#include "elm_interface_atspi_widget_action.h"
18#include "elm_interface_atspi_widget_action.eo.h"
19
16#define MY_CLASS ELM_SCROLLER_CLASS 20#define MY_CLASS ELM_SCROLLER_CLASS
17 21
18#define MY_CLASS_NAME "Elm_Scroller" 22#define MY_CLASS_NAME "Elm_Scroller"
@@ -1128,4 +1132,21 @@ _elm_scroller_class_constructor(Eo_Class *klass)
1128 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 1132 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
1129} 1133}
1130 1134
1135EOLIAN const Elm_Atspi_Action *
1136_elm_scroller_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Scroller_Data *pd EINA_UNUSED)
1137{
1138 static Elm_Atspi_Action atspi_actions[] = {
1139 { "move,prior", "move", "prior", _key_action_move},
1140 { "move,next", "move", "next", _key_action_move},
1141 { "move,left", "move", "left", _key_action_move},
1142 { "move,right", "move", "right", _key_action_move},
1143 { "move,up", "move", "up", _key_action_move},
1144 { "move,down", "move", "down", _key_action_move},
1145 { "move,first", "move", "first", _key_action_move},
1146 { "move,last", "move", "last", _key_action_move},
1147 { NULL, NULL, NULL, NULL }
1148 };
1149 return &atspi_actions[0];
1150}
1151
1131#include "elm_scroller.eo.c" 1152#include "elm_scroller.eo.c"
diff --git a/src/lib/elm_scroller.eo b/src/lib/elm_scroller.eo
index cee1b65dc..953cc853a 100644
--- a/src/lib/elm_scroller.eo
+++ b/src/lib/elm_scroller.eo
@@ -1,4 +1,5 @@
1class Elm_Scroller (Elm_Layout, Elm_Interface_Scrollable) 1class Elm_Scroller (Elm_Layout, Elm_Interface_Scrollable,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_scroller; 4 eo_prefix: elm_obj_scroller;
4 properties { 5 properties {
@@ -92,6 +93,7 @@ class Elm_Scroller (Elm_Layout, Elm_Interface_Scrollable)
92 Elm_Interface_Scrollable.page_size.set; 93 Elm_Interface_Scrollable.page_size.set;
93 Elm_Interface_Scrollable.policy.set; 94 Elm_Interface_Scrollable.policy.set;
94 Elm_Interface_Scrollable.single_direction; 95 Elm_Interface_Scrollable.single_direction;
96 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
95 } 97 }
96 events { 98 events {
97 focused; 99 focused;
diff --git a/src/lib/elm_slider.c b/src/lib/elm_slider.c
index 64d4e1d08..e437bb155 100644
--- a/src/lib/elm_slider.c
+++ b/src/lib/elm_slider.c
@@ -12,6 +12,10 @@
12#include "elm_interface_atspi_accessible.h" 12#include "elm_interface_atspi_accessible.h"
13#include "elm_interface_atspi_accessible.eo.h" 13#include "elm_interface_atspi_accessible.eo.h"
14 14
15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
16#include "elm_interface_atspi_widget_action.h"
17#include "elm_interface_atspi_widget_action.eo.h"
18
15#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED 19#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED
16#include "elm_interface_atspi_value.eo.h" 20#include "elm_interface_atspi_value.eo.h"
17 21
@@ -1236,6 +1240,19 @@ _elm_slider_elm_interface_atspi_value_increment_get(Eo *obj EINA_UNUSED, Elm_Sli
1236 return sd->step; 1240 return sd->step;
1237} 1241}
1238 1242
1243EOLIAN const Elm_Atspi_Action *
1244_elm_slider_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Slider_Data *pd EINA_UNUSED)
1245{
1246 static Elm_Atspi_Action atspi_actions[] = {
1247 { "drag,left", "drag", "left", _key_action_drag},
1248 { "drag,right", "drag", "right", _key_action_drag},
1249 { "drag,up", "drag", "up", _key_action_drag},
1250 { "drag,down", "drag", "down", _key_action_drag},
1251 { NULL, NULL, NULL, NULL}
1252 };
1253 return &atspi_actions[0];
1254}
1255
1239// A11Y Accessibility - END 1256// A11Y Accessibility - END
1240 1257
1241#include "elm_slider.eo.c" 1258#include "elm_slider.eo.c"
diff --git a/src/lib/elm_slider.eo b/src/lib/elm_slider.eo
index c4255eb78..3712789d4 100644
--- a/src/lib/elm_slider.eo
+++ b/src/lib/elm_slider.eo
@@ -1,4 +1,5 @@
1class Elm_Slider (Elm_Layout, Elm_Interface_Atspi_Value) 1class Elm_Slider (Elm_Layout, Elm_Interface_Atspi_Value,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_slider; 4 eo_prefix: elm_obj_slider;
4 properties { 5 properties {
@@ -379,6 +380,7 @@ class Elm_Slider (Elm_Layout, Elm_Interface_Atspi_Value)
379 Elm_Interface_Atspi_Value.value_and_text.set; 380 Elm_Interface_Atspi_Value.value_and_text.set;
380 Elm_Interface_Atspi_Value.range.get; 381 Elm_Interface_Atspi_Value.range.get;
381 Elm_Interface_Atspi_Value.increment.get; 382 Elm_Interface_Atspi_Value.increment.get;
383 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
382 } 384 }
383 events { 385 events {
384 changed; 386 changed;
diff --git a/src/lib/elm_slideshow.c b/src/lib/elm_slideshow.c
index 830b763c0..890d2280b 100644
--- a/src/lib/elm_slideshow.c
+++ b/src/lib/elm_slideshow.c
@@ -11,6 +11,10 @@
11#include "elm_interface_atspi_accessible.h" 11#include "elm_interface_atspi_accessible.h"
12#include "elm_interface_atspi_accessible.eo.h" 12#include "elm_interface_atspi_accessible.eo.h"
13 13
14#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
15#include "elm_interface_atspi_widget_action.h"
16#include "elm_interface_atspi_widget_action.eo.h"
17
14#define MY_CLASS ELM_SLIDESHOW_CLASS 18#define MY_CLASS ELM_SLIDESHOW_CLASS
15 19
16#define MY_CLASS_NAME "Elm_Slideshow" 20#define MY_CLASS_NAME "Elm_Slideshow"
@@ -712,4 +716,16 @@ _elm_slideshow_class_constructor(Eo_Class *klass)
712 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 716 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
713} 717}
714 718
719EOLIAN static const Elm_Atspi_Action*
720_elm_slideshow_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Slideshow_Data *sd EINA_UNUSED)
721{
722 static Elm_Atspi_Action atspi_actions[] = {
723 { "move,left", "move", "left", _key_action_move},
724 { "move,right", "move", "right", _key_action_move},
725 { "pause", "pause", NULL, _key_action_pause},
726 { NULL, NULL, NULL, NULL }
727 };
728 return &atspi_actions[0];
729}
730
715#include "elm_slideshow.eo.c" 731#include "elm_slideshow.eo.c"
diff --git a/src/lib/elm_slideshow.eo b/src/lib/elm_slideshow.eo
index c54c427ab..b32112b72 100644
--- a/src/lib/elm_slideshow.eo
+++ b/src/lib/elm_slideshow.eo
@@ -1,4 +1,4 @@
1class Elm_Slideshow (Elm_Layout) 1class Elm_Slideshow (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_slideshow; 3 eo_prefix: elm_obj_slideshow;
4 properties { 4 properties {
@@ -424,6 +424,7 @@ class Elm_Slideshow (Elm_Layout)
424 Elm_Widget.focus_direction_manager_is; 424 Elm_Widget.focus_direction_manager_is;
425 Elm_Widget.event; 425 Elm_Widget.event;
426 Elm_Layout.sizing_eval; 426 Elm_Layout.sizing_eval;
427 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
427 } 428 }
428 events { 429 events {
429 changed; 430 changed;
diff --git a/src/lib/elm_spinner.c b/src/lib/elm_spinner.c
index 8f167c618..afba203a6 100644
--- a/src/lib/elm_spinner.c
+++ b/src/lib/elm_spinner.c
@@ -17,6 +17,10 @@
17#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED 17#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED
18#include "elm_interface_atspi_value.eo.h" 18#include "elm_interface_atspi_value.eo.h"
19 19
20#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
21#include "elm_interface_atspi_widget_action.h"
22#include "elm_interface_atspi_widget_action.eo.h"
23
20#define MY_CLASS ELM_SPINNER_CLASS 24#define MY_CLASS ELM_SPINNER_CLASS
21 25
22#define MY_CLASS_NAME "Elm_Spinner" 26#define MY_CLASS_NAME "Elm_Spinner"
@@ -1107,6 +1111,20 @@ _elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data *
1107{ 1111{
1108 return elm_layout_text_get(obj, "elm.text"); 1112 return elm_layout_text_get(obj, "elm.text");
1109} 1113}
1114
1115EOLIAN static const Elm_Atspi_Action*
1116_elm_spinner_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Spinner_Data *sd EINA_UNUSED)
1117{
1118 static Elm_Atspi_Action atspi_actions[] = {
1119 { "spin,left", "spin", "left", _key_action_spin},
1120 { "spin,right", "spin", "right", _key_action_spin},
1121 { "spin,up", "spin", "up", _key_action_spin},
1122 { "spin,down", "spin", "down", _key_action_spin},
1123 { "toggle", "toggle", NULL, _key_action_toggle},
1124 { NULL, NULL, NULL, NULL }
1125 };
1126 return &atspi_actions[0];
1127}
1110// A11Y Accessibility - END 1128// A11Y Accessibility - END
1111 1129
1112#include "elm_spinner.eo.c" 1130#include "elm_spinner.eo.c"
diff --git a/src/lib/elm_spinner.eo b/src/lib/elm_spinner.eo
index cf29276b9..ed31d4a27 100644
--- a/src/lib/elm_spinner.eo
+++ b/src/lib/elm_spinner.eo
@@ -1,4 +1,4 @@
1class Elm_Spinner (Elm_Layout, Elm_Interface_Atspi_Value) 1class Elm_Spinner (Elm_Layout, Elm_Interface_Atspi_Value, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_spinner; 3 eo_prefix: elm_obj_spinner;
4 properties { 4 properties {
@@ -379,6 +379,7 @@ class Elm_Spinner (Elm_Layout, Elm_Interface_Atspi_Value)
379 Elm_Interface_Atspi_Value.value_and_text.set; 379 Elm_Interface_Atspi_Value.value_and_text.set;
380 Elm_Interface_Atspi_Value.range.get; 380 Elm_Interface_Atspi_Value.range.get;
381 Elm_Interface_Atspi_Value.increment.get; 381 Elm_Interface_Atspi_Value.increment.get;
382 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
382 } 383 }
383 events { 384 events {
384 changed; 385 changed;
@@ -390,5 +391,4 @@ class Elm_Spinner (Elm_Layout, Elm_Interface_Atspi_Value)
390 focused; 391 focused;
391 unfocused; 392 unfocused;
392 } 393 }
393
394} 394}
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index 546773966..c38a40f06 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -12,6 +12,10 @@
12#include "elm_interface_atspi_accessible.h" 12#include "elm_interface_atspi_accessible.h"
13#include "elm_interface_atspi_accessible.eo.h" 13#include "elm_interface_atspi_accessible.eo.h"
14 14
15#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
16#include "elm_interface_atspi_widget_action.h"
17#include "elm_interface_atspi_widget_action.eo.h"
18
15#define MY_CLASS ELM_TOOLBAR_CLASS 19#define MY_CLASS ELM_TOOLBAR_CLASS
16 20
17#define MY_CLASS_NAME "Elm_Toolbar" 21#define MY_CLASS_NAME "Elm_Toolbar"
@@ -3844,4 +3848,18 @@ _elm_toolbar_class_constructor(Eo_Class *klass)
3844 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 3848 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
3845} 3849}
3846 3850
3851EOLIAN static const Elm_Atspi_Action*
3852_elm_toolbar_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd EINA_UNUSED)
3853{
3854 static Elm_Atspi_Action atspi_actions[] = {
3855 { "select", "select", NULL, _key_action_select},
3856 { "move,left", "move", "left", _key_action_move},
3857 { "move,right", "move", "right", _key_action_move},
3858 { "move,up", "move", "up", _key_action_move},
3859 { "move,down", "move", "down", _key_action_move},
3860 { NULL, NULL, NULL, NULL }
3861 };
3862 return &atspi_actions[0];
3863}
3864
3847#include "elm_toolbar.eo.c" 3865#include "elm_toolbar.eo.c"
diff --git a/src/lib/elm_toolbar.eo b/src/lib/elm_toolbar.eo
index 4c46d8354..70f69d697 100644
--- a/src/lib/elm_toolbar.eo
+++ b/src/lib/elm_toolbar.eo
@@ -1,4 +1,5 @@
1class Elm_Toolbar (Elm_Widget, Elm_Interface_Scrollable) 1class Elm_Toolbar (Elm_Widget, Elm_Interface_Scrollable,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_toolbar; 4 eo_prefix: elm_obj_toolbar;
4 properties { 5 properties {
@@ -511,6 +512,7 @@ class Elm_Toolbar (Elm_Widget, Elm_Interface_Scrollable)
511 Elm_Widget.event; 512 Elm_Widget.event;
512 Elm_Widget.focus_highlight_geometry_get; 513 Elm_Widget.focus_highlight_geometry_get;
513 Elm_Widget.focused_item.get; 514 Elm_Widget.focused_item.get;
515 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
514 } 516 }
515 events { 517 events {
516 scroll; 518 scroll;
diff --git a/src/lib/elm_video.c b/src/lib/elm_video.c
index d49b58133..cf0ac909d 100644
--- a/src/lib/elm_video.c
+++ b/src/lib/elm_video.c
@@ -17,6 +17,10 @@
17#include "elm_interface_atspi_accessible.h" 17#include "elm_interface_atspi_accessible.h"
18#include "elm_interface_atspi_accessible.eo.h" 18#include "elm_interface_atspi_accessible.eo.h"
19 19
20#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
21#include "elm_interface_atspi_widget_action.h"
22#include "elm_interface_atspi_widget_action.eo.h"
23
20#define MY_CLASS ELM_VIDEO_CLASS 24#define MY_CLASS ELM_VIDEO_CLASS
21 25
22#define MY_CLASS_NAME "Elm_Video" 26#define MY_CLASS_NAME "Elm_Video"
@@ -436,4 +440,16 @@ _elm_video_class_constructor(Eo_Class *klass)
436 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); 440 evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
437} 441}
438 442
443EOLIAN const Elm_Atspi_Action *
444_elm_video_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Video_Data *pd EINA_UNUSED)
445{
446 static Elm_Atspi_Action atspi_actions[] = {
447 { "move,left", "move", "left", _key_action_move},
448 { "move,right", "move", "right", _key_action_move},
449 { "play", "play", NULL, _key_action_play},
450 { NULL, NULL, NULL, NULL}
451 };
452 return &atspi_actions[0];
453}
454
439#include "elm_video.eo.c" 455#include "elm_video.eo.c"
diff --git a/src/lib/elm_video.eo b/src/lib/elm_video.eo
index f3382146d..bd3589e74 100644
--- a/src/lib/elm_video.eo
+++ b/src/lib/elm_video.eo
@@ -1,4 +1,4 @@
1class Elm_Video (Elm_Layout) 1class Elm_Video (Elm_Layout, Elm_Interface_Atspi_Widget_Action)
2{ 2{
3 eo_prefix: elm_obj_video; 3 eo_prefix: elm_obj_video;
4 properties { 4 properties {
@@ -210,6 +210,7 @@ class Elm_Video (Elm_Layout)
210 Elm_Widget.focus_direction_manager_is; 210 Elm_Widget.focus_direction_manager_is;
211 Elm_Widget.event; 211 Elm_Widget.event;
212 Elm_Layout.sizing_eval; 212 Elm_Layout.sizing_eval;
213 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
213 } 214 }
214 events { 215 events {
215 focused; 216 focused;
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index abcf482db..77696de90 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -15,6 +15,10 @@
15#include "elm_interface_atspi_window.eo.h" 15#include "elm_interface_atspi_window.eo.h"
16#include "elm_interface_atspi_widget.eo.h" 16#include "elm_interface_atspi_widget.eo.h"
17 17
18#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
19#include "elm_interface_atspi_widget_action.h"
20#include "elm_interface_atspi_widget_action.eo.h"
21
18#define MY_CLASS ELM_WIN_CLASS 22#define MY_CLASS ELM_WIN_CLASS
19 23
20#define MY_CLASS_NAME "Elm_Win" 24#define MY_CLASS_NAME "Elm_Win"
@@ -4906,4 +4910,19 @@ _elm_win_elm_interface_atspi_accessible_parent_get(Eo *obj EINA_UNUSED, Elm_Win_
4906 return _elm_atspi_bridge_root_get(); 4910 return _elm_atspi_bridge_root_get();
4907} 4911}
4908 4912
4913EOLIAN static const Elm_Atspi_Action*
4914_elm_win_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd EINA_UNUSED)
4915{
4916 static Elm_Atspi_Action atspi_actions[] = {
4917 { "move,previous", "move", "previous", _key_action_move},
4918 { "move,next", "move", "next", _key_action_move},
4919 { "move,left", "move", "left", _key_action_move},
4920 { "move,right", "move", "right", _key_action_move},
4921 { "move,up", "move", "up", _key_action_move},
4922 { "move,down", "move", "down", _key_action_move},
4923 { NULL, NULL, NULL, NULL }
4924 };
4925 return &atspi_actions[0];
4926}
4927
4909#include "elm_win.eo.c" 4928#include "elm_win.eo.c"
diff --git a/src/lib/elm_win.eo b/src/lib/elm_win.eo
index 2981f1b5d..ff797d2fc 100644
--- a/src/lib/elm_win.eo
+++ b/src/lib/elm_win.eo
@@ -1,4 +1,5 @@
1class Elm_Win (Elm_Widget, Elm_Interface_Atspi_Window) 1class Elm_Win (Elm_Widget, Elm_Interface_Atspi_Window,
2 Elm_Interface_Atspi_Widget_Action)
2{ 3{
3 eo_prefix: elm_obj_win; 4 eo_prefix: elm_obj_win;
4 constructors { 5 constructors {
@@ -1346,6 +1347,7 @@ class Elm_Win (Elm_Widget, Elm_Interface_Atspi_Window)
1346 Elm_Widget.on_focus; 1347 Elm_Widget.on_focus;
1347 Elm_Widget.event; 1348 Elm_Widget.event;
1348 Elm_Interface_Atspi_Accessible.parent.get; 1349 Elm_Interface_Atspi_Accessible.parent.get;
1350 Elm_Interface_Atspi_Widget_Action.elm_actions.get;
1349 } 1351 }
1350 events { 1352 events {
1351 delete,request; 1353 delete,request;
diff --git a/src/tests/elm_cxx_suite.cc b/src/tests/elm_cxx_suite.cc
index 73873c285..d64b56c38 100644
--- a/src/tests/elm_cxx_suite.cc
+++ b/src/tests/elm_cxx_suite.cc
@@ -22,6 +22,7 @@
22#include <elm_interface_scrollable.h> 22#include <elm_interface_scrollable.h>
23#include <elm_interface_atspi_text.h> 23#include <elm_interface_atspi_text.h>
24#include <elm_interface_atspi_accessible.h> 24#include <elm_interface_atspi_accessible.h>
25#include <elm_interface_atspi_widget_action.h>
25 26
26#include <elc_ctxpopup.eo.hh> 27#include <elc_ctxpopup.eo.hh>
27#include <elc_fileselector_button.eo.hh> 28#include <elc_fileselector_button.eo.hh>