summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Juyung Seo <seojuyung2@gmail.com>2013-12-07 03:20:00 +0900
committerDaniel Juyung Seo <seojuyung2@gmail.com>2013-12-07 03:20:00 +0900
commitcf2c5c90e6a91d64c4d66c46e18d64d738ef17db (patch)
tree80f1f79775580c29854e4c9dc55a66e0438f2a86
parent38da3f9f9cb7161b638abf2a0cc20943b7b23dd9 (diff)
parent3bdc98b7773b2004aca360c38ffff045e6d1032e (diff)
Merge branch 'devs/seoz/widget' of git+ssh://git.enlightenment.org/core/elementary into devs/seoz/widgetdevs/seoz/widget
-rw-r--r--AUTHORS3
-rw-r--r--ChangeLog8
-rw-r--r--NEWS6
-rw-r--r--configure.ac2
-rw-r--r--data/themes/edc/border.edc6
-rw-r--r--data/themes/edc/evrything.edc4
-rw-r--r--src/Makefile.am2
-rw-r--r--src/bin/test_fileselector.c80
-rw-r--r--src/bin/test_gengrid.c329
-rw-r--r--src/bin/test_popup.c62
-rw-r--r--src/bin/test_slider.c14
-rw-r--r--src/imported/Makefile.am5
-rw-r--r--src/imported/atspi/Makefile.am4
-rw-r--r--src/imported/atspi/atspi-constants.h1241
-rw-r--r--src/lib/Makefile.am5
-rw-r--r--src/lib/elc_fileselector.c119
-rw-r--r--src/lib/elc_fileselector_eo.h28
-rw-r--r--src/lib/elc_fileselector_legacy.h33
-rw-r--r--src/lib/elc_popup.c50
-rw-r--r--src/lib/elc_popup_eo.h28
-rw-r--r--src/lib/elc_popup_legacy.h28
-rw-r--r--src/lib/elm_atspi_bridge.c178
-rw-r--r--src/lib/elm_authors.h3
-rw-r--r--src/lib/elm_cnp.c30
-rw-r--r--src/lib/elm_colorselector.c4
-rw-r--r--src/lib/elm_gengrid.c42
-rw-r--r--src/lib/elm_genlist.c6
-rw-r--r--src/lib/elm_interface_scrollable.c12
-rw-r--r--src/lib/elm_list.c2
-rw-r--r--src/lib/elm_main.c3
-rw-r--r--src/lib/elm_priv.h2
-rw-r--r--src/lib/elm_slider.c73
-rw-r--r--src/lib/elm_slider_eo.h32
-rw-r--r--src/lib/elm_slider_legacy.h21
-rw-r--r--src/lib/elm_table.c2
-rw-r--r--src/lib/elm_theme.c6
-rw-r--r--src/lib/elm_widget_fileselector.h2
-rw-r--r--src/lib/elm_widget_gengrid.h1
-rw-r--r--src/lib/elm_widget_slider.h3
-rw-r--r--src/lib/elm_win.c2
40 files changed, 2260 insertions, 221 deletions
diff --git a/AUTHORS b/AUTHORS
index e7aba6ef1..160f45d6d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -83,3 +83,6 @@ Hosang Kim <hosang12.kim@samsung.com>
83Youngbok Shin <youngb.shin@samsung.com> 83Youngbok Shin <youngb.shin@samsung.com>
84Niraj Kumar <niraj.kr@samsung.com> <niraj.kumar.ait@gmail.com> 84Niraj Kumar <niraj.kr@samsung.com> <niraj.kumar.ait@gmail.com>
85Amitesh Singh <singh.amitesh@gmail.com> 85Amitesh Singh <singh.amitesh@gmail.com>
86Abhinandan Aryadipta <a.aryadipta@samsung.com>
87Sanghyeon Lee <sh10233.lee@samsung.com>
88Anil Kumar Nahak <ak.nahak@samsung.com>
diff --git a/ChangeLog b/ChangeLog
index 3bd6bf0ed..56975bb58 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1761,6 +1761,14 @@
1761 1761
1762 * spinner: fix mouse wheel support. 1762 * spinner: fix mouse wheel support.
1763 1763
17642013-12-01 Carsten Haitzler (The Rasterman)
1765
1766 * 1.8 release
1767
17642013-12-01 Abhinandan Aryadipta (aryarockstar) 17682013-12-01 Abhinandan Aryadipta (aryarockstar)
1765 1769
1766 * tooltip: Added elm_object_tooltip_orient_set() and elm_object_tooltip_orient_get(). 1770 * tooltip: Added elm_object_tooltip_orient_set() and elm_object_tooltip_orient_get().
1771
17722013-12-01 Mike Blumenkrantz
1773
1774 * fix mouse eventing on e border theme
diff --git a/NEWS b/NEWS
index 3fd7969ed..85da74674 100644
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,12 @@
1================
2Elementary 1.9.0
3================
4
1Changes since Elementary 1.8.0: 5Changes since Elementary 1.8.0:
2------------------------- 6-------------------------
3 7
4Additions: 8Additions:
5 9
6 * Add elm_object_tooltip_orient_set() and elm_object_tooltip_orient_get().
7
8Improvements: 10Improvements:
9 11
10Fixes: 12Fixes:
diff --git a/configure.ac b/configure.ac
index e4bc736b1..6700643f4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -731,6 +731,8 @@ src/modules/test_map/Makefile
731src/edje_externals/Makefile 731src/edje_externals/Makefile
732src/examples/Makefile 732src/examples/Makefile
733src/tests/Makefile 733src/tests/Makefile
734src/imported/Makefile
735src/imported/atspi/Makefile
734data/Makefile 736data/Makefile
735data/themes/Makefile 737data/themes/Makefile
736data/images/Makefile 738data/images/Makefile
diff --git a/data/themes/edc/border.edc b/data/themes/edc/border.edc
index a0ca40a15..b9f57bef3 100644
--- a/data/themes/edc/border.edc
+++ b/data/themes/edc/border.edc
@@ -33,7 +33,7 @@ group { name: "e/widgets/border/default/border";
33 visible: 0; 33 visible: 0;
34 } 34 }
35 } 35 }
36 part { name: "e.swallow.client"; type: SWALLOW; mouse_events: 0; 36 part { name: "e.swallow.client"; type: SWALLOW;
37 clip_to: "client_clip"; 37 clip_to: "client_clip";
38 description { state: "default" 0.0; 38 description { state: "default" 0.0;
39 rel1.relative: 0.0 1.0; 39 rel1.relative: 0.0 1.0;
@@ -974,7 +974,7 @@ group { name: "e/widgets/border/dialog/border";
974group { name: "e/widgets/border/noresize/border"; 974group { name: "e/widgets/border/noresize/border";
975 inherit: "e/widgets/border/default/border"; 975 inherit: "e/widgets/border/default/border";
976 parts { 976 parts {
977 part { name: "e.swallow.client"; type: SWALLOW; mouse_events: 0; 977 part { name: "e.swallow.client"; type: SWALLOW;
978 description { state: "default" 0.0; 978 description { state: "default" 0.0;
979 rel2.relative: 1.0 1.0; 979 rel2.relative: 1.0 1.0;
980 } 980 }
@@ -1069,7 +1069,7 @@ group { name: "e/widgets/border/pixel/border";
1069 rel2.to_y: "e.swallow.client"; 1069 rel2.to_y: "e.swallow.client";
1070 } 1070 }
1071 } 1071 }
1072 part { name: "e.swallow.client"; type: SWALLOW; mouse_events: 0; 1072 part { name: "e.swallow.client"; type: SWALLOW;
1073 clip_to: "client_clip"; 1073 clip_to: "client_clip";
1074 description { state: "default" 0.0; 1074 description { state: "default" 0.0;
1075 rel1.offset: 1 1; 1075 rel1.offset: 1 1;
diff --git a/data/themes/edc/evrything.edc b/data/themes/edc/evrything.edc
index 9b9a27619..ec9de7b1d 100644
--- a/data/themes/edc/evrything.edc
+++ b/data/themes/edc/evrything.edc
@@ -61,6 +61,7 @@ group { name: "e/modules/everything/main";
61 } 61 }
62 description { state: "wide" 0; 62 description { state: "wide" 0;
63 inherit: "default" 0.0; 63 inherit: "default" 0.0;
64 rel1.relative: 0.0 0.0;
64 rel2.relative: 0.5 1.0; 65 rel2.relative: 0.5 1.0;
65 } 66 }
66 } 67 }
@@ -1610,7 +1611,8 @@ group { name: "e/modules/everything/thumbview/item/list";
1610 rel1.relative: 1.0 0.0; 1611 rel1.relative: 1.0 0.0;
1611 rel1.to_x: "icon0"; 1612 rel1.to_x: "icon0";
1612 rel2.offset: -3 -3; 1613 rel2.offset: -3 -3;
1613 rel2.relative: 1.0 1.0; 1614 rel2.relative: 0.0 1.0;
1615 rel2.to_x: "arrow";
1614 color: 255 255 255 255; 1616 color: 255 255 255 255;
1615 color3: 0 0 0 128; 1617 color3: 0 0 0 128;
1616 color_class: "ilist_item"; 1618 color_class: "ilist_item";
diff --git a/src/Makefile.am b/src/Makefile.am
index b6dda4e5e..7f9e3c36e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,7 @@
1AUTOMAKE_OPTIONS = 1.4 foreign 1AUTOMAKE_OPTIONS = 1.4 foreign
2MAINTAINERCLEANFILES = Makefile.in 2MAINTAINERCLEANFILES = Makefile.in
3 3
4SUBDIRS = lib bin 4SUBDIRS = lib bin imported
5 5
6if BUILD_MODULES 6if BUILD_MODULES
7SUBDIRS += modules edje_externals 7SUBDIRS += modules edje_externals
diff --git a/src/bin/test_fileselector.c b/src/bin/test_fileselector.c
index eb76236b0..f22a6e9e3 100644
--- a/src/bin/test_fileselector.c
+++ b/src/bin/test_fileselector.c
@@ -334,6 +334,85 @@ _mode_option_create(Evas_Object *parent, Evas_Object *fs)
334 return frame; 334 return frame;
335} 335}
336 336
337static void
338_small_icon_clicked(void *data,
339 Evas_Object *obj EINA_UNUSED,
340 void *event_info EINA_UNUSED)
341{
342 Evas_Object *fs = data;
343 Evas_Coord w, h;
344
345 elm_fileselector_thumbnail_size_get(fs, &w, &h);
346
347 elm_fileselector_thumbnail_size_set(fs, 56, 56);
348 printf("Thumbnail icon was changed from %dx%d to 56x56\n", w, h);
349}
350
351static void
352_middle_icon_clicked(void *data,
353 Evas_Object *obj EINA_UNUSED,
354 void *event_info EINA_UNUSED)
355{
356 Evas_Object *fs = data;
357 Evas_Coord w, h;
358
359 elm_fileselector_thumbnail_size_get(fs, &w, &h);
360
361 elm_fileselector_thumbnail_size_set(fs, 78, 78);
362 printf("Thumbnail icon was changed from %dx%d to 78x78\n", w, h);
363}
364
365static void
366_big_icon_clicked(void *data,
367 Evas_Object *obj EINA_UNUSED,
368 void *event_info EINA_UNUSED)
369{
370 Evas_Object *fs = data;
371 Evas_Coord w, h;
372
373 elm_fileselector_thumbnail_size_get(fs, &w, &h);
374
375 elm_fileselector_thumbnail_size_set(fs, 131, 131);
376 printf("Thumbnail icon was changed from %dx%d to 131x131\n", w, h);
377}
378
379static Evas_Object *
380_thumbnail_size_option_create(Evas_Object *parent, Evas_Object *fs)
381{
382 Evas_Object *frame = NULL, *hbox = NULL, *bt = NULL;
383
384 frame = elm_frame_add(parent);
385 elm_object_text_set(frame, "Thumbnail Size");
386 evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, 0);
387 evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, 0);
388 evas_object_show(frame);
389
390 hbox = elm_box_add(frame);
391 elm_box_horizontal_set(hbox, EINA_TRUE);
392 elm_object_content_set(frame, hbox);
393 evas_object_show(hbox);
394
395 bt = elm_button_add(hbox);
396 elm_object_text_set(bt, "Small icon");
397 evas_object_smart_callback_add(bt, "clicked", _small_icon_clicked, fs);
398 elm_box_pack_end(hbox, bt);
399 evas_object_show(bt);
400
401 bt = elm_button_add(hbox);
402 elm_object_text_set(bt, "Middle icon");
403 evas_object_smart_callback_add(bt, "clicked", _middle_icon_clicked, fs);
404 elm_box_pack_end(hbox, bt);
405 evas_object_show(bt);
406
407 bt = elm_button_add(hbox);
408 elm_object_text_set(bt, "Big icon");
409 evas_object_smart_callback_add(bt, "clicked", _big_icon_clicked, fs);
410 elm_box_pack_end(hbox, bt);
411 evas_object_show(bt);
412
413 return frame;
414}
415
337void 416void
338test_fileselector(void *data EINA_UNUSED, 417test_fileselector(void *data EINA_UNUSED,
339 Evas_Object *obj EINA_UNUSED, 418 Evas_Object *obj EINA_UNUSED,
@@ -395,5 +474,6 @@ test_fileselector(void *data EINA_UNUSED,
395 elm_box_pack_end(vbox, _option_create(vbox, fs)); 474 elm_box_pack_end(vbox, _option_create(vbox, fs));
396 elm_box_pack_end(vbox, _getter_option_create(vbox, fs)); 475 elm_box_pack_end(vbox, _getter_option_create(vbox, fs));
397 elm_box_pack_end(vbox, _mode_option_create(vbox, fs)); 476 elm_box_pack_end(vbox, _mode_option_create(vbox, fs));
477 elm_box_pack_end(vbox, _thumbnail_size_option_create(vbox, fs));
398} 478}
399 479
diff --git a/src/bin/test_gengrid.c b/src/bin/test_gengrid.c
index cfe0e78db..d01f35dfb 100644
--- a/src/bin/test_gengrid.c
+++ b/src/bin/test_gengrid.c
@@ -36,6 +36,13 @@ struct _api_data
36}; 36};
37typedef struct _api_data api_data; 37typedef struct _api_data api_data;
38 38
39struct _Show_Data
40{
41 int winmode;
42 int scrollto;
43};
44typedef struct _Show_Data Show_Data;
45
39enum _api_state 46enum _api_state
40{ 47{
41 GRID_ALIGN_SET, 48 GRID_ALIGN_SET,
@@ -992,77 +999,47 @@ test_gengrid_item_styles(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
992} 999}
993 1000
994static void 1001static void
995_bring_in2_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) 1002_rd1_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
996{ 1003{
997 Evas_Object *win, *grid; 1004 Show_Data *sd = data;
998 static Item_Data id[5000]; 1005 sd->winmode = elm_radio_state_value_get(obj);
999 int i, n; 1006}
1000 char buf[PATH_MAX];
1001
1002 win = elm_win_util_standard_add("horz bring_in", "Horz Bring_in");
1003 elm_win_autodel_set(win, EINA_TRUE);
1004 evas_object_resize(win, 600, 200);
1005 evas_object_show(win);
1006
1007 grid = elm_gengrid_add(win);
1008 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1009 elm_win_resize_object_add(win, grid);
1010 elm_gengrid_item_size_set(grid,
1011 elm_config_scale_get() * 150,
1012 elm_config_scale_get() * 150);
1013 elm_gengrid_group_item_size_set(grid,
1014 elm_config_scale_get() * 31,
1015 elm_config_scale_get() * 31);
1016 elm_gengrid_horizontal_set(grid, EINA_TRUE);
1017 elm_gengrid_align_set(grid, 0.4, 0.8);
1018
1019 gic = elm_gengrid_item_class_new();
1020 gic->item_style = "default";
1021 gic->func.text_get = grid_text_get;
1022 gic->func.content_get = grid_content_get;
1023 gic->func.state_get = grid_state_get;
1024 gic->func.del = NULL;
1025
1026 n = 0;
1027 for (i = 0; i < 5000; i++)
1028 {
1029 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
1030 n = (n + 1) % 9;
1031 id[i].mode = i;
1032 id[i].path = eina_stringshare_add(buf);
1033 id[i].item = elm_gengrid_item_append(grid, gic, &(id[i]), grid_sel, NULL);
1034 if (i == 2400)
1035 elm_gengrid_item_selected_set(id[i].item, EINA_TRUE);
1036 }
1037 1007
1038 elm_gengrid_item_class_free(gic); 1008static void
1039 evas_object_show(grid); 1009_rd2_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1040 elm_gengrid_item_bring_in(id[2400].item, ELM_GENGRID_ITEM_SCROLLTO_IN); 1010{
1011 Show_Data *sd = data;
1012 sd->scrollto = elm_radio_state_value_get(obj);
1041} 1013}
1042 1014
1043static void 1015static void
1044_bring_in1_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) 1016_bring_in_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1045{ 1017{
1046 Evas_Object *win, *grid; 1018 Evas_Object *win, *grid;
1047 static Item_Data id[5000]; 1019 static Item_Data ti[5000];
1048 int i, n; 1020 int i, n;
1049 char buf[PATH_MAX]; 1021 char buf[PATH_MAX];
1050 1022
1051 win = elm_win_util_standard_add("vertical bring_in", "Vertical Bring_in"); 1023 if (!data) return;
1024
1025 Show_Data *sd = data;
1026
1027 if (sd->winmode == 0)
1028 win = elm_win_util_standard_add("horz bring_in", "Horz Bring_in");
1029 else
1030 win = elm_win_util_standard_add("vertical bring_in", "Vertical Bring_in");
1052 elm_win_autodel_set(win, EINA_TRUE); 1031 elm_win_autodel_set(win, EINA_TRUE);
1053 evas_object_resize(win, 600, 400);
1054 evas_object_show(win);
1055 1032
1056 grid = elm_gengrid_add(win); 1033 grid = elm_gengrid_add(win);
1034 elm_gengrid_item_size_set(grid, 150, 150);
1035 elm_gengrid_group_item_size_set(grid, 31, 31);
1036 if (sd->winmode == 0)
1037 elm_gengrid_horizontal_set(grid, EINA_TRUE);
1038 else if (sd->winmode == 1)
1039 elm_gengrid_horizontal_set(grid, EINA_FALSE);
1057 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); 1040 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1058 elm_win_resize_object_add(win, grid); 1041 elm_win_resize_object_add(win, grid);
1059 elm_gengrid_item_size_set(grid, 1042 elm_gengrid_align_set(grid, 0.1, 0.1);
1060 elm_config_scale_get() * 150,
1061 elm_config_scale_get() * 150);
1062 elm_gengrid_group_item_size_set(grid,
1063 elm_config_scale_get() * 31,
1064 elm_config_scale_get() * 31);
1065 elm_gengrid_align_set(grid, 0.1, 1.0);
1066 1043
1067 gic = elm_gengrid_item_class_new(); 1044 gic = elm_gengrid_item_class_new();
1068 gic->item_style = "default"; 1045 gic->item_style = "default";
@@ -1076,43 +1053,53 @@ _bring_in1_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
1076 { 1053 {
1077 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]); 1054 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
1078 n = (n + 1) % 9; 1055 n = (n + 1) % 9;
1079 id[i].mode = i; 1056 ti[i].mode = i;
1080 id[i].path = eina_stringshare_add(buf); 1057 ti[i].path = eina_stringshare_add(buf);
1081 id[i].item = elm_gengrid_item_append(grid, gic, &(id[i]), grid_sel, NULL); 1058 ti[i].item = elm_gengrid_item_append(grid, gic, &(ti[i]), grid_sel, NULL);
1082 if (i == 1430) 1059 if (i == 1430)
1083 elm_gengrid_item_selected_set(id[i].item, EINA_TRUE); 1060 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
1084 } 1061 }
1085 1062
1086 elm_gengrid_item_class_free(gic); 1063 elm_gengrid_item_class_free(gic);
1087 elm_gengrid_item_bring_in(id[1430].item, ELM_GENGRID_ITEM_SCROLLTO_IN); 1064 elm_gengrid_item_bring_in(ti[1430].item, sd->scrollto);
1088 evas_object_show(grid); 1065 evas_object_show(grid);
1089}
1090 1066
1067 if (sd->winmode == 0)
1068 evas_object_resize(win, 600, 200);
1069 if (sd->winmode == 1)
1070 evas_object_resize(win, 600, 400);
1071 evas_object_show(win);
1072}
1091 1073
1092static void 1074static void
1093_show2_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) 1075_show_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1094{ 1076{
1095 Evas_Object *win, *grid; 1077 Evas_Object *win, *grid;
1096 static Item_Data id[10000]; 1078 static Item_Data ti[10000];
1097 int i, n; 1079 int i, n;
1098 char buf[PATH_MAX]; 1080 char buf[PATH_MAX];
1081 double scale = elm_config_scale_get();
1082
1083 if (!data) return;
1099 1084
1100 win = elm_win_util_standard_add("horz show", "Horz Show"); 1085 Show_Data *sd = data;
1086
1087 if (sd->winmode == 0)
1088 win = elm_win_util_standard_add("horz show", "Horz Show");
1089 else
1090 win = elm_win_util_standard_add("vertical show", "Vertical Show");
1101 elm_win_autodel_set(win, EINA_TRUE); 1091 elm_win_autodel_set(win, EINA_TRUE);
1102 evas_object_resize(win, 600, 200);
1103 evas_object_show(win);
1104 1092
1105 grid = elm_gengrid_add(win); 1093 grid = elm_gengrid_add(win);
1094 elm_gengrid_item_size_set(grid, 150 * scale, 150 * scale);
1095 elm_gengrid_group_item_size_set(grid, 31 * scale, 31 * scale);
1096 if (sd->winmode == 0)
1097 elm_gengrid_horizontal_set(grid, EINA_TRUE);
1098 else if (sd->winmode == 1)
1099 elm_gengrid_horizontal_set(grid, EINA_FALSE);
1106 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); 1100 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1107 elm_win_resize_object_add(win, grid); 1101 elm_win_resize_object_add(win, grid);
1108 elm_gengrid_item_size_set(grid, 1102 elm_gengrid_align_set(grid, 0.1, 0.1);
1109 elm_config_scale_get() * 150,
1110 elm_config_scale_get() * 150);
1111 elm_gengrid_group_item_size_set(grid,
1112 elm_config_scale_get() * 31,
1113 elm_config_scale_get() * 31);
1114 elm_gengrid_horizontal_set(grid, EINA_TRUE);
1115 elm_gengrid_align_set(grid, 0.3, 0.7);
1116 1103
1117 gic = elm_gengrid_item_class_new(); 1104 gic = elm_gengrid_item_class_new();
1118 gic->item_style = "default"; 1105 gic->item_style = "default";
@@ -1126,105 +1113,157 @@ _show2_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev
1126 { 1113 {
1127 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]); 1114 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
1128 n = (n + 1) % 9; 1115 n = (n + 1) % 9;
1129 id[i].mode = i; 1116 ti[i].mode = i;
1130 id[i].path = eina_stringshare_add(buf); 1117 ti[i].path = eina_stringshare_add(buf);
1131 id[i].item = elm_gengrid_item_append(grid, gic, &(id[i]), grid_sel, NULL); 1118 ti[i].item = elm_gengrid_item_append(grid, gic, &(ti[i]), grid_sel, NULL);
1132 if (i == 3333) 1119 if (i == 2579)
1133 elm_gengrid_item_selected_set(id[i].item, EINA_TRUE); 1120 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
1134 } 1121 }
1135 1122
1136 elm_gengrid_item_class_free(gic); 1123 elm_gengrid_item_class_free(gic);
1137 evas_object_show(grid); 1124 evas_object_show(grid);
1138 elm_gengrid_item_show(id[3333].item, ELM_GENGRID_ITEM_SCROLLTO_IN); 1125 elm_gengrid_item_show(ti[2579].item, sd->scrollto);
1126
1127 if (sd->winmode == 0)
1128 evas_object_resize(win, 600, 200);
1129 if (sd->winmode == 1)
1130 evas_object_resize(win, 600, 600);
1131 evas_object_show(win);
1139} 1132}
1140 1133
1141static void 1134static Evas_Object *
1142_show1_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) 1135_window_mode_frame_new(Evas_Object *win, void *data)
1143{ 1136{
1144 Evas_Object *win, *grid; 1137 Evas_Object *fr, *bx, *rd, *rdg;
1145 static Item_Data id[10000]; 1138 Show_Data *sd = data;
1146 int i, n;
1147 char buf[PATH_MAX];
1148 1139
1149 win = elm_win_util_standard_add("vertical show", "Vertical Show"); 1140 fr = elm_frame_add(win);
1150 elm_win_autodel_set(win, EINA_TRUE); 1141 evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1151 evas_object_resize(win, 600, 600); 1142 evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
1152 evas_object_show(win); 1143 elm_object_text_set(fr, "Direction");
1144 evas_object_show(fr);
1153 1145
1154 grid = elm_gengrid_add(win); 1146 bx = elm_box_add(win);
1155 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); 1147 elm_object_content_set(fr, bx);
1156 elm_win_resize_object_add(win, grid); 1148 evas_object_show(bx);
1157 elm_gengrid_item_size_set(grid,
1158 elm_config_scale_get() * 150,
1159 elm_config_scale_get() * 150);
1160 elm_gengrid_group_item_size_set(grid,
1161 elm_config_scale_get() * 31,
1162 elm_config_scale_get() * 31);
1163 elm_gengrid_align_set(grid, 0.1, 0.3);
1164 1149
1165 gic = elm_gengrid_item_class_new(); 1150 rd = elm_radio_add(win);
1166 gic->item_style = "default"; 1151 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1167 gic->func.text_get = grid_text_get; 1152 elm_radio_state_value_set(rd, 0);
1168 gic->func.content_get = grid_content_get; 1153 elm_object_text_set(rd, "horizontal");
1169 gic->func.state_get = grid_state_get; 1154 evas_object_smart_callback_add(rd, "changed", _rd1_changed_cb, sd);
1170 gic->func.del = NULL; 1155 evas_object_show(rd);
1156 elm_box_pack_end(bx, rd);
1157 rdg = rd;
1158
1159 rd = elm_radio_add(win);
1160 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1161 elm_radio_state_value_set(rd, 1);
1162 elm_object_text_set(rd, "vertical");
1163 elm_radio_group_add(rd, rdg);
1164 evas_object_smart_callback_add(rd, "changed", _rd1_changed_cb, sd);
1165 evas_object_show(rd);
1166 elm_box_pack_end(bx, rd);
1167
1168 return fr;
1169}
1171 1170
1172 n = 0; 1171static Evas_Object *
1173 for (i = 0; i < 10000; i++) 1172_scrollto_mode_frame_new(Evas_Object *win, void *data)
1174 { 1173{
1175 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]); 1174 Evas_Object *fr, *bx, *rd, *rdg;
1176 n = (n + 1) % 9; 1175 Show_Data *sd = data;
1177 id[i].mode = i;
1178 id[i].path = eina_stringshare_add(buf);
1179 id[i].item = elm_gengrid_item_append(grid, gic, &(id[i]), grid_sel, NULL);
1180 if (i == 2579)
1181 elm_gengrid_item_selected_set(id[i].item, EINA_TRUE);
1182 }
1183 1176
1184 elm_gengrid_item_class_free(gic); 1177 fr = elm_frame_add(win);
1185 evas_object_show(grid); 1178 evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1186 elm_gengrid_item_show(id[2579].item, ELM_GENGRID_ITEM_SCROLLTO_IN); 1179 evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
1180 elm_object_text_set(fr, "Scrollto Mode");
1181 evas_object_show(fr);
1182
1183 bx = elm_box_add(win);
1184 elm_object_content_set(fr, bx);
1185 evas_object_show(bx);
1186
1187 rd = elm_radio_add(win);
1188 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1189 elm_radio_state_value_set(rd, 0);
1190 elm_object_text_set(rd, "SCROLLTO_NONE");
1191 evas_object_smart_callback_add(rd, "changed", _rd2_changed_cb, sd);
1192 evas_object_show(rd);
1193 elm_box_pack_end(bx, rd);
1194 rdg = rd;
1195
1196 rd = elm_radio_add(win);
1197 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1198 elm_radio_state_value_set(rd, 1);
1199 elm_object_text_set(rd, "SCROLLTO_IN");
1200 elm_radio_group_add(rd, rdg);
1201 evas_object_smart_callback_add(rd, "changed", _rd2_changed_cb, sd);
1202 evas_object_show(rd);
1203 elm_box_pack_end(bx, rd);
1204
1205 rd = elm_radio_add(win);
1206 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1207 elm_radio_state_value_set(rd, 2);
1208 elm_object_text_set(rd, "SCROLLTO_TOP");
1209 elm_radio_group_add(rd, rdg);
1210 evas_object_smart_callback_add(rd, "changed", _rd2_changed_cb, sd);
1211 evas_object_show(rd);
1212 elm_box_pack_end(bx, rd);
1213
1214 rd = elm_radio_add(win);
1215 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1216 elm_radio_state_value_set(rd, 4);
1217 elm_object_text_set(rd, "SCROLLTO_MIDDLE");
1218 elm_radio_group_add(rd, rdg);
1219 evas_object_smart_callback_add(rd, "changed", _rd2_changed_cb, sd);
1220 evas_object_show(rd);
1221 elm_box_pack_end(bx, rd);
1222
1223 return fr;
1187} 1224}
1188 1225
1189void 1226void
1190test_gengrid4(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) 1227test_gengrid4(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1191{ 1228{
1192 Evas_Object *win, *bt, *bx; 1229 Evas_Object *win, *bt, *bx, *bx2, *fr;
1193 api_data *api = calloc(1, sizeof(api_data)); 1230 Show_Data *sd = calloc(1, sizeof(Show_Data));
1194 1231
1195 win = elm_win_util_standard_add("gengrid show/scroll_in", "GenGrid Show/Bring_in"); 1232 win = elm_win_util_standard_add("gengrid-show-bringin", "GenGrid Show/Bring_in");
1196 elm_win_autodel_set(win, EINA_TRUE); 1233 elm_win_autodel_set(win, EINA_TRUE);
1197 evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api); 1234 evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, sd);
1198 evas_object_resize(win, 300, 300);
1199 evas_object_show(win); 1235 evas_object_show(win);
1200 1236
1201 bx = elm_box_add(win); 1237 bx = elm_box_add(win);
1202 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); 1238 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1203 elm_win_resize_object_add(win, bx); 1239 elm_win_resize_object_add(win, bx);
1204 elm_box_horizontal_set(bx, EINA_TRUE);
1205 evas_object_show(bx); 1240 evas_object_show(bx);
1206 1241
1207 bt = elm_button_add(win); 1242 bx2 = elm_box_add(bx);
1208 elm_object_text_set(bt, "Vertical Show"); 1243 elm_box_horizontal_set(bx2, EINA_TRUE);
1209 evas_object_smart_callback_add(bt, "clicked", _show1_clicked_cb, NULL); 1244 elm_box_pack_end(bx, bx2);
1210 elm_box_pack_end(bx, bt); 1245 evas_object_show(bx2);
1211 evas_object_show(bt);
1212 1246
1213 bt = elm_button_add(win); 1247 fr = _window_mode_frame_new(bx2, sd);
1214 elm_object_text_set(bt, "Vertical Bring_in"); 1248 elm_box_pack_end(bx2, fr);
1215 evas_object_smart_callback_add(bt, "clicked", _bring_in1_clicked_cb, NULL);
1216 elm_box_pack_end(bx, bt);
1217 evas_object_show(bt);
1218 1249
1219 bt = elm_button_add(win); 1250 fr = _scrollto_mode_frame_new(bx2, sd);
1220 elm_object_text_set(bt, "Horz Show"); 1251 elm_box_pack_end(bx2, fr);
1221 evas_object_smart_callback_add(bt, "clicked", _show2_clicked_cb, NULL); 1252
1222 elm_box_pack_end(bx, bt); 1253 bx2 = elm_box_add(bx);
1254 elm_box_horizontal_set(bx2, EINA_TRUE);
1255 elm_box_pack_end(bx, bx2);
1256 evas_object_show(bx2);
1257
1258 bt = elm_button_add(bx2);
1259 elm_object_text_set(bt, "Show");
1260 evas_object_smart_callback_add(bt, "clicked", _show_clicked_cb, sd);
1261 elm_box_pack_end(bx2, bt);
1223 evas_object_show(bt); 1262 evas_object_show(bt);
1224 1263
1225 bt = elm_button_add(win); 1264 bt = elm_button_add(bx2);
1226 elm_object_text_set(bt, "Horz Bring_in"); 1265 elm_object_text_set(bt, "Bring In");
1227 evas_object_smart_callback_add(bt, "clicked", _bring_in2_clicked_cb, NULL); 1266 evas_object_smart_callback_add(bt, "clicked", _bring_in_clicked_cb, sd);
1228 elm_box_pack_end(bx, bt); 1267 elm_box_pack_end(bx2, bt);
1229 evas_object_show(bt); 1268 evas_object_show(bt);
1230} 1269}
diff --git a/src/bin/test_popup.c b/src/bin/test_popup.c
index 4c5de283f..0b01b67f8 100644
--- a/src/bin/test_popup.c
+++ b/src/bin/test_popup.c
@@ -3,9 +3,25 @@
3#endif 3#endif
4#include <Elementary.h> 4#include <Elementary.h>
5 5
6#define POPUP_POINT_MAX 6
7
8typedef struct
9{
10 double x;
11 double y;
12} Evas_Rel_Coord_Point;
6 13
7static Evas_Object *g_popup = NULL; 14static Evas_Object *g_popup = NULL;
8static int times = 0; 15static int times = 0;
16static Evas_Rel_Coord_Point _popup_point[POPUP_POINT_MAX] =
17{
18 { 0.01, 0.01 },
19 { 0.2, 0.2 },
20 { 0.5, 0.5 },
21 { 0.99, 0.01 },
22 { 0.01, 0.99 },
23 { 0.99, 0.99 }
24};
9 25
10static void 26static void
11_response_cb(void *data EINA_UNUSED, Evas_Object *obj, 27_response_cb(void *data EINA_UNUSED, Evas_Object *obj,
@@ -22,6 +38,23 @@ _popup_close_cb(void *data, Evas_Object *obj EINA_UNUSED,
22} 38}
23 39
24static void 40static void
41_popup_align_cb(void *data, Evas_Object *obj EINA_UNUSED,
42 void *event_info EINA_UNUSED)
43{
44 static int k = 0;
45 double h = -1, v = -1;
46
47 elm_popup_align_set(data, _popup_point[k].x, _popup_point[k].y);
48 elm_popup_align_get(data, &h, &v);
49
50 printf("elm_popup_align_get :: Aligned: %lf %lf\n", h, v);
51
52 k++;
53 if (k >= POPUP_POINT_MAX)
54 k = 0;
55}
56
57static void
25_g_popup_response_cb(void *data, Evas_Object *obj EINA_UNUSED, 58_g_popup_response_cb(void *data, Evas_Object *obj EINA_UNUSED,
26 void *event_info EINA_UNUSED) 59 void *event_info EINA_UNUSED)
27{ 60{
@@ -498,6 +531,33 @@ _popup_transparent_cb(void *data, Evas_Object *obj EINA_UNUSED,
498} 531}
499 532
500static void 533static void
534_popup_transparent_align_cb(void *data, Evas_Object *obj EINA_UNUSED,
535 void *event_info EINA_UNUSED)
536{
537 Evas_Object *popup;
538 Evas_Object *btn, *btn1;
539
540 popup = elm_popup_add(data);
541 elm_object_style_set(popup, "transparent");
542 elm_object_text_set(popup, "This Popup has transparent background");
543
544 // popup buttons
545 btn = elm_button_add(popup);
546 elm_object_text_set(btn, "Move");
547 elm_object_part_content_set(popup, "button1", btn);
548 evas_object_smart_callback_add(btn, "clicked", _popup_align_cb, popup);
549
550 btn1 = elm_button_add(popup);
551 elm_object_text_set(btn1, "Close");
552 elm_object_part_content_set(popup, "button2", btn1);
553 evas_object_smart_callback_add(btn1, "clicked", _popup_close_cb, popup);
554
555 // popup show should be called after adding all the contents and the buttons
556 // of popup to set the focus into popup's contents correctly.
557 evas_object_show(popup);
558}
559
560static void
501_list_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) 561_list_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
502{ 562{
503 evas_object_del(data); 563 evas_object_del(data);
@@ -578,6 +638,8 @@ test_popup(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
578 _popup_center_text_3button_add_remove_button_cb, win); 638 _popup_center_text_3button_add_remove_button_cb, win);
579 elm_list_item_append(list, "popup-transparent", NULL, NULL, 639 elm_list_item_append(list, "popup-transparent", NULL, NULL,
580 _popup_transparent_cb, win); 640 _popup_transparent_cb, win);
641 elm_list_item_append(list, "popup-transparent-align", NULL, NULL,
642 _popup_transparent_align_cb, win);
581 elm_list_item_append(list, "popup-center-title + list content + 1 button", 643 elm_list_item_append(list, "popup-center-title + list content + 1 button",
582 NULL, NULL, _popup_center_title_list_content_1button_cb, 644 NULL, NULL, _popup_center_title_list_content_1button_cb,
583 win); 645 win);
diff --git a/src/bin/test_slider.c b/src/bin/test_slider.c
index f641379a1..e5378254d 100644
--- a/src/bin/test_slider.c
+++ b/src/bin/test_slider.c
@@ -113,6 +113,20 @@ test_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
113 elm_box_pack_end(bx, sl); 113 elm_box_pack_end(bx, sl);
114 evas_object_show(sl); 114 evas_object_show(sl);
115 115
116 sl = elm_slider_add(bx);
117 elm_slider_unit_format_set(sl, "%1.0f units");
118 elm_slider_indicator_format_set(sl, "%1.0f");
119 elm_slider_span_size_set(sl, 120);
120 elm_slider_min_max_set(sl, 0, 100);
121 elm_object_text_set(sl, "Always show : ");
122 step = _step_size_calculate(0, 9);
123 elm_slider_step_set(sl, step);
124 elm_slider_indicator_show_on_focus_set(sl, EINA_TRUE);
125 evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
126 evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);
127 elm_box_pack_end(bx, sl);
128 evas_object_show(sl);
129
116 // normal horizontal slider 130 // normal horizontal slider
117 ic = elm_icon_add(bx); 131 ic = elm_icon_add(bx);
118 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get()); 132 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
diff --git a/src/imported/Makefile.am b/src/imported/Makefile.am
new file mode 100644
index 000000000..a82538f89
--- /dev/null
+++ b/src/imported/Makefile.am
@@ -0,0 +1,5 @@
1AUTOMAKE_OPTIONS = 1.4 foreign
2MAINTAINERCLEANFILES = Makefile.in
3
4SUBDIRS = \
5atspi
diff --git a/src/imported/atspi/Makefile.am b/src/imported/atspi/Makefile.am
new file mode 100644
index 000000000..fa32175f1
--- /dev/null
+++ b/src/imported/atspi/Makefile.am
@@ -0,0 +1,4 @@
1AUTOMAKE_OPTIONS = 1.4 foreign
2MAINTAINERCLEANFILES = Makefile.in
3
4noinst_HEADERS = atspi-constants.h
diff --git a/src/imported/atspi/atspi-constants.h b/src/imported/atspi/atspi-constants.h
new file mode 100644
index 000000000..7a55169f1
--- /dev/null
+++ b/src/imported/atspi/atspi-constants.h
@@ -0,0 +1,1241 @@
1/*
2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
4 *
5 * Copyright 2010, 2011 Novell, Inc.
6 * Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
17 *
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
22 */
23
24/* TODO: Auto-generate this file again
25
26
27
28 !\mainpage AT-SPI Interfaces and Subinterfaces
29
30 This is the main documentation page for the
31 Assistive Technology Service Provider Interface (AT-SPI).
32
33 \section apps Applications and Interface Components
34 Namespace Accessibility includes service APIs implemented by
35 participating applications and their user interface components:\n\n
36 Accessibility::Accessible\n
37 Accessibility::Application\n
38 Accessibility::Desktop\n
39 Accessibility::Collecgtion\n
40 Accessibility::Component\n
41 Accessibility::Hypertext\n
42 Accessibility::Image\n
43 Accessibility::Selection\n
44 Accessibility::Table\n
45 Accessibility::Text\n
46 Accessibility::EditableText\n
47 Accessibility::Value
48
49 \section types Enumerated Types
50 Accessibility defines a number of key enumerated types, including:\n\n
51 Accessibility::RelationType\n
52 Accessibility::Role\n
53 Accessibility::StateType\n
54 Accessibility::Event\n
55 Accessibility::EventDetails \n
56
57 \section Registry
58 Accessibility also includes Accessibility::Registry,
59 which is the service used by assistive technologies and related
60 AT-SPI clients to register interest in certain classes of events,
61 enumerate the currently available desktop and application list,
62 and to synthesize certain kinds of device events.
63
64 \section listeners Event Listener Interfaces
65 Accessibility::EventListener\n
66 Accessibility::DeviceEventListener
67
68 \section helpers Helper Interfaces
69
70 The following interfaces may be implemented by assistive technologies
71 themselves, in order to export their services in a consistent manner or
72 in order to interoperate with other applications or desktop services.\n
73
74 Accessibility::LoginHelper : Implemented by adaptive technologies which
75 need to participate in user-authentication or login activities, and which
76 therefore may need negotiation with authentication agents or processes.\n
77
78 Accessibility::Selector [NEW]: Implemented by user agents or assistive
79 technologies which export lists of choices from which the end-user is
80 expected to make selections. Useful for various types of remote
81 activation or intercommunication between multiple ATs.
82
83 */
84
85#ifndef _ATSPI_CONSTANTS_H_
86#define _ATSPI_CONSTANTS_H_
87#ifdef __cplusplus
88extern "C" {
89#endif
90
91/**
92 * AtspiLocaleType:
93 * @ATSPI_LOCALE_TYPE_MESSAGES: For localizable natural-language messages.
94 * @ATSPI_LOCALE_TYPE_COLLATE: For regular expression matching and string
95 * collation.
96 * @ATSPI_LOCALE_TYPE_CTYPE: For regular expression matching, character
97 * classification, conversion, case-sensitive comparison, and wide character
98 * functions.
99 * @ATSPI_LOCALE_TYPE_MONETARY: For monetary formatting.
100 * @ATSPI_LOCALE_TYPE_NUMERIC: For number formatting (such as the decimal
101 * point and the thousands separator).
102 * @ATSPI_LOCALE_TYPE_TIME: For time and date formatting.
103 *
104 * Used by interfaces #AtspiText and #AtspiDocument, this
105 * enumeration corresponds to the POSIX 'setlocale' enum values.
106 *
107 **/
108typedef enum {
109 ATSPI_LOCALE_TYPE_MESSAGES,
110 ATSPI_LOCALE_TYPE_COLLATE,
111 ATSPI_LOCALE_TYPE_CTYPE,
112 ATSPI_LOCALE_TYPE_MONETARY,
113 ATSPI_LOCALE_TYPE_NUMERIC,
114 ATSPI_LOCALE_TYPE_TIME,
115} AtspiLocaleType;
116
117/**
118 * ATSPI_LOCALE_TYPE_COUNT:
119 *
120 * One higher than the highest valid value of #AtspiLocaleType.
121 **/
122#define ATSPI_LOCALE_TYPE _COUNT(5+1)
123
124/**
125 * AtspiCoordType:
126 * @ATSPI_COORD_TYPE_SCREEN: Specifies xy coordinates relative to the screen.
127 * @ATSPI_COORD_TYPE_WINDOW: Specifies xy coordinates relative to the widget's
128 * top-level window.
129 *
130 * Enumeration used by #AtspiComponent, #AtspiImage, and #AtspiText interfaces
131 * to specify whether coordinates are relative to the window or the screen.
132 *
133 **/
134typedef enum {
135 ATSPI_COORD_TYPE_SCREEN,
136 ATSPI_COORD_TYPE_WINDOW,
137} AtspiCoordType;
138
139/**
140 * ATSPI_COORD_TYPE_COUNT:
141 *
142 * One higher than the highest valid value of #AtspiCoordType.
143 **/
144#define ATSPI_COORD_TYPE_COUNT (1+1)
145
146/**
147 * AtspiCollectionSortOrder:
148 * @ATSPI_Collection_SORT_ORDER_INVALID:
149 * @ATSPI_Collection_SORT_ORDER_CANONICAL:
150 * @ATSPI_Collection_SORT_ORDER_FLOW:
151 * @ATSPI_Collection_SORT_ORDER_TAB:
152 * @ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL:
153 * @ATSPI_Collection_SORT_ORDER_REVERSE_FLOW:
154 * @ATSPI_Collection_SORT_ORDER_REVERSE_TAB:
155 * @ATSPI_Collection_SORT_ORDER_LAST_DEFINED:
156 *
157 * Enumeration used by interface #AtspiCollection to specify
158 * the way #AtspiAccesible objects should be sorted.
159 *
160 **/
161typedef enum {
162 ATSPI_Collection_SORT_ORDER_INVALID,
163 ATSPI_Collection_SORT_ORDER_CANONICAL,
164 ATSPI_Collection_SORT_ORDER_FLOW,
165 ATSPI_Collection_SORT_ORDER_TAB,
166 ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL,
167 ATSPI_Collection_SORT_ORDER_REVERSE_FLOW,
168 ATSPI_Collection_SORT_ORDER_REVERSE_TAB,
169 ATSPI_Collection_SORT_ORDER_LAST_DEFINED,
170} AtspiCollectionSortOrder;
171
172/**
173 * ATSPI_SORTORDER_COUNT:
174 *
175 * One higher than the highest valid value of #AtspiCollectionSortOrder.
176 */
177#define ATSPI_SORTORDER_COUNT (7+1)
178
179/**
180 * AtspiCollectionMatchType:
181 * @ATSPI_Collection_MATCH_INVALID: Indicates an error condition or
182 * uninitialized value.
183 * @ATSPI_Collection_MATCH_ALL: #TRUE if all of the criteria are met.
184 * @ATSPI_Collection_MATCH_ANY: #TRUE if any of the criteria are met.
185 * @ATSPI_Collection_MATCH_NONE: #TRUE if none of the criteria are met.
186 * @ATSPI_Collection_MATCH_EMPTY: Same as @ATSPI_Collection_MATCH_ALL if
187 * the criteria is non-empty; for empty criteria this rule requires returned
188 * value to also have empty set.
189 * @ATSPI_Collection_MATCH_LAST_DEFINED: Used only to determine the end of the
190 * enumeration.
191 *
192 * Enumeration used by #AtspiMatchRule to specify
193 * how to interpret #AtspiAccesible objects.
194 *
195 **/
196typedef enum {
197 ATSPI_Collection_MATCH_INVALID,
198 ATSPI_Collection_MATCH_ALL,
199 ATSPI_Collection_MATCH_ANY,
200 ATSPI_Collection_MATCH_NONE,
201 ATSPI_Collection_MATCH_EMPTY,
202 ATSPI_Collection_MATCH_LAST_DEFINED,
203} AtspiCollectionMatchType;
204
205/**
206 * ATSPI_MATCHTYPE_COUNT:
207 *
208 * One higher than the highest valid value of #AtspiCollectionMatchType.
209 **/
210#define ATSPI_MATCHTYPES_COUNT (5+1)
211
212/**
213 * AtspiCollectionTreeTraversalType:
214 * @ATSPI_Collection_TREE_RESTRICT_CHILDREN:
215 * @ATSPI_Collection_TREE_RESTRICT_SIBLING:
216 * @ATSPI_Collection_TREE_INORDER:
217 * @ATSPI_Collection_TREE_LAST_DEFINED:
218 *
219 * Enumeration used by interface #AtspiCollection to specify
220 * restrictions on #AtspiAccesible objects to be traversed.
221 *
222 **/
223typedef enum {
224 ATSPI_Collection_TREE_RESTRICT_CHILDREN,
225 ATSPI_Collection_TREE_RESTRICT_SIBLING,
226 ATSPI_Collection_TREE_INORDER,
227 ATSPI_Collection_TREE_LAST_DEFINED,
228} AtspiCollectionTreeTraversalType;
229
230/**
231 * ATSPI_TREETRAVERSALTYPE_COUNT:
232 *
233 * One higher than the highest valid value of
234 * #AtspiCollection_TreeTraversalType.
235 */
236#define ATSPI_TREETRAVERSALTYPE _COUNT(3+1)
237
238/**
239 * AtspiComponentLayer:
240 * @ATSPI_LAYER_INVALID: Indicates an error condition or uninitialized value.
241 * @ATSPI_LAYER_BACKGROUND: The bottom-most layer, over which everything else
242 * is painted. The 'desktop background' is generally in this layer.
243 * @ATSPI_LAYER_CANVAS: The 'background' layer for most content renderers and
244 * UI #AtspiComponent containers.
245 * @ATSPI_LAYER_WIDGET: The layer in which the majority of ordinary
246 * 'foreground' widgets reside.
247 * @ATSPI_LAYER_MDI: A special layer between @ATSPI_LAYER_CANVAS and
248 * @ATSPI_LAYER_WIDGET, in which the 'pseudo windows' (e.g. the MDI frames)
249 * reside. See #atspi_component_get_mdi_z_order.
250 * @ATSPI_LAYER_POPUP: A layer for popup window content, above
251 * @ATSPI_LAYER_WIDGET.
252 * @ATSPI_LAYER_OVERLAY: The topmost layer.
253 * @ATSPI_LAYER_WINDOW: The layer in which a toplevel window background usually
254 * resides.
255 * @ATSPI_LAYER_LAST_DEFINED: Used only to determine the end of the
256 * enumeration.
257 *
258 * The #AtspiComponentLayer of an #AtspiComponent instance indicates its
259 * relative stacking order with respect to the onscreen visual representation
260 * of the UI. #AtspiComponentLayer, in combination with #AtspiComponent bounds
261 * information, can be used to compute the visibility of all or part of a
262 * component. This is important in programmatic determination of
263 * region-of-interest for magnification, and in
264 * flat screen review models of the screen, as well as
265 * for other uses. Objects residing in two of the #AtspiComponentLayer
266 * categories support further z-ordering information, with respect to their
267 * peers in the same layer: namely, @ATSPI_LAYER_WINDOW and
268 * @ATSPI_LAYER_MDI. Relative stacking order for other objects within the
269 * same layer is not available; the recommended heuristic is
270 * first child paints first. In other words, assume that the
271 * first siblings in the child list are subject to being overpainted by later
272 * siblings if their bounds intersect. The order of layers, from bottom to top,
273 * is: @ATSPI_LAYER_BACKGROUND, @ATSPI_LAYER_WINDOW, @ATSPI_LAYER_MDI,
274 * @ATSPI_LAYER_CANVAS, @ATSPI_LAYER_WIDGET, @ATSPI_LAYER_POPUP, and
275 * @ATSPI_LAYER_OVERLAY.
276 *
277 */
278typedef enum {
279 ATSPI_LAYER_INVALID,
280 ATSPI_LAYER_BACKGROUND,
281 ATSPI_LAYER_CANVAS,
282 ATSPI_LAYER_WIDGET,
283 ATSPI_LAYER_MDI,
284 ATSPI_LAYER_POPUP,
285 ATSPI_LAYER_OVERLAY,
286 ATSPI_LAYER_WINDOW,
287 ATSPI_LAYER_LAST_DEFINED,
288} AtspiComponentLayer;
289
290/**
291 * ATSPI_COMPONENTLAYER_COUNT:
292 *
293 * One higher than the highest valid value of #AtspiComponentLayer.
294 **/
295#define ATSPI_COMPONENTLAYER_COUNT (8+1)
296
297/**
298 * AtspiTextBoundaryType:
299 * @ATSPI_TEXT_BOUNDARY_CHAR: An #AtspiText instance is bounded by this
300 * character only. Start and end offsets differ by one, by definition,
301 * for this value.
302 * @ATSPI_TEXT_BOUNDARY_WORD_START: Boundary condition is start of a word; i.e.
303 * range is from start of one word to the start of another word.
304 * @ATSPI_TEXT_BOUNDARY_WORD_END: Boundary condition is the end of a word; i.e.
305 * range is from the end of one word to the end of another. Some locales
306 * may not distinguish between words and characters or glyphs. In particular,
307 * those locales which use wholly or partially ideographic character sets.
308 * In these cases, characters may be returned in lieu of multi-character
309 * substrings.
310 * @ATSPI_TEXT_BOUNDARY_SENTENCE_START: Boundary condition is start of a
311 * sentence, as determined by the application. Some locales or
312 * character sets may not include explicit sentence delimiters, so this
313 * boundary type can not always be honored. Some locales will return lines
314 * of text instead of grammatical sentences.
315 * @ATSPI_TEXT_BOUNDARY_SENTENCE_END: Boundary condition is end of a sentence,
316 * as determined by the application, including the sentence-delimiting
317 * character, for instance '.' Some locales or character sets may not
318 * include explicit sentence delimiters, so this boundary type can not
319 * always be honored. Some locales will return lines of text instead of
320 * grammatical sentences.
321 * @ATSPI_TEXT_BOUNDARY_LINE_START: Boundary condition is the start of a line;
322 * i.e. range is from start of one line to the start of another. This
323 * generally means that an end-of-line character will appear at the end of
324 * the range.
325 * @ATSPI_TEXT_BOUNDARY_LINE_END: Boundary condition is the end of a line; i.e.
326 * range is from start of one line to the start of another. This generally
327 * means that an end-of-line character will be the first character of the
328 * range.
329 *
330 * Specifies the boundary conditions determining a run of text as returned from
331 * #atspi_text_get_text_at_offset, #atspi_text_get_text_after_offset, and
332 * #atspi_text_get_text_before_offset.
333 *
334 **/
335typedef enum {
336 ATSPI_TEXT_BOUNDARY_CHAR,
337 ATSPI_TEXT_BOUNDARY_WORD_START,
338 ATSPI_TEXT_BOUNDARY_WORD_END,
339 ATSPI_TEXT_BOUNDARY_SENTENCE_START,
340 ATSPI_TEXT_BOUNDARY_SENTENCE_END,
341 ATSPI_TEXT_BOUNDARY_LINE_START,
342 ATSPI_TEXT_BOUNDARY_LINE_END,
343} AtspiTextBoundaryType;
344
345/**
346 * ATSPI_TEXT_BOUNDARY_TYPE_COUNT:
347 *
348 * One higher than the highest valid value of #AtspiTextBoundaryType.
349 */
350#define ATSPI_TEXT_BOUNDARY_TYPE_COUNT (6+1)
351
352/**
353 * AtspiTextClipType:
354 * @ATSPI_TEXT_CLIP_NONE: No characters/glyphs are omitted.
355 * @ATSPI_TEXT_CLIP_MIN: Characters/glyphs clipped by the minimum coordinate
356 * are omitted.
357 * @ATSPI_TEXT_CLIP_MAX: Characters/glyphs which intersect the maximum
358 * coordinate are omitted.
359 * @ATSPI_TEXT_CLIP_BOTH: Only glyphs falling entirely within the region
360 * bounded by min and max are retained.
361 *
362 * Enumeration used by interface #AtspiText to indicate
363 * how to treat characters intersecting bounding boxes.
364 *
365 **/
366typedef enum {
367 ATSPI_TEXT_CLIP_NONE,
368 ATSPI_TEXT_CLIP_MIN,
369 ATSPI_TEXT_CLIP_MAX,
370 ATSPI_TEXT_CLIP_BOTH,
371} AtspiTextClipType;
372
373/**
374 * ATSPI_TEXT_CLIP_TYPE_COUNT:
375 *
376 * One higher than the highest valid value of #AtspiTextClipType.
377 */
378#define ATSPI_TEXT_CLIP_TYPE_COUNT (3+1)
379
380/**
381 * AtspiStateType:
382 * @ATSPI_STATE_INVALID: Indicates an invalid state - probably an error
383 * condition.
384 * @ATSPI_STATE_ACTIVE: Indicates a window is currently the active window, or
385 * is an active subelement within a container or table.
386 * @ATSPI_STATE_ARMED: Indicates that the object is armed.
387 * @ATSPI_STATE_BUSY: Indicates the current object is busy, i.e. onscreen
388 * representation is in the process of changing, or the object is
389 * temporarily unavailable for interaction due to activity already in progress.
390 * @ATSPI_STATE_CHECKED: Indicates this object is currently checked.
391 * @ATSPI_STATE_COLLAPSED: Indicates this object is collapsed.
392 * @ATSPI_STATE_DEFUNCT: Indicates that this object no longer has a valid
393 * backing widget (for instance, if its peer object has been destroyed).
394 * @ATSPI_STATE_EDITABLE: Indicates the user can change the contents of this
395 * object.
396 * @ATSPI_STATE_ENABLED: Indicates that this object is enabled, i.e. that it
397 * currently reflects some application state. Objects that are "greyed out"
398 * may lack this state, and may lack the @ATSPI_STATE_SENSITIVE if direct
399 * user interaction cannot cause them to acquire @ATSPI_STATE_ENABLED.
400 * See @ATSPI_STATE_SENSITIVE.
401 * @ATSPI_STATE_EXPANDABLE: Indicates this object allows progressive
402 * disclosure of its children.
403 * @ATSPI_STATE_EXPANDED: Indicates this object is expanded.
404 * @ATSPI_STATE_FOCUSABLE: Indicates this object can accept keyboard focus,
405 * which means all events resulting from typing on the keyboard will
406 * normally be passed to it when it has focus.
407 * @ATSPI_STATE_FOCUSED: Indicates this object currently has the keyboard
408 * focus.
409 * @ATSPI_STATE_HAS_TOOLTIP: Indicates that the object has an associated
410 * tooltip.
411 * @ATSPI_STATE_HORIZONTAL: Indicates the orientation of this object is
412 * horizontal.
413 * @ATSPI_STATE_ICONIFIED: Indicates this object is minimized and is
414 * represented only by an icon.
415 * @ATSPI_STATE_MODAL: Indicates something must be done with this object
416 * before the user can interact with an object in a different window.
417 * @ATSPI_STATE_MULTI_LINE: Indicates this (text) object can contain multiple
418 * lines of text.
419 * @ATSPI_STATE_MULTISELECTABLE: Indicates this object allows more than one of
420 * its children to be selected at the same time, or in the case of text
421 * objects, that the object supports non-contiguous text selections.
422 * @ATSPI_STATE_OPAQUE: Indicates this object paints every pixel within its
423 * rectangular region. It also indicates an alpha value of unity, if it
424 * supports alpha blending.
425 * @ATSPI_STATE_PRESSED: Indicates this object is currently pressed.
426 * @ATSPI_STATE_RESIZABLE: Indicates the size of this object's size is not
427 * fixed.
428 * @ATSPI_STATE_SELECTABLE: Indicates this object is the child of an object
429 * that allows its children to be selected and that this child is one of
430 * those children that can be selected.
431 * @ATSPI_STATE_SELECTED: Indicates this object is the child of an object that
432 * allows its children to be selected and that this child is one of those
433 * children that has been selected.
434 * @ATSPI_STATE_SENSITIVE: Indicates this object is sensitive, e.g. to user
435 * interaction. @ATSPI_STATE_SENSITIVE usually accompanies.
436 * @ATSPI_STATE_ENABLED for user-actionable controls, but may be found in the
437 * absence of @ATSPI_STATE_ENABLED if the current visible state of the control
438 * is "disconnected" from the application state. In such cases, direct user
439 * interaction can often result in the object gaining @ATSPI_STATE_SENSITIVE,
440 * for instance if a user makes an explicit selection using an object whose
441 * current state is ambiguous or undefined. See @ATSPI_STATE_ENABLED,
442 * @ATSPI_STATE_INDETERMINATE.
443 * @ATSPI_STATE_SHOWING: Indicates this object, the object's parent, the
444 * object's parent's parent, and so on, are all 'shown' to the end-user,
445 * i.e. subject to "exposure" if blocking or obscuring objects do not
446 * interpose between this object and the top of the window stack.
447 * @ATSPI_STATE_SINGLE_LINE: Indicates this (text) object can contain only a
448 * single line of text.
449 * @ATSPI_STATE_STALE: Indicates that the information returned for this object
450 * may no longer be synchronized with the application state. This can occur
451 * if the object has @ATSPI_STATE_TRANSIENT, and can also occur towards the
452 * end of the object peer's lifecycle.
453 * @ATSPI_STATE_TRANSIENT: Indicates this object is transient.
454 * @ATSPI_STATE_VERTICAL: Indicates the orientation of this object is vertical;
455 * for example this state may appear on such objects as scrollbars, text
456 * objects (with vertical text flow), separators, etc.
457 * @ATSPI_STATE_VISIBLE: Indicates this object is visible, e.g. has been
458 * explicitly marked for exposure to the user. @ATSPI_STATE_VISIBLE is no
459 * guarantee that the object is actually unobscured on the screen, only that
460 * it is 'potentially' visible, barring obstruction, being scrolled or clipped
461 * out of the field of view, or having an ancestor container that has not yet
462 * made visible. A widget is potentially onscreen if it has both
463 * @ATSPI_STATE_VISIBLE and @ATSPI_STATE_SHOWING. The absence of
464 * @ATSPI_STATE_VISIBLE and @ATSPI_STATE_SHOWING is
465 * semantically equivalent to saying that an object is 'hidden'.
466 * @ATSPI_STATE_MANAGES_DESCENDANTS: Indicates that "active-descendant-changed"
467 * event is sent when children become 'active' (i.e. are selected or
468 * navigated to onscreen). Used to prevent need to enumerate all children
469 * in very large containers, like tables. The presence of
470 * @ATSPI_STATE_MANAGES_DESCENDANTS is an indication to the client that the
471 * children should not, and need not, be enumerated by the client.
472 * Objects implementing this state are expected to provide relevant state
473 * notifications to listening clients, for instance notifications of
474 * visibility changes and activation of their contained child objects, without
475 * the client having previously requested references to those children.
476 * @ATSPI_STATE_INDETERMINATE: Indicates that a check box or other boolean
477 * indicator is in a state other than checked or not checked. This
478 * usually means that the boolean value reflected or controlled by the
479 * object does not apply consistently to the entire current context.
480 * For example, a checkbox for the "Bold" attribute of text may have
481 * @ATSPI_STATE_INDETERMINATE if the currently selected text contains a mixture
482 * of weight attributes. In many cases interacting with a
483 * @ATSPI_STATE_INDETERMINATE object will cause the context's corresponding
484 * boolean attribute to be homogenized, whereupon the object will lose
485 * @ATSPI_STATE_INDETERMINATE and a corresponding state-changed event will be
486 * fired.
487 * @ATSPI_STATE_REQUIRED: Indicates that user interaction with this object is
488 * 'required' from the user, for instance before completing the
489 * processing of a form.
490 * @ATSPI_STATE_TRUNCATED: Indicates that an object's onscreen content
491 * is truncated, e.g. a text value in a spreadsheet cell.
492 * @ATSPI_STATE_ANIMATED: Indicates this object's visual representation is
493 * dynamic, not static. This state may be applied to an object during an
494 * animated 'effect' and be removed from the object once its visual
495 * representation becomes static. Some applications, notably content viewers,
496 * may not be able to detect all kinds of animated content. Therefore the
497 * absence of this state should not be taken as
498 * definitive evidence that the object's visual representation is
499 * static; this state is advisory.
500 * @ATSPI_STATE_INVALID_ENTRY: This object has indicated an error condition
501 * due to failure of input validation. For instance, a form control may
502 * acquire this state in response to invalid or malformed user input.
503 * @ATSPI_STATE_SUPPORTS_AUTOCOMPLETION: This state indicates that the object
504 * in question implements some form of typeahead or
505 * pre-selection behavior whereby entering the first character of one or more
506 * sub-elements causes those elements to scroll into view or become
507 * selected. Subsequent character input may narrow the selection further as
508 * long as one or more sub-elements match the string. This state is normally
509 * only useful and encountered on objects that implement #AtspiSelection.
510 * In some cases the typeahead behavior may result in full or partial
511 * completion of the data in the input field, in which case
512 * these input events may trigger text-changed events from the source.
513 * @ATSPI_STATE_SELECTABLE_TEXT: This state indicates that the object in
514 * question supports text selection. It should only be exposed on objects
515 * which implement the #AtspiText interface, in order to distinguish this state
516 * from @ATSPI_STATE_SELECTABLE, which infers that the object in question is a
517 * selectable child of an object which implements #AtspiSelection. While
518 * similar, text selection and subelement selection are distinct operations.
519 * @ATSPI_STATE_IS_DEFAULT: This state indicates that the object in question is
520 * the 'default' interaction object in a dialog, i.e. the one that gets
521 * activated if the user presses "Enter" when the dialog is initially
522 * posted.
523 * @ATSPI_STATE_VISITED: This state indicates that the object (typically a
524 * hyperlink) has already been activated or invoked, with the result that
525 * some backing data has been downloaded or rendered.
526 * @ATSPI_STATE_LAST_DEFINED: This value of the enumeration should not be used
527 * as a parameter, it indicates the number of items in the #AtspiStateType
528 * enumeration.
529 *
530 *
531 * Enumeration used by various interfaces indicating every possible state
532 * an #AtspiAccesible object can assume.
533 *
534 **/
535typedef enum {
536 ATSPI_STATE_INVALID,
537 ATSPI_STATE_ACTIVE,
538 ATSPI_STATE_ARMED,
539 ATSPI_STATE_BUSY,
540 ATSPI_STATE_CHECKED,
541 ATSPI_STATE_COLLAPSED,
542 ATSPI_STATE_DEFUNCT,
543 ATSPI_STATE_EDITABLE,
544 ATSPI_STATE_ENABLED,
545 ATSPI_STATE_EXPANDABLE,
546 ATSPI_STATE_EXPANDED,
547 ATSPI_STATE_FOCUSABLE,
548 ATSPI_STATE_FOCUSED,
549 ATSPI_STATE_HAS_TOOLTIP,
550 ATSPI_STATE_HORIZONTAL,
551 ATSPI_STATE_ICONIFIED,
552 ATSPI_STATE_MODAL,
553 ATSPI_STATE_MULTI_LINE,
554 ATSPI_STATE_MULTISELECTABLE,
555 ATSPI_STATE_OPAQUE,
556 ATSPI_STATE_PRESSED,
557 ATSPI_STATE_RESIZABLE,
558 ATSPI_STATE_SELECTABLE,
559 ATSPI_STATE_SELECTED,
560 ATSPI_STATE_SENSITIVE,
561 ATSPI_STATE_SHOWING,
562 ATSPI_STATE_SINGLE_LINE,
563 ATSPI_STATE_STALE,
564 ATSPI_STATE_TRANSIENT,
565 ATSPI_STATE_VERTICAL,
566 ATSPI_STATE_VISIBLE,
567 ATSPI_STATE_MANAGES_DESCENDANTS,
568 ATSPI_STATE_INDETERMINATE,
569 ATSPI_STATE_REQUIRED,
570 ATSPI_STATE_TRUNCATED,
571 ATSPI_STATE_ANIMATED,
572 ATSPI_STATE_INVALID_ENTRY,
573 ATSPI_STATE_SUPPORTS_AUTOCOMPLETION,
574 ATSPI_STATE_SELECTABLE_TEXT,
575 ATSPI_STATE_IS_DEFAULT,
576 ATSPI_STATE_VISITED,
577 ATSPI_STATE_LAST_DEFINED,
578} AtspiStateType;
579
580/**
581 * ATSPI_STATETYPE_COUNT:
582 *
583 * One higher than the highest valid value of #AtspiStateType.
584 **/
585#define ATSPI_STATETYPE_COUNT (41+1)
586
587/**
588 * AtspiKeyEventType:
589 * @ATSPI_KEY_PRESSED:
590 * @ATSPI_KEY_RELEASED:
591 *
592 * Deprecated. Should not be used.
593 *
594 **/
595typedef enum {
596 ATSPI_KEY_PRESSED,
597 ATSPI_KEY_RELEASED,
598} AtspiKeyEventType;
599
600/**
601 * ATSPI_KEYEVENTTYPE_COUNT:
602 *
603 * One higher than the highest valid value of #AtspiKeyEventType.
604 **/
605#define ATSPI_KEYEVENTTYPE_COUNT (1+1)
606
607/**
608 * AtspiEventType:
609 * @ATSPI_KEY_PRESSED_EVENT: Indicates that a key on a keyboard device was
610 * pressed.
611 * @ATSPI_KEY_RELEASED_EVENT: Indicates that a key on a keyboard device was
612 * released.
613 * @ATSPI_BUTTON_PRESSED_EVENT: Indicates that a button on a non-keyboard
614 * human interface device (HID) was pressed.
615 * @ATSPI_BUTTON_RELEASED_EVENT: Indicates that a button on a non-keyboard
616 * human interface device (HID) was released.
617 *
618 * Enumeration used to specify the event types of interest to an
619 * #AtspiEventListener, or
620 * to identify the type of an event for which notification has been sent.
621 *
622 **/
623typedef enum {
624 ATSPI_KEY_PRESSED_EVENT,
625 ATSPI_KEY_RELEASED_EVENT,
626 ATSPI_BUTTON_PRESSED_EVENT,
627 ATSPI_BUTTON_RELEASED_EVENT,
628} AtspiEventType;
629
630/**
631 * ATSPI_EVENTTYPE_COUNT:
632 *
633 * One higher than the highest valid value of #AtspiEventType.
634 */
635#define ATSPI_EVENTTYPE_COUNT (3+1)
636
637/**
638 * AtspiKeySynthType:
639 * @ATSPI_KEY_PRESS: Emulates the pressing of a hardware keyboard key.
640 * @ATSPI_KEY_RELEASE: Emulates the release of a hardware keyboard key.
641 * @ATSPI_KEY_PRESSRELEASE: Emulates the pressing and immediate releasing
642 * ofa hardware keyboard key.
643 * @ATSPI_KEY_SYM: A symbolic key event is generated, without specifying a
644 * hardware key. Note: if the keysym is not present in the current keyboard
645 * map, the #AtspiDeviceEventController instance has a limited ability to
646 * generate such keysyms on-the-fly. Reliability of GenerateKeyboardEvent
647 * calls using out-of-keymap keysyms will vary from system to system, and on
648 * the number of different out-of-keymap being generated in quick succession.
649 * In practice this is rarely significant, since the keysyms of interest to
650 * AT clients and keyboard emulators are usually part of the current keymap,
651 * i.e. present on the system keyboard for the current locale (even if a
652 * physical hardware keyboard is not connected.
653 * @ATSPI_KEY_STRING: A string is converted to its equivalent keyboard events
654 * and emitted. If the string consists of complex character or composed
655 * characters which are not in the current keymap, string emission is
656 * subject to the out-of-keymap limitations described for
657 * @ATSPI_KEY_SYM. In practice this limitation primarily effects
658 * Chinese and Japanese locales.
659 *
660 * Enumeration used when synthesizing keyboard input via
661 * #atspi_generate_keyboard_event.
662 *
663 **/
664typedef enum {
665 ATSPI_KEY_PRESS,
666 ATSPI_KEY_RELEASE,
667 ATSPI_KEY_PRESSRELEASE,
668 ATSPI_KEY_SYM,
669 ATSPI_KEY_STRING,
670} AtspiKeySynthType;
671
672/**
673 * ATSPI_KEYSYNTHTYPE_COUNT:
674 *
675 * One higher than the highest valid value of #AtspiKeySynthType.
676 **/
677#define ATSPI_KEYSYNTHTYPE_COUNT (4+1)
678
679/**
680 * AtspiModifierType:
681 * @ATSPI_MODIFIER_SHIFT: The left or right 'Shift' key.
682 * @ATSPI_MODIFIER_SHIFTLOCK: The ShiftLock or CapsLock key.
683 * @ATSPI_MODIFIER_CONTROL: 'Control'/'Ctrl'.
684 * @ATSPI_MODIFIER_ALT: The Alt key (as opposed to AltGr).
685 * @ATSPI_MODIFIER_META: Depending on the platform, this may map to 'Window',
686 * 'Function', 'Meta', 'Menu', or 'NumLock'. Such 'Meta keys' will
687 * map to one of META, META2, META3. On X Windows platforms these META
688 * values map to the modifier masks Mod1Mask, Mod2Mask, Mod3Mask, e.g. an
689 * event having @ATSPI_MODIFIER_META2 means that the 'Mod2Mask' bit
690 * is set in the corresponding XEvent.
691 * @ATSPI_MODIFIER_META2: See @ATSPI_MODIFIER_META.
692 * @ATSPI_MODIFIER_META3: See @ATSPI_MODIFIER_META.
693 * @ATSPI_MODIFIER_NUMLOCK: A symbolic meta key name that is mapped by AT-SPI
694 * to the appropriate META value, for the convenience of the client.
695 *
696 *
697 *
698 **/
699typedef enum {
700 ATSPI_MODIFIER_SHIFT,
701 ATSPI_MODIFIER_SHIFTLOCK,
702 ATSPI_MODIFIER_CONTROL,
703 ATSPI_MODIFIER_ALT,
704 ATSPI_MODIFIER_META,
705 ATSPI_MODIFIER_META2,
706 ATSPI_MODIFIER_META3,
707 ATSPI_MODIFIER_NUMLOCK = 14,
708} AtspiModifierType;
709
710/**
711 * ATSPI_MODIFIERTYPE_COUNT:
712 *
713 * One higher than the highest valid value of #AtspiModifierType.
714 **/
715#define ATSPI_MODIFIERTYPE_COUNT (7+1)
716
717/**
718 * AtspiRelationType:
719 * @ATSPI_RELATION_NULL: Not a meaningful relationship; clients should not
720 * normally encounter this #AtspiRelationType value.
721 * @ATSPI_RELATION_LABEL_FOR: Object is a label for one or more other objects.
722 * @ATSPI_RELATION_LABELLED_BY: Object is labelled by one or more other
723 * objects.
724 * @ATSPI_RELATION_CONTROLLER_FOR: Object is an interactive object which
725 * modifies the state, onscreen location, or other attributes of one or more
726 * target objects.
727 * @ATSPI_RELATION_CONTROLLED_BY: Object state, position, etc. is
728 * modified/controlled by user interaction with one or more other objects.
729 * For instance a viewport or scroll pane may be @ATSPI_RELATION_CONTROLLED_BY
730 * scrollbars.
731 * @ATSPI_RELATION_MEMBER_OF: Object has a grouping relationship (e.g. 'same
732 * group as') to one or more other objects.
733 * @ATSPI_RELATION_TOOLTIP_FOR: Object is a tooltip associated with another
734 * object.
735 * @ATSPI_RELATION_NODE_CHILD_OF: Object is a child of the target.
736 * @ATSPI_RELATION_NODE_PARENT_OF: Object is a parent of the target.
737 * @ATSPI_RELATION_EXTENDED: Used to indicate that a relationship exists, but
738 * its type is not specified in the enumeration.
739 * @ATSPI_RELATION_FLOWS_TO: Object renders content which flows logically to
740 * another object. For instance, text in a paragraph may flow to another
741 * object which is not the 'next sibling' in the accessibility hierarchy.
742 * @ATSPI_RELATION_FLOWS_FROM: Reciprocal of @ATSPI_RELATION_FLOWS_TO.
743 * @ATSPI_RELATION_SUBWINDOW_OF: Object is visually and semantically considered
744 * a subwindow of another object, even though it is not the object's child.
745 * Useful when dealing with embedded applications and other cases where the
746 * widget hierarchy does not map cleanly to the onscreen presentation.
747 * @ATSPI_RELATION_EMBEDS: Similar to @ATSPI_RELATION_SUBWINDOW_OF, but
748 * specifically used for cross-process embedding.
749 * @ATSPI_RELATION_EMBEDDED_BY: Reciprocal of @ATSPI_RELATION_EMBEDS. Used to
750 * denote content rendered by embedded renderers that live in a separate process
751 * space from the embedding context.
752 * @ATSPI_RELATION_POPUP_FOR: Denotes that the object is a transient window or
753 * frame associated with another onscreen object. Similar to @ATSPI_TOOLTIP_FOR,
754 * but more general. Useful for windows which are technically toplevels
755 * but which, for one or more reasons, do not explicitly cause their
756 * associated window to lose 'window focus'. Creation of an @ATSPI_ROLE_WINDOW
757 * object with the @ATSPI_RELATION_POPUP_FOR relation usually requires
758 * some presentation action on the part
759 * of assistive technology clients, even though the previous toplevel
760 * @ATSPI_ROLE_FRAME object may still be the active window.
761 * @ATSPI_RELATION_PARENT_WINDOW_OF: This is the reciprocal relation to
762 * @ATSPI_RELATION_POPUP_FOR.
763 * @ATSPI_RELATION_DESCRIPTION_FOR: Indicates that an object provides
764 * descriptive information about another object; more verbose than
765 * @ATSPI_RELATION_LABEL_FOR.
766 * @ATSPI_RELATION_DESCRIBED_BY: Indicates that another object provides
767 * descriptive information about this object; more verbose than
768 * @ATSPI_RELATION_LABELLED_BY.
769 * @ATSPI_RELATION_LAST_DEFINED: Do not use as a parameter value, used to
770 * determine the size of the enumeration.
771 *
772 * #AtspiRelationType specifies a relationship between objects
773 * (possibly one-to-many
774 * or many-to-one) outside of the normal parent/child hierarchical
775 * relationship. It allows better semantic identification of how objects
776 * are associated with one another. For instance the
777 * @ATSPI_RELATION_LABELLED_BY
778 * relationship may be used to identify labelling information that should
779 * accompany the accessible name property when presenting an object's content or
780 * identity to the end user. Similarly,
781 * @ATSPI_RELATION_CONTROLLER_FOR can be used
782 * to further specify the context in which a valuator is useful, and/or the
783 * other UI components which are directly effected by user interactions with
784 * the valuator. Common examples include association of scrollbars with the
785 * viewport or panel which they control.
786 *
787 *
788 * Enumeration used to specify
789 * the type of relation encapsulated in an #AtspiRelation object.
790 *
791 **/
792typedef enum {
793 ATSPI_RELATION_NULL,
794 ATSPI_RELATION_LABEL_FOR,
795 ATSPI_RELATION_LABELLED_BY,
796 ATSPI_RELATION_CONTROLLER_FOR,
797 ATSPI_RELATION_CONTROLLED_BY,
798 ATSPI_RELATION_MEMBER_OF,
799 ATSPI_RELATION_TOOLTIP_FOR,
800 ATSPI_RELATION_NODE_CHILD_OF,
801 ATSPI_RELATION_NODE_PARENT_OF,
802 ATSPI_RELATION_EXTENDED,
803 ATSPI_RELATION_FLOWS_TO,
804 ATSPI_RELATION_FLOWS_FROM,
805 ATSPI_RELATION_SUBWINDOW_OF,
806 ATSPI_RELATION_EMBEDS,
807 ATSPI_RELATION_EMBEDDED_BY,
808 ATSPI_RELATION_POPUP_FOR,
809 ATSPI_RELATION_PARENT_WINDOW_OF,
810 ATSPI_RELATION_DESCRIPTION_FOR,
811 ATSPI_RELATION_DESCRIBED_BY,
812 ATSPI_RELATION_LAST_DEFINED,
813} AtspiRelationType;
814
815/**
816 * ATSPI_RELATIONTYPE_COUNT:
817 *
818 * One higher than the highest valid value of #AtspiRelationType.
819 **/
820#define ATSPI_RELATIONTYPE_COUNT (19+1)
821
822/**
823 * AtspiRole:
824 * @ATSPI_ROLE_INVALID: A role indicating an error condition, such as
825 * uninitialized Role data.
826 * @ATSPI_ROLE_ACCELERATOR_LABEL: Object is a label indicating the keyboard
827 * accelerators for the parent.
828 * @ATSPI_ROLE_ALERT: Object is used to alert the user about something.
829 * @ATSPI_ROLE_ANIMATION: Object contains a dynamic or moving image of some
830 * kind.
831 * @ATSPI_ROLE_ARROW: Object is a 2d directional indicator.
832 * @ATSPI_ROLE_CALENDAR: Object contains one or more dates, usually arranged
833 * into a 2d list.
834 * @ATSPI_ROLE_CANVAS: Object that can be drawn into and is used to trap
835 * events.
836 * @ATSPI_ROLE_CHECK_BOX: A choice that can be checked or unchecked and
837 * provides a separate indicator for the current state.
838 * @ATSPI_ROLE_CHECK_MENU_ITEM: A menu item that behaves like a check box. See
839 * @ATSPI_ROLE_CHECK_BOX.
840 * @ATSPI_ROLE_COLOR_CHOOSER: A specialized dialog that lets the user choose a
841 * color.
842 * @ATSPI_ROLE_COLUMN_HEADER: The header for a column of data.
843 * @ATSPI_ROLE_COMBO_BOX: A list of choices the user can select from.
844 * @ATSPI_ROLE_DATE_EDITOR: An object which allows entry of a date.
845 * @ATSPI_ROLE_DESKTOP_ICON: An inconifed internal frame within a DESKTOP_PANE.
846 * @ATSPI_ROLE_DESKTOP_FRAME: A pane that supports internal frames and
847 * iconified versions of those internal frames.
848 * @ATSPI_ROLE_DIAL: An object that allows a value to be changed via rotating a
849 * visual element, or which displays a value via such a rotating element.
850 * @ATSPI_ROLE_DIALOG: A top level window with title bar and a border.
851 * @ATSPI_ROLE_DIRECTORY_PANE: A pane that allows the user to navigate through
852 * and select the contents of a directory.
853 * @ATSPI_ROLE_DRAWING_AREA: A specialized dialog that displays the files in
854 * the directory and lets the user select a file, browse a different
855 * directory, or specify a filename.
856 * @ATSPI_ROLE_FILE_CHOOSER: An object used for drawing custom user interface
857 * elements.
858 * @ATSPI_ROLE_FILLER: A object that fills up space in a user interface.
859 * @ATSPI_ROLE_FOCUS_TRAVERSABLE: Don't use, reserved for future use.
860 * @ATSPI_ROLE_FONT_CHOOSER: Allows selection of a display font.
861 * @ATSPI_ROLE_FRAME: A top level window with a title bar, border, menubar,
862 * etc.
863 * @ATSPI_ROLE_GLASS_PANE: A pane that is guaranteed to be painted on top of
864 * all panes beneath it.
865 * @ATSPI_ROLE_HTML_CONTAINER: A document container for HTML, whose children
866 * represent the document content.
867 * @ATSPI_ROLE_ICON: A small fixed size picture, typically used to decorate
868 * components.
869 * @ATSPI_ROLE_IMAGE: An image, typically static.
870 * @ATSPI_ROLE_INTERNAL_FRAME: A frame-like object that is clipped by a desktop
871 * pane.
872 * @ATSPI_ROLE_LABEL: An object used to present an icon or short string in an
873 * interface.
874 * @ATSPI_ROLE_LAYERED_PANE: A specialized pane that allows its children to be
875 * drawn in layers, providing a form of stacking order.
876 * @ATSPI_ROLE_LIST: An object that presents a list of objects to the user and
877 * allows the user to select one or more of them.
878 * @ATSPI_ROLE_LIST_ITEM: An object that represents an element of a list.
879 * @ATSPI_ROLE_MENU: An object usually found inside a menu bar that contains a
880 * list of actions the user can choose from.
881 * @ATSPI_ROLE_MENU_BAR: An object usually drawn at the top of the primary
882 * dialog box of an application that contains a list of menus the user can
883 * choose from.
884 * @ATSPI_ROLE_MENU_ITEM: An object usually contained in a menu that presents
885 * an action the user can choose.
886 * @ATSPI_ROLE_OPTION_PANE: A specialized pane whose primary use is inside a
887 * dialog.
888 * @ATSPI_ROLE_PAGE_TAB: An object that is a child of a page tab list.
889 * @ATSPI_ROLE_PAGE_TAB_LIST: An object that presents a series of panels (or
890 * page tabs), one at a time,through some mechanism provided by the
891 * object.
892 * @ATSPI_ROLE_PANEL: A generic container that is often used to group objects.
893 * @ATSPI_ROLE_PASSWORD_TEXT: A text object uses for passwords, or other places
894 * where the text content is not shown visibly to the user.
895 * @ATSPI_ROLE_POPUP_MENU: A temporary window that is usually used to offer the
896 * user a list of choices, and then hides when the user selects one of those
897 * choices.
898 * @ATSPI_ROLE_PROGRESS_BAR: An object used to indicate how much of a task has
899 * been completed.
900 * @ATSPI_ROLE_PUSH_BUTTON: An object the user can manipulate to tell the
901 * application to do something.
902 * @ATSPI_ROLE_RADIO_BUTTON: A specialized check box that will cause other
903 * radio buttons in the same group to become unchecked when this one is
904 * checked.
905 * @ATSPI_ROLE_RADIO_MENU_ITEM: Object is both a menu item and a "radio button"
906 * . See @ATSPI_ROLE_RADIO_BUTTON.
907 * @ATSPI_ROLE_ROOT_PANE: A specialized pane that has a glass pane and a
908 * layered pane as its children.
909 * @ATSPI_ROLE_ROW_HEADER: The header for a row of data.
910 * @ATSPI_ROLE_SCROLL_BAR: An object usually used to allow a user to
911 * incrementally view a large amount of data by moving the bounds of a
912 * viewport along a one-dimensional axis.
913 * @ATSPI_ROLE_SCROLL_PANE: An object that allows a user to incrementally view
914 * a large amount of information. @ATSPI_ROLE_SCROLL_PANE objects are usually
915 * accompanied by @ATSPI_ROLE_SCROLL_BAR controllers, on which the
916 * @ATSPI_RELATION_CONTROLLER_FOR and @ATSPI_RELATION_CONTROLLED_BY
917 * reciprocal relations are set. See #atspi_get_relation_set.
918 * @ATSPI_ROLE_SEPARATOR: An object usually contained in a menu to provide a
919 * visible and logical separation of the contents in a menu.
920 * @ATSPI_ROLE_SLIDER: An object that allows the user to select from a bounded
921 * range.
922 * @ATSPI_ROLE_SPIN_BUTTON: An object which allows one of a set of choices to
923 * be selected, and which displays the current choice. Unlike
924 * @ATSPI_ROLE_SCROLL_BAR, @ATSPI_ROLE_SLIDER objects need not control
925 * 'viewport'-like objects.
926 * @ATSPI_ROLE_SPLIT_PANE: A specialized panel that presents two other panels
927 * at the same time.
928 * @ATSPI_ROLE_STATUS_BAR: Object displays non-quantitative status information
929 * (c.f. @ATSPI_ROLE_PROGRESS_BAR)
930 * @ATSPI_ROLE_TABLE: An object used to repesent information in terms of rows
931 * and columns.
932 * @ATSPI_ROLE_TABLE_CELL: A 'cell' or discrete child within a Table. Note:
933 * Table cells need not have @ATSPI_ROLE_TABLE_CELL, other
934 * #AtspiRoleType values are valid as well.
935 * @ATSPI_ROLE_TABLE_COLUMN_HEADER: An object which labels a particular column
936 * in an #AtspiTable.
937 * @ATSPI_ROLE_TABLE_ROW_HEADER: An object which labels a particular row in a
938 * #AtspiTable. #AtspiTable rows and columns may also be labelled via the
939 * @ATSPI_RELATION_LABEL_FOR/@ATSPI_RELATION_LABELLED_BY relationships.
940 * See #atspi_get_relation_set.
941 * @ATSPI_ROLE_TEAROFF_MENU_ITEM: Object allows menu to be removed from menubar
942 * and shown in its own window.
943 * @ATSPI_ROLE_TERMINAL: An object that emulates a terminal.
944 * @ATSPI_ROLE_TEXT: An object that presents text to the user, of nonspecific
945 * type.
946 * @ATSPI_ROLE_TOGGLE_BUTTON: A specialized push button that can be checked or
947 * unchecked, but does not procide a separate indicator for the current
948 * state.
949 * @ATSPI_ROLE_TOOL_BAR: A bar or palette usually composed of push buttons or
950 * toggle buttons.
951 * @ATSPI_ROLE_TOOL_TIP: An object that provides information about another
952 * object.
953 * @ATSPI_ROLE_TREE: An object used to repsent hierarchical information to the
954 * user.
955 * @ATSPI_ROLE_TREE_TABLE: An object that presents both tabular and
956 * hierarchical info to the user.
957 * @ATSPI_ROLE_UNKNOWN: The object contains some #AtspiAccessible information,
958 * but its role is not known.
959 * @ATSPI_ROLE_VIEWPORT: An object usually used in a scroll pane, or to
960 * otherwise clip a larger object or content renderer to a specific
961 * onscreen viewport.
962 * @ATSPI_ROLE_WINDOW: A top level window with no title or border.
963 * @ATSPI_ROLE_EXTENDED: means that the role for this item is known, but not
964 * included in the core enumeration.
965 * @ATSPI_ROLE_HEADER: An object that serves as a document header.
966 * @ATSPI_ROLE_FOOTER: An object that serves as a document footer.
967 * @ATSPI_ROLE_PARAGRAPH: An object which is contains a single paragraph of
968 * text content. See also @ATSPI_ROLE_TEXT.
969 * @ATSPI_ROLE_RULER: An object which describes margins and tab stops, etc.
970 * for text objects which it controls (should have
971 * @ATSPI_RELATION_CONTROLLER_FOR relation to such).
972 * @ATSPI_ROLE_APPLICATION: An object corresponding to the toplevel accessible
973 * of an application, which may contain @ATSPI_ROLE_FRAME objects or other
974 * accessible objects. Children of #AccessibleDesktop objects are generally
975 * @ATSPI_ROLE_APPLICATION objects.
976 * @ATSPI_ROLE_AUTOCOMPLETE: The object is a dialog or list containing items
977 * for insertion into an entry widget, for instance a list of words for
978 * completion of a text entry.
979 * @ATSPI_ROLE_EDITBAR: The object is an editable text object in a toolbar.
980 * @ATSPI_ROLE_EMBEDDED: The object is an embedded component container. This
981 * role is a "grouping" hint that the contained objects share a context
982 * which is different from the container in which this accessible is
983 * embedded. In particular, it is used for some kinds of document embedding,
984 * and for embedding of out-of-process component, "panel applets", etc.
985 * @ATSPI_ROLE_ENTRY: The object is a component whose textual content may be
986 * entered or modified by the user, provided @ATSPI_STATE_EDITABLE is present.
987 * A readonly @ATSPI_ROLE_ENTRY object (i.e. where @ATSPI_STATE_EDITABLE is
988 * not present) implies a read-only 'text field' in a form, as opposed to a
989 * title, label, or caption.
990 * @ATSPI_ROLE_CHART: The object is a graphical depiction of quantitative data.
991 * It may contain multiple subelements whose attributes and/or description
992 * may be queried to obtain both the quantitative data and information about
993 * how the data is being presented. The @ATSPI_LABELLED_BY relation is
994 * particularly important in interpreting objects of this type, as is the
995 * accessible description property. See @ATSPI_ROLE_CAPTION.
996 * @ATSPI_ROLE_CAPTION: The object contains descriptive information, usually
997 * textual, about another user interface element such as a table, chart, or
998 * image.
999 * @ATSPI_ROLE_DOCUMENT_FRAME: The object is a visual frame or container which
1000 * contains a view of document content. #AtspiDocument frames may occur within
1001 * another #AtspiDocument instance, in which case the second document may be
1002 * said to be embedded in the containing instance. HTML frames are often
1003 * @ATSPI_ROLE_DOCUMENT_FRAME: Either this object, or a singleton descendant,
1004 * should implement the #AtspiDocument interface.
1005 * @ATSPI_ROLE_HEADING: The object serves as a heading for content which
1006 * follows it in a document. The 'heading level' of the heading, if
1007 * availabe, may be obtained by querying the object's attributes.
1008 * @ATSPI_ROLE_PAGE: The object is a containing instance which encapsulates a
1009 * page of information. @ATSPI_ROLE_PAGE is used in documents and content which
1010 * support a paginated navigation model.
1011 * @ATSPI_ROLE_SECTION: The object is a containing instance of document content
1012 * which constitutes a particular 'logical' section of the document. The
1013 * type of content within a section, and the nature of the section division
1014 * itself, may be obtained by querying the object's attributes. Sections
1015 * may be nested.
1016 * @ATSPI_ROLE_REDUNDANT_OBJECT: The object is redundant with another object in
1017 * the hierarchy, and is exposed for purely technical reasons. Objects of
1018 * this role should be ignored by clients, if they are encountered at all.
1019 * @ATSPI_ROLE_FORM: The object is a containing instance of document content
1020 * which has within it components with which the user can interact in order
1021 * to input information; i.e. the object is a container for pushbuttons,
1022 * comboboxes, text input fields, and other 'GUI' components. @ATSPI_ROLE_FORM
1023 * should not, in general, be used for toplevel GUI containers or dialogs,
1024 * but should be reserved for 'GUI' containers which occur within document
1025 * content, for instance within Web documents, presentations, or text
1026 * documents. Unlike other GUI containers and dialogs which occur inside
1027 * application instances, @ATSPI_ROLE_FORM containers' components are
1028 * associated with the current document, rather than the current foreground
1029 * application or viewer instance.
1030 * @ATSPI_ROLE_LINK: The object is a hypertext anchor, i.e. a "link" in a
1031 * hypertext document. Such objects are distinct from 'inline' content
1032 * which may also use the #AtspiHypertext/#AtspiHyperlink interfacesto indicate
1033 * the range/location within a text object where an inline or embedded object
1034 * lies.
1035 * @ATSPI_ROLE_INPUT_METHOD_WINDOW: The object is a window or similar viewport
1036 * which is used to allow composition or input of a 'complex character',
1037 * in other words it is an "input method window".
1038 * @ATSPI_ROLE_TABLE_ROW: A row in a table.
1039 * @ATSPI_ROLE_TREE_ITEM: An object that represents an element of a tree.
1040 * @ATSPI_ROLE_DOCUMENT_SPREADSHEET: A document frame which contains a
1041 * spreadsheet.
1042 * @ATSPI_ROLE_DOCUMENT_PRESENTATION: A document frame which contains a
1043 * presentation or slide content.
1044 * @ATSPI_ROLE_DOCUMENT_TEXT: A document frame which contains textual content,
1045 * such as found in a word processing
1046 * application.
1047 * @ATSPI_ROLE_DOCUMENT_WEB: A document frame which contains HTML or other
1048 * markup suitable for display in a web browser.
1049 * @ATSPI_ROLE_DOCUMENT_EMAIL: A document frame which contains email content
1050 * to be displayed or composed either in plain text or
1051 * HTML.
1052 * @ATSPI_ROLE_COMMENT: An object found within a document and designed to
1053 * present a comment, note, or other annotation. In some cases, this object
1054 * might not be visible until activated.
1055 * @ATSPI_ROLE_LIST_BOX: A non-collapsible list of choices the user can
1056 * select from.
1057 * @ATSPI_ROLE_GROUPING: A group of related widgets. This group typically has
1058 * a label.
1059 * @ATSPI_ROLE_IMAGE_MAP: An image map object. Usually a graphic with multiple
1060 * hotspots, where each hotspot can be activated resulting in the loading of
1061 * another document or section of a document.
1062 * @ATSPI_ROLE_NOTIFICATION: A transitory object designed to present a
1063 * message to the user, typically at the desktop level rather than inside a
1064 * particular application.
1065 * @ATSPI_ROLE_INFO_BAR: An object designed to present a message to the user
1066 * within an existing window.
1067 * @ATSPI_ROLE_LAST_DEFINED: Not a valid role, used for finding end of
1068 * enumeration.
1069 *
1070 * Enumeration used by interface #AtspiAccessible to specify the role
1071 * of an #AtspiAccessible object.
1072 *
1073 */
1074typedef enum {
1075 ATSPI_ROLE_INVALID,
1076 ATSPI_ROLE_ACCELERATOR_LABEL,
1077 ATSPI_ROLE_ALERT,
1078 ATSPI_ROLE_ANIMATION,
1079 ATSPI_ROLE_ARROW,
1080 ATSPI_ROLE_CALENDAR,
1081 ATSPI_ROLE_CANVAS,
1082 ATSPI_ROLE_CHECK_BOX,
1083 ATSPI_ROLE_CHECK_MENU_ITEM,
1084 ATSPI_ROLE_COLOR_CHOOSER,
1085 ATSPI_ROLE_COLUMN_HEADER,
1086 ATSPI_ROLE_COMBO_BOX,
1087 ATSPI_ROLE_DATE_EDITOR,
1088 ATSPI_ROLE_DESKTOP_ICON,
1089 ATSPI_ROLE_DESKTOP_FRAME,
1090 ATSPI_ROLE_DIAL,
1091 ATSPI_ROLE_DIALOG,
1092 ATSPI_ROLE_DIRECTORY_PANE,
1093 ATSPI_ROLE_DRAWING_AREA,
1094 ATSPI_ROLE_FILE_CHOOSER,
1095 ATSPI_ROLE_FILLER,
1096 ATSPI_ROLE_FOCUS_TRAVERSABLE,
1097 ATSPI_ROLE_FONT_CHOOSER,
1098 ATSPI_ROLE_FRAME,
1099 ATSPI_ROLE_GLASS_PANE,
1100 ATSPI_ROLE_HTML_CONTAINER,
1101 ATSPI_ROLE_ICON,
1102 ATSPI_ROLE_IMAGE,
1103 ATSPI_ROLE_INTERNAL_FRAME,
1104 ATSPI_ROLE_LABEL,
1105 ATSPI_ROLE_LAYERED_PANE,
1106 ATSPI_ROLE_LIST,
1107 ATSPI_ROLE_LIST_ITEM,
1108 ATSPI_ROLE_MENU,
1109 ATSPI_ROLE_MENU_BAR,
1110 ATSPI_ROLE_MENU_ITEM,
1111 ATSPI_ROLE_OPTION_PANE,
1112 ATSPI_ROLE_PAGE_TAB,
1113 ATSPI_ROLE_PAGE_TAB_LIST,
1114 ATSPI_ROLE_PANEL,
1115 ATSPI_ROLE_PASSWORD_TEXT,
1116 ATSPI_ROLE_POPUP_MENU,
1117 ATSPI_ROLE_PROGRESS_BAR,
1118 ATSPI_ROLE_PUSH_BUTTON,
1119 ATSPI_ROLE_RADIO_BUTTON,
1120 ATSPI_ROLE_RADIO_MENU_ITEM,
1121 ATSPI_ROLE_ROOT_PANE,
1122 ATSPI_ROLE_ROW_HEADER,
1123 ATSPI_ROLE_SCROLL_BAR,
1124 ATSPI_ROLE_SCROLL_PANE,
1125 ATSPI_ROLE_SEPARATOR,
1126 ATSPI_ROLE_SLIDER,
1127 ATSPI_ROLE_SPIN_BUTTON,
1128 ATSPI_ROLE_SPLIT_PANE,
1129 ATSPI_ROLE_STATUS_BAR,
1130 ATSPI_ROLE_TABLE,
1131 ATSPI_ROLE_TABLE_CELL,
1132 ATSPI_ROLE_TABLE_COLUMN_HEADER,
1133 ATSPI_ROLE_TABLE_ROW_HEADER,
1134 ATSPI_ROLE_TEAROFF_MENU_ITEM,
1135 ATSPI_ROLE_TERMINAL,
1136 ATSPI_ROLE_TEXT,
1137 ATSPI_ROLE_TOGGLE_BUTTON,
1138 ATSPI_ROLE_TOOL_BAR,
1139 ATSPI_ROLE_TOOL_TIP,
1140 ATSPI_ROLE_TREE,
1141 ATSPI_ROLE_TREE_TABLE,
1142 ATSPI_ROLE_UNKNOWN,
1143 ATSPI_ROLE_VIEWPORT,
1144 ATSPI_ROLE_WINDOW,
1145 ATSPI_ROLE_EXTENDED,
1146 ATSPI_ROLE_HEADER,
1147 ATSPI_ROLE_FOOTER,
1148 ATSPI_ROLE_PARAGRAPH,
1149 ATSPI_ROLE_RULER,
1150 ATSPI_ROLE_APPLICATION,
1151 ATSPI_ROLE_AUTOCOMPLETE,
1152 ATSPI_ROLE_EDITBAR,
1153 ATSPI_ROLE_EMBEDDED,
1154 ATSPI_ROLE_ENTRY,
1155 ATSPI_ROLE_CHART,
1156 ATSPI_ROLE_CAPTION,
1157 ATSPI_ROLE_DOCUMENT_FRAME,
1158 ATSPI_ROLE_HEADING,
1159 ATSPI_ROLE_PAGE,
1160 ATSPI_ROLE_SECTION,
1161 ATSPI_ROLE_REDUNDANT_OBJECT,
1162 ATSPI_ROLE_FORM,
1163 ATSPI_ROLE_LINK,
1164 ATSPI_ROLE_INPUT_METHOD_WINDOW,
1165 ATSPI_ROLE_TABLE_ROW,
1166 ATSPI_ROLE_TREE_ITEM,
1167 ATSPI_ROLE_DOCUMENT_SPREADSHEET,
1168 ATSPI_ROLE_DOCUMENT_PRESENTATION,
1169 ATSPI_ROLE_DOCUMENT_TEXT,
1170 ATSPI_ROLE_DOCUMENT_WEB,
1171 ATSPI_ROLE_DOCUMENT_EMAIL,
1172 ATSPI_ROLE_COMMENT,
1173 ATSPI_ROLE_LIST_BOX,
1174 ATSPI_ROLE_GROUPING,
1175 ATSPI_ROLE_IMAGE_MAP,
1176 ATSPI_ROLE_NOTIFICATION,
1177 ATSPI_ROLE_INFO_BAR,
1178 ATSPI_ROLE_LAST_DEFINED,
1179} AtspiRole;
1180
1181/**
1182 * ATSPI_ROLE_COUNT:
1183 *
1184 * One higher than the highest valid value of #AtspiRole.
1185 */
1186#define ATSPI_ROLE_COUNT (90+1)
1187
1188typedef enum
1189{
1190 ATSPI_CACHE_NONE = 0,
1191 ATSPI_CACHE_PARENT = 1 << 0,
1192 ATSPI_CACHE_CHILDREN = 1 << 1,
1193 ATSPI_CACHE_NAME = 1 << 2,
1194 ATSPI_CACHE_DESCRIPTION = 1 << 3,
1195 ATSPI_CACHE_STATES = 1 << 4,
1196 ATSPI_CACHE_ROLE = 1 << 5,
1197 ATSPI_CACHE_INTERFACES = 1 << 6,
1198 ATSPI_CACHE_ATTRIBUTES = 1 << 7,
1199 ATSPI_CACHE_ALL = 0x3fffffff,
1200 ATSPI_CACHE_DEFAULT = ATSPI_CACHE_PARENT | ATSPI_CACHE_CHILDREN |
1201 ATSPI_CACHE_NAME | ATSPI_CACHE_DESCRIPTION |
1202 ATSPI_CACHE_STATES | ATSPI_CACHE_ROLE |
1203 ATSPI_CACHE_INTERFACES,
1204 ATSPI_CACHE_UNDEFINED = 0x40000000,
1205} AtspiCache;
1206
1207#define ATSPI_DBUS_NAME_REGISTRY "org.a11y.atspi.Registry"
1208#define ATSPI_DBUS_PATH_REGISTRY "/org/a11y/atspi/registry"
1209#define ATSPI_DBUS_INTERFACE_REGISTRY "org.a11y.atspi.Registry"
1210
1211#define ATSPI_DBUS_PATH_NULL "/org/a11y/atspi/null"
1212#define ATSPI_DBUS_PATH_ROOT "/org/a11y/atspi/accessible/root"
1213
1214#define ATSPI_DBUS_PATH_DEC "/org/a11y/atspi/registry/deviceeventcontroller"
1215#define ATSPI_DBUS_INTERFACE_DEC "org.a11y.atspi.DeviceEventController"
1216#define ATSPI_DBUS_INTERFACE_DEVICE_EVENT_LISTENER "org.a11y.atspi.DeviceEventListener"
1217
1218#define ATSPI_DBUS_INTERFACE_CACHE "org.a11y.atspi.Cache"
1219#define ATSPI_DBUS_INTERFACE_ACCESSIBLE "org.a11y.atspi.Accessible"
1220#define ATSPI_DBUS_INTERFACE_ACTION "org.a11y.atspi.Action"
1221#define ATSPI_DBUS_INTERFACE_APPLICATION "org.a11y.atspi.Application"
1222#define ATSPI_DBUS_INTERFACE_COLLECTION "org.a11y.atspi.Collection"
1223#define ATSPI_DBUS_INTERFACE_COMPONENT "org.a11y.atspi.Component"
1224#define ATSPI_DBUS_INTERFACE_DOCUMENT "org.a11y.atspi.Document"
1225#define ATSPI_DBUS_INTERFACE_EDITABLE_TEXT "org.a11y.atspi.EditableText"
1226#define ATSPI_DBUS_INTERFACE_EVENT_KEYBOARD "org.a11y.atspi.Event.Keyboard"
1227#define ATSPI_DBUS_INTERFACE_EVENT_MOUSE "org.a11y.atspi.Event.Mouse"
1228#define ATSPI_DBUS_INTERFACE_EVENT_OBJECT "org.a11y.atspi.Event.Object"
1229#define ATSPI_DBUS_INTERFACE_HYPERLINK "org.a11y.atspi.Hyperlink"
1230#define ATSPI_DBUS_INTERFACE_HYPERTEXT "org.a11y.atspi.Hypertext"
1231#define ATSPI_DBUS_INTERFACE_IMAGE "org.a11y.atspi.Image"
1232#define ATSPI_DBUS_INTERFACE_SELECTION "org.a11y.atspi.Selection"
1233#define ATSPI_DBUS_INTERFACE_TABLE "org.a11y.atspi.Table"
1234#define ATSPI_DBUS_INTERFACE_TEXT "org.a11y.atspi.Text"
1235#define ATSPI_DBUS_INTERFACE_VALUE "org.a11y.atspi.Value"
1236#define ATSPI_DBUS_INTERFACE_SOCKET "org.a11y.atspi.Socket"
1237
1238#ifdef __cplusplus
1239}
1240#endif
1241#endif /* _ATSPI_CONSTANTS_H_ */
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 4efa00a1f..7e1896151 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -7,6 +7,7 @@ AM_CPPFLAGS = \
7-I. \ 7-I. \
8-I$(top_builddir) \ 8-I$(top_builddir) \
9-I$(top_srcdir) \ 9-I$(top_srcdir) \
10-I$(top_srcdir)/src/imported \
10-I$(top_srcdir)/src/lib \ 11-I$(top_srcdir)/src/lib \
11-I$(top_builddir)/src/lib \ 12-I$(top_builddir)/src/lib \
12-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ 13-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
@@ -486,7 +487,9 @@ elm_win.c \
486els_box.c \ 487els_box.c \
487els_cursor.c \ 488els_cursor.c \
488els_tooltip.c \ 489els_tooltip.c \
489elu_ews_wm.c 490elu_ews_wm.c \
491elm_atspi_bridge.c
492
490 493
491libelementary_la_CFLAGS = 494libelementary_la_CFLAGS =
492libelementary_la_LIBADD = \ 495libelementary_la_LIBADD = \
diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c
index e6a9b8eb9..3e4e44aa9 100644
--- a/src/lib/elc_fileselector.c
+++ b/src/lib/elc_fileselector.c
@@ -21,6 +21,9 @@ EAPI Eo_Op ELM_OBJ_FILESELECTOR_BASE_ID = EO_NOOP;
21#define MY_CLASS_NAME "Elm_Fileselector" 21#define MY_CLASS_NAME "Elm_Fileselector"
22#define MY_CLASS_NAME_LEGACY "elm_fileselector" 22#define MY_CLASS_NAME_LEGACY "elm_fileselector"
23 23
24/* FIXME: need a way to find a gap between the size of item and thumbnail */
25#define GENGRID_PADDING 16
26
24static Elm_Genlist_Item_Class *list_itc[ELM_FILE_LAST]; 27static Elm_Genlist_Item_Class *list_itc[ELM_FILE_LAST];
25static Elm_Gengrid_Item_Class *grid_itc[ELM_FILE_LAST]; 28static Elm_Gengrid_Item_Class *grid_itc[ELM_FILE_LAST];
26 29
@@ -150,15 +153,25 @@ _itc_icon_folder_get(void *data __UNUSED__,
150 Evas_Object *obj, 153 Evas_Object *obj,
151 const char *source) 154 const char *source)
152{ 155{
153 Evas_Object *ic; 156 Evas_Object *ic, *grid, *f;
154 157
155 if (strcmp(source, "elm.swallow.icon")) return NULL; 158 if (strcmp(source, "elm.swallow.icon")) return NULL;
156 159
160 f = evas_object_data_get(obj, "parent");
161 ELM_FILESELECTOR_DATA_GET(f, sd);
162
157 ic = elm_icon_add(obj); 163 ic = elm_icon_add(obj);
158 elm_icon_standard_set(ic, "folder"); 164 elm_icon_standard_set(ic, "folder");
159
160 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); 165 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
161 return ic; 166 evas_object_show(ic);
167
168 grid = elm_grid_add(obj);
169 elm_grid_size_set(grid, 1, 1);
170 elm_grid_pack(grid, ic, 0, 0, 1, 1);
171 evas_object_size_hint_min_set(grid, sd->thumbnail_size.w, sd->thumbnail_size.h);
172 evas_object_show(grid);
173
174 return grid;
162} 175}
163 176
164static Evas_Object * 177static Evas_Object *
@@ -167,16 +180,26 @@ _itc_icon_image_get(void *data,
167 const char *source) 180 const char *source)
168{ 181{
169 const char *filename = data; 182 const char *filename = data;
170 Evas_Object *ic; 183 Evas_Object *ic, *grid, *f;
171 184
172 if (strcmp(source, "elm.swallow.icon")) return NULL; 185 if (strcmp(source, "elm.swallow.icon")) return NULL;
173 186
187 f = evas_object_data_get(obj, "parent");
188 ELM_FILESELECTOR_DATA_GET(f, sd);
189
174 ic = elm_icon_add(obj); 190 ic = elm_icon_add(obj);
175 elm_icon_standard_set(ic, "image"); 191 elm_icon_standard_set(ic, "image");
176 elm_icon_thumb_set(ic, filename, NULL); 192 elm_icon_thumb_set(ic, filename, NULL);
177
178 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); 193 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
179 return ic; 194 evas_object_show(ic);
195
196 grid = elm_grid_add(obj);
197 elm_grid_size_set(grid, 1, 1);
198 elm_grid_pack(grid, ic, 0, 0, 1, 1);
199 evas_object_size_hint_min_set(grid, sd->thumbnail_size.w, sd->thumbnail_size.h);
200 evas_object_show(grid);
201
202 return grid;
180} 203}
181 204
182static Evas_Object * 205static Evas_Object *
@@ -184,15 +207,25 @@ _itc_icon_file_get(void *data __UNUSED__,
184 Evas_Object *obj, 207 Evas_Object *obj,
185 const char *source) 208 const char *source)
186{ 209{
187 Evas_Object *ic; 210 Evas_Object *ic, *grid, *f;
188 211
189 if (strcmp(source, "elm.swallow.icon")) return NULL; 212 if (strcmp(source, "elm.swallow.icon")) return NULL;
190 213
214 f = evas_object_data_get(obj, "parent");
215 ELM_FILESELECTOR_DATA_GET(f, sd);
216
191 ic = elm_icon_add(obj); 217 ic = elm_icon_add(obj);
192 elm_icon_standard_set(ic, "file"); 218 elm_icon_standard_set(ic, "file");
193
194 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); 219 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
195 return ic; 220 evas_object_show(ic);
221
222 grid = elm_grid_add(obj);
223 elm_grid_size_set(grid, 1, 1);
224 elm_grid_pack(grid, ic, 0, 0, 1, 1);
225 evas_object_size_hint_min_set(grid, sd->thumbnail_size.w, sd->thumbnail_size.h);
226 evas_object_show(grid);
227
228 return grid;
196} 229}
197 230
198static Eina_Bool 231static Eina_Bool
@@ -1014,6 +1047,7 @@ _files_list_add(Evas_Object *obj)
1014 Evas_Object *li; 1047 Evas_Object *li;
1015 1048
1016 li = elm_genlist_add(obj); 1049 li = elm_genlist_add(obj);
1050 evas_object_data_set(li, "parent", obj);
1017 elm_widget_mirrored_automatic_set(li, EINA_FALSE); 1051 elm_widget_mirrored_automatic_set(li, EINA_FALSE);
1018 evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL); 1052 evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
1019 evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); 1053 evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -1039,16 +1073,17 @@ static Evas_Object *
1039_files_grid_add(Evas_Object *obj) 1073_files_grid_add(Evas_Object *obj)
1040{ 1074{
1041 Evas_Object *grid; 1075 Evas_Object *grid;
1042 int s; 1076
1077 ELM_FILESELECTOR_DATA_GET(obj, sd);
1043 1078
1044 grid = elm_gengrid_add(obj); 1079 grid = elm_gengrid_add(obj);
1080 evas_object_data_set(grid, "parent", obj);
1045 elm_widget_mirrored_automatic_set(grid, EINA_FALSE); 1081 elm_widget_mirrored_automatic_set(grid, EINA_FALSE);
1046 evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL); 1082 evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
1047 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); 1083 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1048 1084
1049 // XXX: will fail for dynamic finger size changing 1085 elm_gengrid_item_size_set(grid, sd->thumbnail_size.w + GENGRID_PADDING, sd->thumbnail_size.h + GENGRID_PADDING);
1050 s = elm_config_finger_size_get() * 2; 1086
1051 elm_gengrid_item_size_set(grid, s, s);
1052 elm_gengrid_align_set(grid, 0.0, 0.0); 1087 elm_gengrid_align_set(grid, 0.0, 0.0);
1053 1088
1054 evas_object_smart_callback_add(grid, "selected", _on_item_selected, obj); 1089 evas_object_smart_callback_add(grid, "selected", _on_item_selected, obj);
@@ -1227,6 +1262,10 @@ _elm_fileselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
1227 elm_widget_sub_object_add(obj, pb); 1262 elm_widget_sub_object_add(obj, pb);
1228 priv->spinner = pb; 1263 priv->spinner = pb;
1229 1264
1265 // XXX: will fail for dynamic finger size changing
1266 priv->thumbnail_size.w = elm_config_finger_size_get() * 2 - GENGRID_PADDING;
1267 priv->thumbnail_size.h = priv->thumbnail_size.w;
1268
1230 // files_view 1269 // files_view
1231 priv->files_view = _files_list_add(obj); 1270 priv->files_view = _files_list_add(obj);
1232 1271
@@ -1905,6 +1944,56 @@ _hidden_visible_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
1905 *ret = sd->hidden_visible; 1944 *ret = sd->hidden_visible;
1906} 1945}
1907 1946
1947EAPI void
1948elm_fileselector_thumbnail_size_set(Evas_Object *obj,
1949 Evas_Coord w,
1950 Evas_Coord h)
1951{
1952 ELM_FILESELECTOR_CHECK(obj);
1953 eo_do(obj, elm_obj_fileselector_thumbnail_size_set(w, h));
1954}
1955
1956static void
1957_thumbnail_size_set(Eo *obj __UNUSED__, void *_pd, va_list *list EINA_UNUSED)
1958{
1959 Evas_Coord w = va_arg(*list, Evas_Coord);
1960 Evas_Coord h = va_arg(*list, Evas_Coord);
1961 Elm_Fileselector_Smart_Data *sd = _pd;
1962
1963 if (sd->thumbnail_size.w == w && sd->thumbnail_size.h == h) return;
1964
1965 if (!w || !h)
1966 w = h = elm_config_finger_size_get() * 2 - GENGRID_PADDING;
1967
1968 sd->thumbnail_size.w = w;
1969 sd->thumbnail_size.h = h;
1970
1971 if (sd->mode == ELM_FILESELECTOR_GRID)
1972 elm_gengrid_item_size_set(sd->files_view, w + GENGRID_PADDING, h + GENGRID_PADDING);
1973
1974 _populate(obj, sd->path, NULL, NULL);
1975}
1976
1977EAPI void
1978elm_fileselector_thumbnail_size_get(const Evas_Object *obj,
1979 Evas_Coord *w,
1980 Evas_Coord *h)
1981{
1982 ELM_FILESELECTOR_CHECK(obj);
1983 eo_do((Eo *) obj, elm_obj_fileselector_thumbnail_size_get(w, h));
1984}
1985
1986static void
1987_thumbnail_size_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
1988{
1989 Evas_Coord *w = va_arg(*list, Evas_Coord *);
1990 Evas_Coord *h = va_arg(*list, Evas_Coord *);
1991 Elm_Fileselector_Smart_Data *sd = _pd;
1992
1993 if (w) *w = sd->thumbnail_size.w;
1994 if (h) *h = sd->thumbnail_size.h;
1995}
1996
1908static void 1997static void
1909_elm_fileselector_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) 1998_elm_fileselector_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
1910{ 1999{
@@ -1987,6 +2076,8 @@ _class_constructor(Eo_Class *klass)
1987 EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR), _filters_clear), 2076 EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR), _filters_clear),
1988 EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET), _hidden_visible_set), 2077 EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET), _hidden_visible_set),
1989 EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET), _hidden_visible_get), 2078 EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET), _hidden_visible_get),
2079 EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_THUMBNAIL_SIZE_SET), _thumbnail_size_set),
2080 EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_THUMBNAIL_SIZE_GET), _thumbnail_size_get),
1990 EO_OP_FUNC_SENTINEL 2081 EO_OP_FUNC_SENTINEL
1991 }; 2082 };
1992 eo_class_funcs_set(klass, func_desc); 2083 eo_class_funcs_set(klass, func_desc);
@@ -2049,6 +2140,8 @@ static const Eo_Op_Description op_desc[] = {
2049 EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR, "Clear filters"), 2140 EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR, "Clear filters"),
2050 EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET, "Enable or disable visibility of hidden files/directories in the file selector widget."), 2141 EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET, "Enable or disable visibility of hidden files/directories in the file selector widget."),
2051 EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET, "Get if visibility of hidden files/directories in the file selector widget is enabled or disabled."), 2142 EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET, "Get if visibility of hidden files/directories in the file selector widget is enabled or disabled."),
2143 EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_THUMBNAIL_SIZE_SET, "Set the size for the thumbnail of the file selector widget's view, if it's in #ELM_FILESELECTOR_GRID mode"),
2144 EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_THUMBNAIL_SIZE_GET, "Get the size for the thumbnails of a given file selector widget."),
2052 EO_OP_DESCRIPTION_SENTINEL 2145 EO_OP_DESCRIPTION_SENTINEL
2053}; 2146};
2054static const Eo_Class_Description class_desc = { 2147static const Eo_Class_Description class_desc = {
diff --git a/src/lib/elc_fileselector_eo.h b/src/lib/elc_fileselector_eo.h
index e50fa9c37..a87a91cb6 100644
--- a/src/lib/elc_fileselector_eo.h
+++ b/src/lib/elc_fileselector_eo.h
@@ -32,6 +32,8 @@ enum
32 ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR, 32 ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR,
33 ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET, 33 ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET,
34 ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET, 34 ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET,
35 ELM_OBJ_FILESELECTOR_SUB_ID_THUMBNAIL_SIZE_SET,
36 ELM_OBJ_FILESELECTOR_SUB_ID_THUMBNAIL_SIZE_GET,
35 ELM_OBJ_FILESELECTOR_SUB_ID_LAST 37 ELM_OBJ_FILESELECTOR_SUB_ID_LAST
36}; 38};
37 39
@@ -301,5 +303,31 @@ enum
301#define elm_obj_fileselector_hidden_visible_get(ret) ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret) 303#define elm_obj_fileselector_hidden_visible_get(ret) ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
302 304
303/** 305/**
306 * @def elm_obj_fileselector_thumbnail_size_get
307 * @since 1.9
308 *
309 * Get the size for the thumbnail of a given file selector widget
310 *
311 * @param[out] w
312 * @param[out] h
313 *
314 * @see elm_fileselector_thumbnail_size_get
315 */
316#define elm_obj_fileselector_thumbnail_size_get(w, h) ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_THUMBNAIL_SIZE_GET), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
317
318/**
319 * @def elm_obj_fileselector_group_thumbnail_size_set
320 * @since 1.9
321 *
322 * Set the size for the thumbnail of the file selector widget's view.
323 *
324 * @param[in] w
325 * @param[in] h
326 *
327 * @see elm_fileselector_thumbnail_size_set
328 */
329#define elm_obj_fileselector_thumbnail_size_set(w, h) ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_THUMBNAIL_SIZE_SET), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
330
331/**
304 * @} 332 * @}
305 */ 333 */
diff --git a/src/lib/elc_fileselector_legacy.h b/src/lib/elc_fileselector_legacy.h
index 4b5ab8abe..e00244d46 100644
--- a/src/lib/elc_fileselector_legacy.h
+++ b/src/lib/elc_fileselector_legacy.h
@@ -362,3 +362,36 @@ EAPI void elm_fileselector_hidden_visible_set(Evas_Object *obj,
362 * @ingroup Fileselector 362 * @ingroup Fileselector
363 */ 363 */
364EAPI Eina_Bool elm_fileselector_hidden_visible_get(const Evas_Object *obj); 364EAPI Eina_Bool elm_fileselector_hidden_visible_get(const Evas_Object *obj);
365
366/**
367 * Set the size for the thumbnail of the file selector widget's view.
368 *
369 * @param obj The file selector object
370 * @param w The thumbnail's width.
371 * @param h The thumbnail's height.
372 *
373 * @note If w or h is 0, default value will be used.
374 *
375 * @see elm_fileselector_thumbnail_size_get()
376 *
377 * @since 1.9
378 * @ingroup Fileselector
379 */
380EAPI void elm_fileselector_thumbnail_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
381
382/**
383 * Get the size for the thumbnail of a given file selector widget
384 *
385 * @param obj The file selector object.
386 * @param w Pointer to a variable where to store the thumbnail's width.
387 * @param h Pointer to a variable where to store the thumbnail's height.
388 *
389 * @note Use @c NULL pointers on the size values you're not
390 * interested in: they'll be ignored by the function.
391 *
392 * @see elm_fileselector_thumbnail_size_set()
393 *
394 * @since 1.9
395 * @ingroup Fileselector
396 */
397EAPI void elm_fileselector_thumbnail_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c
index 0feb55c60..c9256b4f2 100644
--- a/src/lib/elc_popup.c
+++ b/src/lib/elc_popup.c
@@ -587,7 +587,7 @@ _button_remove(Evas_Object *obj,
587 else 587 else
588 { 588 {
589 char style[1024]; 589 char style[1024];
590 590
591 snprintf(style, sizeof(style), "popup/%s", elm_widget_style_get(obj)); 591 snprintf(style, sizeof(style), "popup/%s", elm_widget_style_get(obj));
592 snprintf(buf, sizeof(buf), "buttons%i", sd->last_button_number); 592 snprintf(buf, sizeof(buf), "buttons%i", sd->last_button_number);
593 if (!elm_layout_theme_set(sd->action_area, "popup", buf, style)) 593 if (!elm_layout_theme_set(sd->action_area, "popup", buf, style))
@@ -619,7 +619,7 @@ static void
619_list_add(Evas_Object *obj) 619_list_add(Evas_Object *obj)
620{ 620{
621 char style[1024]; 621 char style[1024];
622 622
623 ELM_POPUP_DATA_GET(obj, sd); 623 ELM_POPUP_DATA_GET(obj, sd);
624 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 624 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
625 625
@@ -853,7 +853,7 @@ static void
853_item_new(Elm_Popup_Item *it) 853_item_new(Elm_Popup_Item *it)
854{ 854{
855 char style[1024]; 855 char style[1024];
856 856
857 elm_widget_item_text_set_hook_set(it, _item_text_set_hook); 857 elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
858 elm_widget_item_text_get_hook_set(it, _item_text_get_hook); 858 elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
859 elm_widget_item_content_set_hook_set(it, _item_content_set_hook); 859 elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
@@ -864,7 +864,7 @@ _item_new(Elm_Popup_Item *it)
864 elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook); 864 elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
865 865
866 VIEW(it) = elm_layout_add(WIDGET(it)); 866 VIEW(it) = elm_layout_add(WIDGET(it));
867 867
868 snprintf(style, sizeof(style), "popup/%s", elm_widget_style_get(WIDGET(it))); 868 snprintf(style, sizeof(style), "popup/%s", elm_widget_style_get(WIDGET(it)));
869 if (!elm_layout_theme_set(VIEW(it), "popup", "item", style)) 869 if (!elm_layout_theme_set(VIEW(it), "popup", "item", style))
870 CRITICAL("Failed to set layout!"); 870 CRITICAL("Failed to set layout!");
@@ -1497,7 +1497,7 @@ _elm_popup_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
1497 Elm_Popup_Smart_Data *priv = _pd; 1497 Elm_Popup_Smart_Data *priv = _pd;
1498 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 1498 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
1499 char style[1024]; 1499 char style[1024];
1500 1500
1501 eo_do_super(obj, MY_CLASS, evas_obj_smart_add()); 1501 eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
1502 elm_widget_sub_object_parent_add(obj); 1502 elm_widget_sub_object_parent_add(obj);
1503 1503
@@ -1509,7 +1509,7 @@ _elm_popup_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
1509 snprintf(style, sizeof(style), "%s", "default"); 1509 snprintf(style, sizeof(style), "%s", "default");
1510 if (!elm_layout_theme_set(obj, "popup", "base", style)) 1510 if (!elm_layout_theme_set(obj, "popup", "base", style))
1511 CRITICAL("Failed to set layout!"); 1511 CRITICAL("Failed to set layout!");
1512 1512
1513 snprintf(style, sizeof(style), "popup/%s", "default"); 1513 snprintf(style, sizeof(style), "popup/%s", "default");
1514 1514
1515 priv->notify = elm_notify_add(obj); 1515 priv->notify = elm_notify_add(obj);
@@ -1756,6 +1756,40 @@ _orient_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
1756} 1756}
1757 1757
1758EAPI void 1758EAPI void
1759elm_popup_align_set(Evas_Object *obj, double horizontal, double vertical)
1760{
1761 ELM_POPUP_CHECK(obj);
1762 eo_do(obj, elm_obj_popup_align_set(horizontal, vertical));
1763}
1764
1765static void
1766_align_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
1767{
1768 double horizontal = va_arg(*list, double);
1769 double vertical = va_arg(*list, double);
1770 Elm_Popup_Smart_Data *sd = _pd;
1771
1772 elm_notify_align_set(sd->notify, horizontal, vertical);
1773}
1774
1775EAPI void
1776elm_popup_align_get(const Evas_Object *obj, double *horizontal, double *vertical)
1777{
1778 ELM_POPUP_CHECK(obj);
1779 eo_do((Eo *) obj, elm_obj_popup_align_get(horizontal, vertical));
1780}
1781
1782static void
1783_align_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
1784{
1785 double *horizontal = va_arg(*list, double *);
1786 double *vertical = va_arg(*list, double *);
1787 Elm_Popup_Smart_Data *sd = _pd;
1788
1789 elm_notify_align_get(sd->notify, horizontal, vertical);
1790}
1791
1792EAPI void
1759elm_popup_timeout_set(Evas_Object *obj, 1793elm_popup_timeout_set(Evas_Object *obj,
1760 double timeout) 1794 double timeout)
1761{ 1795{
@@ -1922,6 +1956,8 @@ _class_constructor(Eo_Class *klass)
1922 EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET), _allow_events_set), 1956 EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET), _allow_events_set),
1923 EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET), _allow_events_get), 1957 EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET), _allow_events_get),
1924 EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND), _item_append), 1958 EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND), _item_append),
1959 EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALIGN_SET), _align_set),
1960 EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALIGN_GET), _align_get),
1925 EO_OP_FUNC_SENTINEL 1961 EO_OP_FUNC_SENTINEL
1926 }; 1962 };
1927 eo_class_funcs_set(klass, func_desc); 1963 eo_class_funcs_set(klass, func_desc);
@@ -1938,6 +1974,8 @@ static const Eo_Op_Description op_desc[] = {
1938 EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET, "Sets whether events should be passed to by a click outside."), 1974 EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET, "Sets whether events should be passed to by a click outside."),
1939 EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET, "Returns value indicating whether allow event is enabled or not."), 1975 EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET, "Returns value indicating whether allow event is enabled or not."),
1940 EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND, "Add a new item to a Popup object."), 1976 EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND, "Add a new item to a Popup object."),
1977 EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ALIGN_SET, "Set the popup alignment relative to its parent."),
1978 EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ALIGN_GET, "Return the popup alignment relative to its parent."),
1941 EO_OP_DESCRIPTION_SENTINEL 1979 EO_OP_DESCRIPTION_SENTINEL
1942}; 1980};
1943static const Eo_Class_Description class_desc = { 1981static const Eo_Class_Description class_desc = {
diff --git a/src/lib/elc_popup_eo.h b/src/lib/elc_popup_eo.h
index 6d0910937..f1c8b1fd8 100644
--- a/src/lib/elc_popup_eo.h
+++ b/src/lib/elc_popup_eo.h
@@ -20,6 +20,8 @@ enum
20 ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET, 20 ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET,
21 ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET, 21 ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET,
22 ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND, 22 ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND,
23 ELM_OBJ_POPUP_SUB_ID_ALIGN_SET,
24 ELM_OBJ_POPUP_SUB_ID_ALIGN_GET,
23 ELM_OBJ_POPUP_SUB_ID_LAST 25 ELM_OBJ_POPUP_SUB_ID_LAST
24}; 26};
25 27
@@ -138,6 +140,32 @@ enum
138 * @see elm_popup_item_append 140 * @see elm_popup_item_append
139 */ 141 */
140#define elm_obj_popup_item_append(label, icon, func, data, ret) ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret) 142#define elm_obj_popup_item_append(label, icon, func, data, ret) ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret)
143
144/**
145 * @def elm_obj_popup_align_set
146 * @since 1.9
147 *
148 * @brief Set the alignment of the popup object relative to its parent
149 *
150 * @param[in] horizontal
151 * @param[in] vertical
152 *
153 * @see elm_popup_align_set
154 */
155#define elm_obj_popup_align_set(horizontal, vertical) ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALIGN_SET), EO_TYPECHECK(double, horizontal), EO_TYPECHECK(double, vertical)
156
157/**
158 * @def elm_obj_popup_align_get
159 * @since 1.9
160 *
161 * @brief Return the alignment of the popup object relative to its parent
162 *
163 * @param[out] horizontal
164 * @param[out] vertical
165 *
166 * @see elm_popup_align_get
167 */
168#define elm_obj_popup_align_get(horizontal, vertical) ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALIGN_GET), EO_TYPECHECK(double *, horizontal), EO_TYPECHECK(double *, vertical)
141/** 169/**
142 * @} 170 * @}
143 */ 171 */
diff --git a/src/lib/elc_popup_legacy.h b/src/lib/elc_popup_legacy.h
index 0f2d08f52..63d76289c 100644
--- a/src/lib/elc_popup_legacy.h
+++ b/src/lib/elc_popup_legacy.h
@@ -136,3 +136,31 @@ EAPI Eina_Bool elm_popup_allow_events_get(const Evas_Object *obj);
136 * and item(s) can be there in a popup content area. 136 * and item(s) can be there in a popup content area.
137 */ 137 */
138EAPI Elm_Object_Item *elm_popup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1); 138EAPI Elm_Object_Item *elm_popup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
139
140/**
141 * @brief Set the alignment of the popup object
142 * @param obj popup object
143 * @param horizontal The horizontal alignment of the popup
144 * @param vertical The vertical alignment of the popup
145 *
146 * Sets the alignment in which the popup will appear in its parent.
147 *
148 * @see elm_popup_align_get()
149 *
150 * @since 1.9
151 * @ingroup Popup
152 */
153EAPI void elm_popup_align_set(Evas_Object *obj, double horizontal, double vertical);
154
155/**
156 * @brief Get the alignment of the popup object
157 * @param obj The popup object
158 * @param horizontal The horizontal alignment of the popup
159 * @param vertical The vertical alignment of the popup
160 *
161 * @see elm_popup_align_set()
162 *
163 * @since 1.9
164 * @ingroup Popup
165 */
166EAPI void elm_popup_align_get(const Evas_Object *obj, double *horizontal, double *vertical);
diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
new file mode 100644
index 000000000..df976cfdc
--- /dev/null
+++ b/src/lib/elm_atspi_bridge.c
@@ -0,0 +1,178 @@
1#ifdef HAVE_CONFIG_H
2# include "elementary_config.h"
3#endif
4
5#include <Elementary.h>
6#include "elm_priv.h"
7
8#include "atspi/atspi-constants.h"
9
10/*
11 * Accessibility Bus info not defined in atspi-constants.h
12 */
13#define A11Y_DBUS_NAME "org.a11y.Bus"
14#define A11Y_DBUS_PATH "/org/a11y/bus"
15#define A11Y_DBUS_INTERFACE "org.a11y.Bus"
16
17static int _init_count = 0;
18static Eldbus_Connection *_a11y_bus = NULL;
19
20static Eldbus_Message *
21_role_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
22{
23 Eldbus_Message *ret = eldbus_message_method_return_new(msg);
24 eldbus_message_arguments_append(ret, "u", ATSPI_ROLE_APPLICATION);
25 return ret;
26}
27
28static Eldbus_Message *
29_role_name_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
30{
31 // Currently only root object is available.
32 Eldbus_Message *ret = eldbus_message_method_return_new(msg);
33 eldbus_message_arguments_append(ret, "s", "application");
34
35 return ret;
36}
37
38static Eldbus_Message *
39_role_localized_name_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
40{
41 // Currently only root object is available.
42 Eldbus_Message *ret = eldbus_message_method_return_new(msg);
43 eldbus_message_arguments_append(ret, "s", gettext("application"));
44
45 return ret;
46}
47
48static const Eldbus_Method accessible_methods[] = {
49 { "GetRole", NULL, ELDBUS_ARGS({"u", "Role"}), _role_get, 0 },
50 { "GetRoleName", NULL, ELDBUS_ARGS({"s", "Name"}), _role_name_get, 0 },
51 { "GetLocalizedRoleName", NULL, ELDBUS_ARGS({"s", "LocalizedName"}), _role_localized_name_get, 0},
52 { NULL, NULL, NULL, NULL, 0 }
53};
54
55static Eina_Bool
56_accessible_property_get(const Eldbus_Service_Interface *interface EINA_UNUSED, const char *property,
57 Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED,
58 Eldbus_Message **error EINA_UNUSED)
59{
60 if (!strcmp(property, "Name"))
61 {
62 eldbus_message_iter_basic_append(iter, 's', elm_app_name_get());
63 return EINA_TRUE;
64 }
65 return EINA_FALSE;
66}
67
68static const Eldbus_Property accessible_properties[] = {
69 { "Name", "s", NULL, NULL, 0 },
70 { NULL, NULL, NULL, NULL, 0 }
71};
72
73static const Eldbus_Service_Interface_Desc accessible_iface_desc = {
74 ATSPI_DBUS_INTERFACE_ACCESSIBLE, accessible_methods, NULL, accessible_properties, _accessible_property_get, NULL
75};
76
77static void
78_on_app_register(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
79{
80 const char *errname, *errmsg;
81
82 if (eldbus_message_error_get(msg, &errname, &errmsg))
83 {
84 ERR("%s %s", errname, errmsg);
85 return;
86 }
87 DBG("Application successfuly registered at ATSPI2 bus.");
88}
89
90static Eina_Bool
91_app_register(Eldbus_Connection *a11y_bus)
92{
93 Eldbus_Message *message = eldbus_message_method_call_new(ATSPI_DBUS_NAME_REGISTRY,
94 ATSPI_DBUS_PATH_ROOT,
95 ATSPI_DBUS_INTERFACE_SOCKET,
96 "Embed");
97 Eldbus_Message_Iter *iter = eldbus_message_iter_get(message);
98 Eldbus_Message_Iter *iter_struct = eldbus_message_iter_container_new(iter, 'r', NULL);
99
100 const char *bus = eldbus_connection_unique_name_get(a11y_bus);
101 char *path = ATSPI_DBUS_PATH_ROOT;
102
103 eldbus_message_iter_basic_append(iter_struct, 's', bus);
104 eldbus_message_iter_basic_append(iter_struct, 'o', path);
105 eldbus_message_iter_container_close(iter, iter_struct);
106
107 eldbus_connection_send(a11y_bus, message, _on_app_register, NULL, -1);
108
109 return EINA_TRUE;
110}
111
112static void
113_interfaces_register(Eldbus_Connection *a11y_bus)
114{
115 eldbus_service_interface_register(a11y_bus, ATSPI_DBUS_PATH_ROOT, &accessible_iface_desc);
116}
117
118static void
119_a11y_bus_initialize(const char *socket_addr)
120{
121 Eldbus_Connection *a11y_bus = eldbus_address_connection_get(socket_addr);
122
123 _interfaces_register(a11y_bus);
124 _app_register(a11y_bus);
125
126 _a11y_bus = a11y_bus;
127}
128
129static void
130_a11y_bus_address_get(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
131{
132 const char *errname, *errmsg, *sock_addr = NULL;
133 Eldbus_Connection *session_bus = data;
134
135 if (eldbus_message_error_get(msg, &errname, &errmsg))
136 {
137 ERR("%s %s", errname, errmsg);
138 goto end;
139 }
140
141 if (!eldbus_message_arguments_get(msg, "s", &sock_addr) || !sock_addr)
142 {
143 ERR("Could not get A11Y Bus socket address.");
144 goto end;
145 }
146
147 _a11y_bus_initialize(sock_addr);
148
149end:
150 eldbus_connection_unref(session_bus);
151}
152
153void
154_elm_atspi_bridge_init(void)
155{
156 Eldbus_Message *msg;
157 Eldbus_Connection *session_bus;
158
159 if (!_init_count && _elm_config->access_mode == ELM_ACCESS_MODE_ON)
160 {
161 session_bus = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
162 msg = eldbus_message_method_call_new(A11Y_DBUS_NAME, A11Y_DBUS_PATH, A11Y_DBUS_INTERFACE, "GetAddress");
163 eldbus_connection_send(session_bus, msg, _a11y_bus_address_get, session_bus, -1);
164 _init_count = 1;
165 }
166}
167
168void
169_elm_atspi_bridge_shutdown(void)
170{
171 if (_init_count)
172 {
173 if (_a11y_bus)
174 eldbus_connection_unref(_a11y_bus);
175 _a11y_bus = NULL;
176 _init_count = 0;
177 }
178}
diff --git a/src/lib/elm_authors.h b/src/lib/elm_authors.h
index 590991eb6..ab5583fb3 100644
--- a/src/lib/elm_authors.h
+++ b/src/lib/elm_authors.h
@@ -85,6 +85,9 @@
85 * @author Youngbok Shin <youngb.shin@@samsung.com> 85 * @author Youngbok Shin <youngb.shin@@samsung.com>
86 * @author Niraj Kumar <niraj.kr@@samsung.com> <niraj.kumar.ait@@gmail.com> 86 * @author Niraj Kumar <niraj.kr@@samsung.com> <niraj.kumar.ait@@gmail.com>
87 * @author Amitesh Singh <singh.amitesh@@gmail.com> 87 * @author Amitesh Singh <singh.amitesh@@gmail.com>
88 * @author Abhinandan Aryadipta <a.aryadipta@@samsung.com>
89 * @author Sanghyeon Lee <sh10233.lee@@samsung.com>
90 * @author Anil Kumar Nahak <ak.nahak@@samsung.com>
88 * 91 *
89 * Please contact <enlightenment-devel@lists.sourceforge.net> to get in 92 * Please contact <enlightenment-devel@lists.sourceforge.net> to get in
90 * contact with the developers and maintainers. 93 * contact with the developers and maintainers.
diff --git a/src/lib/elm_cnp.c b/src/lib/elm_cnp.c
index 8cc5e59c1..28308eca2 100644
--- a/src/lib/elm_cnp.c
+++ b/src/lib/elm_cnp.c
@@ -2169,10 +2169,10 @@ struct _Wl_Cnp_Selection
2169 2169
2170static Eina_Bool _wl_elm_cnp_init(void); 2170static Eina_Bool _wl_elm_cnp_init(void);
2171 2171
2172static Wl_Cnp_Selection wl_cnp_selection = 2172static Wl_Cnp_Selection wl_cnp_selection =
2173{ 2173{
2174 0, 0, NULL, NULL, 2174 0, 0, NULL, NULL,
2175 NULL, 0, 0, NULL, NULL, NULL, 2175 NULL, 0, 0, NULL, NULL, NULL,
2176 0, NULL, 0, EINA_FALSE 2176 0, NULL, 0, EINA_FALSE
2177}; 2177};
2178 2178
@@ -2242,7 +2242,7 @@ _wl_elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Form
2242 if (sel->loss_cb) sel->loss_cb(sel->loss_data, selection); 2242 if (sel->loss_cb) sel->loss_cb(sel->loss_data, selection);
2243 2243
2244 if (sel->widget) 2244 if (sel->widget)
2245 evas_object_event_callback_del_full(sel->widget, 2245 evas_object_event_callback_del_full(sel->widget,
2246 EVAS_CALLBACK_DEL, 2246 EVAS_CALLBACK_DEL,
2247 _wl_sel_obj_del, &wl_cnp_selection); 2247 _wl_sel_obj_del, &wl_cnp_selection);
2248 sel->widget = NULL; 2248 sel->widget = NULL;
@@ -2257,7 +2257,7 @@ _wl_elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Form
2257 sel->loss_data = NULL; 2257 sel->loss_data = NULL;
2258 2258
2259 evas_object_event_callback_add 2259 evas_object_event_callback_add
2260 (sel->widget, EVAS_CALLBACK_DEL, _wl_sel_obj_del, 2260 (sel->widget, EVAS_CALLBACK_DEL, _wl_sel_obj_del,
2261 &wl_cnp_selection); 2261 &wl_cnp_selection);
2262 2262
2263 if (selbuf) 2263 if (selbuf)
@@ -2280,7 +2280,7 @@ _wl_elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Form
2280 const char *types[10] = {0, }; 2280 const char *types[10] = {0, };
2281 int i = -1; 2281 int i = -1;
2282 2282
2283 if ((format & ELM_SEL_FORMAT_MARKUP) || 2283 if ((format & ELM_SEL_FORMAT_MARKUP) ||
2284 (format & ELM_SEL_FORMAT_TEXT)) 2284 (format & ELM_SEL_FORMAT_TEXT))
2285 { 2285 {
2286 types[++i] = "application/x-elementary-markup"; 2286 types[++i] = "application/x-elementary-markup";
@@ -2322,7 +2322,7 @@ _wl_elm_cnp_selection_get(Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Form
2322 win = elm_win_wl_window_get(obj); 2322 win = elm_win_wl_window_get(obj);
2323 2323
2324 if (sel->requestwidget) 2324 if (sel->requestwidget)
2325 evas_object_event_callback_del_full(sel->requestwidget, 2325 evas_object_event_callback_del_full(sel->requestwidget,
2326 EVAS_CALLBACK_DEL, 2326 EVAS_CALLBACK_DEL,
2327 _wl_sel_obj_del2, &wl_cnp_selection); 2327 _wl_sel_obj_del2, &wl_cnp_selection);
2328 sel->requestwidget = NULL; 2328 sel->requestwidget = NULL;
@@ -2334,18 +2334,18 @@ _wl_elm_cnp_selection_get(Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Form
2334 sel->datacb = datacb; 2334 sel->datacb = datacb;
2335 sel->udata = udata; 2335 sel->udata = udata;
2336 2336
2337 evas_object_event_callback_add(sel->requestwidget, 2337 evas_object_event_callback_add(sel->requestwidget,
2338 EVAS_CALLBACK_DEL, _wl_sel_obj_del2, 2338 EVAS_CALLBACK_DEL, _wl_sel_obj_del2,
2339 &wl_cnp_selection); 2339 &wl_cnp_selection);
2340 2340
2341 if ((selection == ELM_SEL_TYPE_CLIPBOARD) || 2341 if ((selection == ELM_SEL_TYPE_CLIPBOARD) ||
2342 (selection == ELM_SEL_TYPE_PRIMARY) || 2342 (selection == ELM_SEL_TYPE_PRIMARY) ||
2343 (selection == ELM_SEL_TYPE_SECONDARY)) 2343 (selection == ELM_SEL_TYPE_SECONDARY))
2344 { 2344 {
2345 const char *types[10] = {0, }; 2345 const char *types[10] = {0, };
2346 int i = -1; 2346 int i = -1;
2347 2347
2348 if ((format & ELM_SEL_FORMAT_MARKUP) || 2348 if ((format & ELM_SEL_FORMAT_MARKUP) ||
2349 (format & ELM_SEL_FORMAT_TEXT)) 2349 (format & ELM_SEL_FORMAT_TEXT))
2350 { 2350 {
2351 types[++i] = "application/x-elementary-markup"; 2351 types[++i] = "application/x-elementary-markup";
@@ -2389,11 +2389,11 @@ _wl_elm_cnp_selection_clear(Evas_Object *obj, Elm_Sel_Type selection __UNUSED__)
2389 return EINA_TRUE; 2389 return EINA_TRUE;
2390 2390
2391 if (sel->widget) 2391 if (sel->widget)
2392 evas_object_event_callback_del_full(sel->widget, 2392 evas_object_event_callback_del_full(sel->widget,
2393 EVAS_CALLBACK_DEL, 2393 EVAS_CALLBACK_DEL,
2394 _wl_sel_obj_del, &wl_cnp_selection); 2394 _wl_sel_obj_del, &wl_cnp_selection);
2395 if (sel->requestwidget) 2395 if (sel->requestwidget)
2396 evas_object_event_callback_del_full(sel->requestwidget, 2396 evas_object_event_callback_del_full(sel->requestwidget,
2397 EVAS_CALLBACK_DEL, 2397 EVAS_CALLBACK_DEL,
2398 _wl_sel_obj_del2, &wl_cnp_selection); 2398 _wl_sel_obj_del2, &wl_cnp_selection);
2399 2399
@@ -2509,7 +2509,7 @@ _wl_selection_receive(void *udata, int type __UNUSED__, void *event)
2509 } 2509 }
2510 else 2510 else
2511 { 2511 {
2512 evas_object_event_callback_del_full(sel->requestwidget, 2512 evas_object_event_callback_del_full(sel->requestwidget,
2513 EVAS_CALLBACK_DEL, 2513 EVAS_CALLBACK_DEL,
2514 _wl_sel_obj_del2, sel); 2514 _wl_sel_obj_del2, sel);
2515 sel->requestwidget = NULL; 2515 sel->requestwidget = NULL;
diff --git a/src/lib/elm_colorselector.c b/src/lib/elm_colorselector.c
index d471ea671..05cc2082e 100644
--- a/src/lib/elm_colorselector.c
+++ b/src/lib/elm_colorselector.c
@@ -2077,7 +2077,7 @@ _palette_color_add(Eo *obj, void *_pd, va_list *list)
2077 2077
2078 if (sd->config_load) 2078 if (sd->config_load)
2079 { 2079 {
2080 _items_del(sd); 2080 _items_del(sd);
2081 sd->config_load = EINA_FALSE; 2081 sd->config_load = EINA_FALSE;
2082 } 2082 }
2083 item = _item_new(obj); 2083 item = _item_new(obj);
@@ -2142,7 +2142,7 @@ _palette_name_set(Eo *obj, void *_pd, va_list *list)
2142 2142
2143 if (!strcmp(sd->palette_name, palette_name)) return; 2143 if (!strcmp(sd->palette_name, palette_name)) return;
2144 2144
2145 _items_del(sd); 2145 _items_del(sd);
2146 eina_stringshare_replace(&sd->palette_name, palette_name); 2146 eina_stringshare_replace(&sd->palette_name, palette_name);
2147 _palette_colors_load(obj); 2147 _palette_colors_load(obj);
2148} 2148}
diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index 82b3b87b7..e872e943a 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -97,7 +97,6 @@ _item_show_region(void *data)
97 Elm_Gengrid_Smart_Data *sd = data; 97 Elm_Gengrid_Smart_Data *sd = data;
98 Evas_Coord cvw, cvh, it_xpos = 0, it_ypos = 0, col = 0, row = 0, minx = 0, miny = 0; 98 Evas_Coord cvw, cvh, it_xpos = 0, it_ypos = 0, col = 0, row = 0, minx = 0, miny = 0;
99 Elm_Gen_Item *it = NULL; 99 Elm_Gen_Item *it = NULL;
100
101 evas_object_geometry_get(sd->pan_obj, NULL, NULL, &cvw, &cvh); 100 evas_object_geometry_get(sd->pan_obj, NULL, NULL, &cvw, &cvh);
102 101
103 if ((cvw != 0) && (cvh != 0)) 102 if ((cvw != 0) && (cvh != 0))
@@ -111,7 +110,6 @@ _item_show_region(void *data)
111 if (!it) return; 110 if (!it) return;
112 111
113 eo_do(sd->pan_obj, elm_obj_pan_pos_min_get(&minx, &miny)); 112 eo_do(sd->pan_obj, elm_obj_pan_pos_min_get(&minx, &miny));
114
115 if (sd->horizontal && (sd->item_height > 0)) 113 if (sd->horizontal && (sd->item_height > 0))
116 { 114 {
117 row = cvh / sd->item_height; 115 row = cvh / sd->item_height;
@@ -122,6 +120,19 @@ _item_show_region(void *data)
122 it_xpos = ((x - GG_IT(it)->prev_group) * sd->item_width) 120 it_xpos = ((x - GG_IT(it)->prev_group) * sd->item_width)
123 + (GG_IT(it)->prev_group * sd->group_item_width) 121 + (GG_IT(it)->prev_group * sd->group_item_width)
124 + minx; 122 + minx;
123 if (sd->s_type == ELM_GENGRID_ITEM_SCROLLTO_MIDDLE)
124 {
125 if (it_xpos > 0) it_xpos = it_xpos + (cvw / 2) - (sd->item_width / 2);
126 else it_xpos = it_xpos - (cvw / 2) + (sd->item_width / 2);
127 }
128 else if (sd->s_type == ELM_GENGRID_ITEM_SCROLLTO_TOP)
129 {
130 if (it_xpos > 0) it_xpos = it_xpos + cvw - sd->item_width;
131 }
132 else if (sd->s_type != ELM_GENGRID_ITEM_SCROLLTO_IN)
133 {
134 it_xpos = 0;
135 }
125 it_ypos = y * sd->item_height + miny; 136 it_ypos = y * sd->item_height + miny;
126 it->x = x; 137 it->x = x;
127 it->y = y; 138 it->y = y;
@@ -133,10 +144,23 @@ _item_show_region(void *data)
133 y = (it->position - 1) / col; 144 y = (it->position - 1) / col;
134 if (y > 0) 145 if (y > 0)
135 x = (it->position - 1) % y; 146 x = (it->position - 1) % y;
136 it_xpos = x * sd->item_width + minx;
137 it_ypos = ((y - GG_IT(it)->prev_group) * sd->item_height) 147 it_ypos = ((y - GG_IT(it)->prev_group) * sd->item_height)
138 + (GG_IT(it)->prev_group * sd->group_item_height) 148 + (GG_IT(it)->prev_group * sd->group_item_height)
139 + miny; 149 + miny;
150 if (sd->s_type == ELM_GENGRID_ITEM_SCROLLTO_MIDDLE)
151 {
152 if (it_ypos > 0) it_ypos = it_ypos + (cvh / 2) - (sd->item_height / 2);
153 else it_ypos = it_ypos - (cvh / 2) + (sd->item_height / 2);
154 }
155 else if (sd->s_type == ELM_GENGRID_ITEM_SCROLLTO_TOP)
156 {
157 if (it_ypos > 0) it_ypos = it_ypos + cvh - sd->item_height;
158 }
159 else if (sd->s_type != ELM_GENGRID_ITEM_SCROLLTO_IN)
160 {
161 it_ypos = 0;
162 }
163 it_xpos = x * sd->item_width + minx;
140 it->x = x; 164 it->x = x;
141 it->y = y; 165 it->y = y;
142 } 166 }
@@ -3784,13 +3808,9 @@ elm_gengrid_item_show(Elm_Object_Item *item,
3784 3808
3785 if ((it->generation < sd->generation)) return; 3809 if ((it->generation < sd->generation)) return;
3786 3810
3787 if (type == ELM_GENGRID_ITEM_SCROLLTO_IN)
3788 {
3789 //TODO : type based handling like gengrid
3790 }
3791
3792 sd->show_region = EINA_TRUE; 3811 sd->show_region = EINA_TRUE;
3793 sd->show_it = it; 3812 sd->show_it = it;
3813 sd->s_type = type;
3794 3814
3795 _item_show_region(sd); 3815 _item_show_region(sd);
3796} 3816}
@@ -3807,13 +3827,9 @@ elm_gengrid_item_bring_in(Elm_Object_Item *item,
3807 3827
3808 if (it->generation < sd->generation) return; 3828 if (it->generation < sd->generation) return;
3809 3829
3810 if (type == ELM_GENGRID_ITEM_SCROLLTO_IN)
3811 {
3812 //TODO : type based handling like gengrid
3813 }
3814
3815 sd->bring_in = EINA_TRUE; 3830 sd->bring_in = EINA_TRUE;
3816 sd->bring_in_it = it; 3831 sd->bring_in_it = it;
3832 sd->s_type = type;
3817 3833
3818 _item_show_region(sd); 3834 _item_show_region(sd);
3819} 3835}
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index c43241953..c797216da 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -1753,9 +1753,9 @@ _item_realize(Elm_Gen_Item *it,
1753 edje_object_message_signal_process(it->deco_all_view); 1753 edje_object_message_signal_process(it->deco_all_view);
1754 } 1754 }
1755 } 1755 }
1756 1756
1757 if (it->decorate_it_set) _decorate_item_set(it); 1757 if (it->decorate_it_set) _decorate_item_set(it);
1758 1758
1759 edje_object_message_signal_process(VIEW(it)); 1759 edje_object_message_signal_process(VIEW(it));
1760} 1760}
1761 1761
@@ -4499,7 +4499,7 @@ _item_block_recalc(Item_Block *itb,
4499 if (changed) 4499 if (changed)
4500 { 4500 {
4501 Eina_Bool doit = EINA_TRUE; 4501 Eina_Bool doit = EINA_TRUE;
4502 4502
4503 if (itb->sd->homogeneous) 4503 if (itb->sd->homogeneous)
4504 { 4504 {
4505 if ((it->group) && (itb->sd->group_item_height == 0)) 4505 if ((it->group) && (itb->sd->group_item_height == 0))
diff --git a/src/lib/elm_interface_scrollable.c b/src/lib/elm_interface_scrollable.c
index 625255643..2d249a5c2 100644
--- a/src/lib/elm_interface_scrollable.c
+++ b/src/lib/elm_interface_scrollable.c
@@ -1607,7 +1607,7 @@ _elm_scroll_content_pos_set(Eo *obj, void *_pd, va_list *list)
1607 (sid->edje_obj, "elm.dragable.vbar", 0.0, vy); 1607 (sid->edje_obj, "elm.dragable.vbar", 0.0, vy);
1608 edje_object_part_drag_value_set 1608 edje_object_part_drag_value_set
1609 (sid->edje_obj, "elm.dragable.hbar", vx, 0.0); 1609 (sid->edje_obj, "elm.dragable.hbar", vx, 0.0);
1610 1610
1611 if (!sid->down.bounce_x_animator) 1611 if (!sid->down.bounce_x_animator)
1612 { 1612 {
1613 if (((x < minx) && (0 <= sid->down.dx)) || 1613 if (((x < minx) && (0 <= sid->down.dx)) ||
@@ -2023,7 +2023,11 @@ _elm_scroll_momentum_animator(void *data)
2023 Evas_Coord x, y, dx, dy, px, py, maxx, maxy, minx, miny; 2023 Evas_Coord x, y, dx, dy, px, py, maxx, maxy, minx, miny;
2024 Eina_Bool no_bounce_x_end = EINA_FALSE, no_bounce_y_end = EINA_FALSE; 2024 Eina_Bool no_bounce_x_end = EINA_FALSE, no_bounce_y_end = EINA_FALSE;
2025 2025
2026 if (!sid->pan_obj) return ECORE_CALLBACK_CANCEL; 2026 if (!sid->pan_obj)
2027 {
2028 sid->down.momentum_animator = NULL;
2029 return ECORE_CALLBACK_CANCEL;
2030 }
2027 2031
2028 t = ecore_loop_time_get(); 2032 t = ecore_loop_time_get();
2029 dt = t - sid->down.anim_start; 2033 dt = t - sid->down.anim_start;
@@ -2348,7 +2352,7 @@ _elm_scroll_mouse_up_event_cb(void *data,
2348{ 2352{
2349 Elm_Scrollable_Smart_Interface_Data *sid = data; 2353 Elm_Scrollable_Smart_Interface_Data *sid = data;
2350 Evas_Coord x = 0, y = 0, ox = 0, oy = 0; 2354 Evas_Coord x = 0, y = 0, ox = 0, oy = 0;
2351 Evas_Event_Mouse_Down *ev; 2355 Evas_Event_Mouse_Up *ev;
2352 2356
2353 if (!sid->pan_obj) return; 2357 if (!sid->pan_obj) return;
2354 2358
@@ -2892,7 +2896,7 @@ _elm_scroll_hold_enterer(void *data)
2892 Evas_Coord ox = 0, oy = 0, fx = 0, fy = 0; 2896 Evas_Coord ox = 0, oy = 0, fx = 0, fy = 0;
2893 2897
2894 sid->down.hold_enterer = NULL; 2898 sid->down.hold_enterer = NULL;
2895 2899
2896 fx = sid->down.hold_x; 2900 fx = sid->down.hold_x;
2897 fy = sid->down.hold_y; 2901 fy = sid->down.hold_y;
2898 2902
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index 13088116b..929ae557e 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -1072,7 +1072,7 @@ _item_unselect(Elm_List_Item *it)
1072 { 1072 {
1073 it->selected = EINA_FALSE; 1073 it->selected = EINA_FALSE;
1074 sd->selected = eina_list_remove(sd->selected, it); 1074 sd->selected = eina_list_remove(sd->selected, it);
1075 if (!(it->base.disabled || 1075 if (!(it->base.disabled ||
1076 (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))) 1076 (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)))
1077 evas_object_smart_callback_call(WIDGET(it), SIG_UNSELECTED, it); 1077 evas_object_smart_callback_call(WIDGET(it), SIG_UNSELECTED, it);
1078 } 1078 }
diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c
index 3614c4631..3f1f0613c 100644
--- a/src/lib/elm_main.c
+++ b/src/lib/elm_main.c
@@ -316,6 +316,8 @@ elm_init(int argc,
316 system_handlers[0] = ecore_event_handler_add(ECORE_EVENT_MEMORY_STATE, _sys_memory_changed, NULL); 316 system_handlers[0] = ecore_event_handler_add(ECORE_EVENT_MEMORY_STATE, _sys_memory_changed, NULL);
317 system_handlers[1] = ecore_event_handler_add(ECORE_EVENT_LOCALE_CHANGED, _sys_lang_changed, NULL); 317 system_handlers[1] = ecore_event_handler_add(ECORE_EVENT_LOCALE_CHANGED, _sys_lang_changed, NULL);
318 318
319 _elm_atspi_bridge_init();
320
319 return _elm_init_count; 321 return _elm_init_count;
320} 322}
321 323
@@ -339,6 +341,7 @@ elm_shutdown(void)
339 while (_elm_win_deferred_free) ecore_main_loop_iterate(); 341 while (_elm_win_deferred_free) ecore_main_loop_iterate();
340 342
341 _elm_clouseau_unload(); 343 _elm_clouseau_unload();
344 _elm_atspi_bridge_shutdown();
342// wrningz :( 345// wrningz :(
343// _prefix_shutdown(); 346// _prefix_shutdown();
344 ELM_SAFE_FREE(app_name, eina_stringshare_del); 347 ELM_SAFE_FREE(app_name, eina_stringshare_del);
diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h
index 110b615ee..e99a60b4b 100644
--- a/src/lib/elm_priv.h
+++ b/src/lib/elm_priv.h
@@ -296,6 +296,8 @@ struct _Elm_Datetime_Module_Data
296 Elm_Datetime_Field_Type field_type); 296 Elm_Datetime_Field_Type field_type);
297}; 297};
298 298
299void _elm_atspi_bridge_init(void);
300void _elm_atspi_bridge_shutdown(void);
299void _elm_prefs_init(void); 301void _elm_prefs_init(void);
300void _elm_prefs_shutdown(void); 302void _elm_prefs_shutdown(void);
301 303
diff --git a/src/lib/elm_slider.c b/src/lib/elm_slider.c
index 86617d7f9..6abe2ab98 100644
--- a/src/lib/elm_slider.c
+++ b/src/lib/elm_slider.c
@@ -317,9 +317,12 @@ _popup_hide(void *data,
317 { 317 {
318 if (!sd->popup_hiding) 318 if (!sd->popup_hiding)
319 { 319 {
320 edje_object_signal_emit(sd->popup, "popup,hide", "elm"); // XXX: for compat 320 if (!(elm_widget_focus_get(data) && sd->always_popup_show))
321 edje_object_signal_emit(sd->popup, "elm,popup,hide", "elm"); 321 {
322 sd->popup_hiding = EINA_TRUE; 322 edje_object_signal_emit(sd->popup, "popup,hide", "elm"); // XXX: for compat
323 edje_object_signal_emit(sd->popup, "elm,popup,hide", "elm");
324 sd->popup_hiding = EINA_TRUE;
325 }
323 } 326 }
324 } 327 }
325} 328}
@@ -335,8 +338,11 @@ _popup_hide_done(void *data,
335 { 338 {
336 if (sd->popup_hiding) 339 if (sd->popup_hiding)
337 { 340 {
338 evas_object_hide(sd->popup); 341 if (!(elm_widget_focus_get(data) && sd->always_popup_show))
339 sd->popup_hiding = EINA_FALSE; 342 {
343 evas_object_hide(sd->popup);
344 sd->popup_hiding = EINA_FALSE;
345 }
340 } 346 }
341 } 347 }
342} 348}
@@ -1383,6 +1389,44 @@ _elm_slider_step_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
1383 *ret = sd->step; 1389 *ret = sd->step;
1384} 1390}
1385 1391
1392EAPI void
1393elm_slider_indicator_show_on_focus_set(Evas_Object *obj, Eina_Bool flag)
1394{
1395 ELM_SLIDER_CHECK(obj);
1396 eo_do(obj, elm_obj_slider_indicator_show_on_focus_set(flag));
1397}
1398
1399static void
1400_elm_slider_indicator_show_on_focus_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
1401{
1402 Eina_Bool flag = va_arg(*list, int);
1403 Elm_Slider_Smart_Data *sd = _pd;
1404
1405 if (flag)
1406 sd->always_popup_show = EINA_TRUE;
1407 else
1408 sd->always_popup_show = EINA_FALSE;
1409}
1410
1411EAPI Eina_Bool
1412elm_slider_indicator_show_on_focus_get(const Evas_Object *obj)
1413{
1414 ELM_SLIDER_CHECK(obj) EINA_FALSE;
1415 Eina_Bool ret;
1416
1417 eo_do((Eo *) obj, elm_obj_slider_indicator_show_on_focus_get(&ret));
1418 return ret;
1419}
1420
1421static void
1422_elm_slider_indicator_show_on_focus_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
1423{
1424 Eina_Bool *ret = va_arg(*list, Eina_Bool *);
1425 Elm_Slider_Smart_Data *sd = _pd;
1426 *ret = sd->always_popup_show;
1427}
1428
1429
1386static void 1430static void
1387_elm_slider_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) 1431_elm_slider_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
1388{ 1432{
@@ -1398,6 +1442,20 @@ _elm_slider_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA
1398} 1442}
1399 1443
1400static void 1444static void
1445_elm_slider_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
1446{
1447 Eina_Bool int_ret;
1448 Elm_Slider_Smart_Data *sd = _pd;
1449
1450 eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
1451
1452 if (sd->always_popup_show && elm_widget_focus_get(obj))
1453 _popup_show(obj, NULL, NULL, NULL);
1454 else
1455 _popup_hide(obj, NULL, NULL, NULL);
1456}
1457
1458static void
1401_class_constructor(Eo_Class *klass) 1459_class_constructor(Eo_Class *klass)
1402{ 1460{
1403 const Eo_Op_Func_Description func_desc[] = { 1461 const Eo_Op_Func_Description func_desc[] = {
@@ -1412,6 +1470,7 @@ _class_constructor(Eo_Class *klass)
1412 EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_ACTIVATE), _elm_slider_smart_activate), 1470 EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_ACTIVATE), _elm_slider_smart_activate),
1413 EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_slider_smart_focus_next_manager_is), 1471 EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_slider_smart_focus_next_manager_is),
1414 EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_slider_smart_focus_direction_manager_is), 1472 EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_slider_smart_focus_direction_manager_is),
1473 EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_ON_FOCUS), _elm_slider_smart_on_focus),
1415 1474
1416 EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_slider_smart_sizing_eval), 1475 EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_slider_smart_sizing_eval),
1417 EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_TEXT_ALIASES_GET), _elm_slider_smart_text_aliases_get), 1476 EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_TEXT_ALIASES_GET), _elm_slider_smart_text_aliases_get),
@@ -1437,6 +1496,8 @@ _class_constructor(Eo_Class *klass)
1437 EO_OP_FUNC(ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET), _elm_slider_indicator_show_get), 1496 EO_OP_FUNC(ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET), _elm_slider_indicator_show_get),
1438 EO_OP_FUNC(ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_STEP_SET), _elm_slider_step_set), 1497 EO_OP_FUNC(ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_STEP_SET), _elm_slider_step_set),
1439 EO_OP_FUNC(ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_STEP_GET), _elm_slider_step_get), 1498 EO_OP_FUNC(ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_STEP_GET), _elm_slider_step_get),
1499 EO_OP_FUNC(ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_ON_FOCUS_SET), _elm_slider_indicator_show_on_focus_set),
1500 EO_OP_FUNC(ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_ON_FOCUS_GET), _elm_slider_indicator_show_on_focus_get),
1440 EO_OP_FUNC_SENTINEL 1501 EO_OP_FUNC_SENTINEL
1441 }; 1502 };
1442 eo_class_funcs_set(klass, func_desc); 1503 eo_class_funcs_set(klass, func_desc);
@@ -1465,6 +1526,8 @@ static const Eo_Op_Description op_desc[] = {
1465 EO_OP_DESCRIPTION(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET, "Get whether a given slider widget's enlarging indicator or not."), 1526 EO_OP_DESCRIPTION(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET, "Get whether a given slider widget's enlarging indicator or not."),
1466 EO_OP_DESCRIPTION(ELM_OBJ_SLIDER_SUB_ID_STEP_SET, "Set the draggable's step size."), 1527 EO_OP_DESCRIPTION(ELM_OBJ_SLIDER_SUB_ID_STEP_SET, "Set the draggable's step size."),
1467 EO_OP_DESCRIPTION(ELM_OBJ_SLIDER_SUB_ID_STEP_GET, "Get the draggable's step size."), 1528 EO_OP_DESCRIPTION(ELM_OBJ_SLIDER_SUB_ID_STEP_GET, "Get the draggable's step size."),
1529 EO_OP_DESCRIPTION(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_ON_FOCUS_SET, "Set the visiblity of slider indicator."),
1530 EO_OP_DESCRIPTION(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_ON_FOCUS_GET, "Get the visiblity of slider indicator."),
1468 EO_OP_DESCRIPTION_SENTINEL 1531 EO_OP_DESCRIPTION_SENTINEL
1469}; 1532};
1470static const Eo_Class_Description class_desc = { 1533static const Eo_Class_Description class_desc = {
diff --git a/src/lib/elm_slider_eo.h b/src/lib/elm_slider_eo.h
index f3373d7c5..34ecc981e 100644
--- a/src/lib/elm_slider_eo.h
+++ b/src/lib/elm_slider_eo.h
@@ -29,6 +29,8 @@ enum
29 ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET, 29 ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET,
30 ELM_OBJ_SLIDER_SUB_ID_STEP_SET, 30 ELM_OBJ_SLIDER_SUB_ID_STEP_SET,
31 ELM_OBJ_SLIDER_SUB_ID_STEP_GET, 31 ELM_OBJ_SLIDER_SUB_ID_STEP_GET,
32 ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_ON_FOCUS_SET,
33 ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_ON_FOCUS_GET,
32 ELM_OBJ_SLIDER_SUB_ID_LAST 34 ELM_OBJ_SLIDER_SUB_ID_LAST
33}; 35};
34 36
@@ -266,7 +268,7 @@ enum
266 268
267/** 269/**
268 * @def elm_obj_slider_indicator_show_set 270 * @def elm_obj_slider_indicator_show_set
269 * @since 1.8 271 * @since 1.9
270 * 272 *
271 * Set whether to enlarge slider indicator (augmented knob) or not. 273 * Set whether to enlarge slider indicator (augmented knob) or not.
272 * 274 *
@@ -326,3 +328,31 @@ enum
326 * @ingroup Slider 328 * @ingroup Slider
327 */ 329 */
328#define elm_obj_slider_step_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_STEP_GET), EO_TYPECHECK(double *, ret) 330#define elm_obj_slider_step_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_STEP_GET), EO_TYPECHECK(double *, ret)
331
332/**
333 * @def elm_slider_indicator_show_on_focus_set
334 * @since 1.9
335 *
336 * show indicator of slider on focus
337 *
338 * @param[in] flag
339 *
340 * @see elm_slider_indicator_show_on_focus_set
341 *
342 * @ingroup Slider
343 */
344#define elm_obj_slider_indicator_show_on_focus_set(flag) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_ON_FOCUS_SET), EO_TYPECHECK(Eina_Bool, flag)
345
346/**
347 * @def elm_slider_indicator_show_on_focus_get
348 * @since 1.9
349 *
350 * Get whether the indicator of the slider is set or not
351 *
352 * @param[out] ret
353 *
354 * @see elm_slider_indicator_show_on_focus_get
355 *
356 * @ingroup Slider
357 */
358#define elm_obj_slider_indicator_show_on_focus_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_ON_FOCUS_GET), EO_TYPECHECK(Eina_Bool*, ret)
diff --git a/src/lib/elm_slider_legacy.h b/src/lib/elm_slider_legacy.h
index 81e55a81f..35dc17c6a 100644
--- a/src/lib/elm_slider_legacy.h
+++ b/src/lib/elm_slider_legacy.h
@@ -357,3 +357,24 @@ EAPI void elm_slider_step_set(Evas_Object *obj, double s
357 * @ingroup Slider 357 * @ingroup Slider
358 */ 358 */
359EAPI double elm_slider_step_get(const Evas_Object *obj); 359EAPI double elm_slider_step_get(const Evas_Object *obj);
360
361/**
362 * Show the indicator of slider on focus
363 *
364 * @param obj The slider object.
365 * @param flag @ EINA_TRUE sets the indicator visible
366 *
367 * @ingroup Slider
368 */
369EAPI void elm_slider_indicator_show_on_focus_set(Evas_Object *obj, Eina_Bool flag);
370
371/**
372 * Get whether the indicator of the slider is set or not
373 *
374 * @param obj The slider object.
375 * @return @c EINA_TRUE, if indicator is set
376 * @c EINA_FALSE otherwise.
377 *
378 * @ingroup Slider
379 */
380EAPI Eina_Bool elm_slider_indicator_show_on_focus_get(const Evas_Object *obj);
diff --git a/src/lib/elm_table.c b/src/lib/elm_table.c
index 7166fcc5b..af6ecb0d5 100644
--- a/src/lib/elm_table.c
+++ b/src/lib/elm_table.c
@@ -381,7 +381,7 @@ _pack(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
381 { 381 {
382 WRN("row + rowspan getting rather large (>32767)"); 382 WRN("row + rowspan getting rather large (>32767)");
383 } 383 }
384 384
385 elm_widget_sub_object_add(obj, subobj); 385 elm_widget_sub_object_add(obj, subobj);
386 evas_object_table_pack(wd->resize_obj, subobj, col, row, colspan, rowspan); 386 evas_object_table_pack(wd->resize_obj, subobj, col, row, colspan, rowspan);
387} 387}
diff --git a/src/lib/elm_theme.c b/src/lib/elm_theme.c
index 3bb3858ea..a1b487f09 100644
--- a/src/lib/elm_theme.c
+++ b/src/lib/elm_theme.c
@@ -924,7 +924,7 @@ elm_theme_system_dir_get(void)
924{ 924{
925 static char *path = NULL; 925 static char *path = NULL;
926 char buf[PATH_MAX]; 926 char buf[PATH_MAX];
927 927
928 if (path) return path; 928 if (path) return path;
929 if (!path) 929 if (!path)
930 { 930 {
@@ -939,13 +939,13 @@ elm_theme_user_dir_get(void)
939{ 939{
940 static char *path = NULL; 940 static char *path = NULL;
941 char buf[PATH_MAX]; 941 char buf[PATH_MAX];
942 942
943 if (path) return path; 943 if (path) return path;
944 if (!path) 944 if (!path)
945 { 945 {
946 char *home = getenv("HOME"); 946 char *home = getenv("HOME");
947 if (!home) home = ""; 947 if (!home) home = "";
948 948
949 snprintf(buf, sizeof(buf), "%s/"ELEMENTARY_BASE_DIR"/themes", home); 949 snprintf(buf, sizeof(buf), "%s/"ELEMENTARY_BASE_DIR"/themes", home);
950 path = strdup(buf); 950 path = strdup(buf);
951 } 951 }
diff --git a/src/lib/elm_widget_fileselector.h b/src/lib/elm_widget_fileselector.h
index cda2471db..1a8118c29 100644
--- a/src/lib/elm_widget_fileselector.h
+++ b/src/lib/elm_widget_fileselector.h
@@ -51,6 +51,8 @@ struct _Elm_Fileselector_Smart_Data
51 Eio_Monitor *monitor; 51 Eio_Monitor *monitor;
52 Eina_List *handlers; 52 Eina_List *handlers;
53 53
54 Evas_Coord_Size thumbnail_size;
55
54 Elm_Fileselector_Mode mode; 56 Elm_Fileselector_Mode mode;
55 57
56 Eina_Bool only_folder : 1; 58 Eina_Bool only_folder : 1;
diff --git a/src/lib/elm_widget_gengrid.h b/src/lib/elm_widget_gengrid.h
index 7ad6fed5e..e5ea80c77 100644
--- a/src/lib/elm_widget_gengrid.h
+++ b/src/lib/elm_widget_gengrid.h
@@ -40,6 +40,7 @@ struct _Elm_Gengrid_Smart_Data
40 Elm_Object_Item *last_selected_item; 40 Elm_Object_Item *last_selected_item;
41 Elm_Gen_Item *show_it; 41 Elm_Gen_Item *show_it;
42 Elm_Gen_Item *bring_in_it; 42 Elm_Gen_Item *bring_in_it;
43 Elm_Gengrid_Item_Scrollto_Type s_type;
43 44
44 Ecore_Job *calc_job; 45 Ecore_Job *calc_job;
45 int walking; 46 int walking;
diff --git a/src/lib/elm_widget_slider.h b/src/lib/elm_widget_slider.h
index 27c3bfc48..74e4b5fbd 100644
--- a/src/lib/elm_widget_slider.h
+++ b/src/lib/elm_widget_slider.h
@@ -43,6 +43,9 @@ struct _Elm_Slider_Smart_Data
43 Eina_Bool frozen : 1; 43 Eina_Bool frozen : 1;
44 Eina_Bool popup_hiding : 1; 44 Eina_Bool popup_hiding : 1;
45 Eina_Bool units_show : 1; 45 Eina_Bool units_show : 1;
46 Eina_Bool always_popup_show : 1; /*this flag is to set the visiblity of slider indicator
47 * if this flag is set then the indicator always show
48 */
46}; 49};
47 50
48/** 51/**
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index 15136658f..48e20bb24 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -1698,7 +1698,7 @@ _elm_ee_wlwin_get(const Ecore_Evas *ee)
1698 Ecore_Wl_Window *win = NULL; 1698 Ecore_Wl_Window *win = NULL;
1699 1699
1700 if (!ee) return NULL; 1700 if (!ee) return NULL;
1701 if ((EE_ENGINE_COMPARE(ee, ELM_WAYLAND_SHM)) || 1701 if ((EE_ENGINE_COMPARE(ee, ELM_WAYLAND_SHM)) ||
1702 (EE_ENGINE_COMPARE(ee, ELM_WAYLAND_EGL))) 1702 (EE_ENGINE_COMPARE(ee, ELM_WAYLAND_EGL)))
1703 { 1703 {
1704 if (ee) win = ecore_evas_wayland_window_get(ee); 1704 if (ee) win = ecore_evas_wayland_window_get(ee);