2 # include "elementary_config.h"
5 #include <dlfcn.h> /* dlopen,dlclose,etc */
7 #ifdef HAVE_CRT_EXTERNS_H
8 # include <crt_externs.h>
17 #include <Elementary.h>
20 #define SEMI_BROKEN_QUICKLAUNCH 1
23 # define LIBEXT ".dll"
28 static Elm_Version _version = { VMAJ, VMIN, VMIC, VREV };
29 EAPI Elm_Version *elm_version = &_version;
32 _elm_dangerous_call_check(const char *call)
37 snprintf(buf, sizeof(buf), "%i.%i.%i.%i", VMAJ, VMIN, VMIC, VREV);
38 eval = getenv("ELM_NO_FINGER_WAGGLING");
39 if ((eval) && (!strcmp(eval, buf)))
41 ERR("ELEMENTARY FINGER WAGGLE!!!!!!!!!!\n"
44 "PLEASE see the API documentation for this function. This call\n"
45 "should almost never be used. Only in very special cases.\n"
47 "To remove this warning please set the environment variable:\n"
48 " ELM_NO_FINGER_WAGGLING\n"
49 "To the value of the Elementary version + revision number. e.g.:\n"
57 static Eina_Bool _elm_signal_exit(void *data,
61 static Eina_Prefix *pfx = NULL;
62 char *_elm_appname = NULL;
63 const char *_elm_data_dir = NULL;
64 const char *_elm_lib_dir = NULL;
65 int _elm_log_dom = -1;
67 EAPI int ELM_EVENT_POLICY_CHANGED = 0;
69 static int _elm_init_count = 0;
70 static int _elm_sub_init_count = 0;
71 static int _elm_ql_init_count = 0;
72 static int _elm_policies[ELM_POLICY_LAST];
73 static Ecore_Event_Handler *_elm_exit_handler = NULL;
74 static Eina_Bool quicklaunch_on = 0;
77 _elm_signal_exit(void *data EINA_UNUSED,
78 int ev_type EINA_UNUSED,
82 return ECORE_CALLBACK_PASS_ON;
88 edje_scale_set(_elm_config->scale);
89 _elm_win_rescale(NULL, EINA_FALSE);
90 _elm_ews_wm_rescale(NULL, EINA_FALSE);
93 static Eina_Bool _emotion_inited = EINA_FALSE;
96 _elm_emotion_init(void)
98 if (_emotion_inited) return ;
101 _emotion_inited = EINA_TRUE;
105 _elm_emotion_shutdown(void)
107 if (!_emotion_inited) return ;
110 _emotion_inited = EINA_FALSE;
113 static void *app_mainfunc = NULL;
114 static const char *app_name = NULL;
115 static const char *app_desktop_entry = NULL;
116 static const char *app_domain = NULL;
117 static const char *app_checkfile = NULL;
119 static const char *app_compile_bin_dir = NULL;
120 static const char *app_compile_lib_dir = NULL;
121 static const char *app_compile_data_dir = NULL;
122 static const char *app_compile_locale_dir = NULL;
123 static const char *app_prefix_dir = NULL;
124 static const char *app_bin_dir = NULL;
125 static const char *app_lib_dir = NULL;
126 static const char *app_data_dir = NULL;
127 static const char *app_locale_dir = NULL;
129 static Eina_Prefix *app_pfx = NULL;
131 static Ecore_Event_Handler *system_handlers[2] = { NULL, NULL };
138 const char *dirs[4] = { NULL, NULL, NULL, NULL };
139 char *caps = NULL, *p1, *p2;
143 if (!app_domain) return;
145 ecore_app_args_get(&argc, &argv);
146 if (argc < 1) return;
148 dirs[0] = app_compile_bin_dir;
149 dirs[1] = app_compile_lib_dir;
150 dirs[2] = app_compile_data_dir;
151 dirs[3] = app_compile_locale_dir;
153 if (!dirs[0]) dirs[0] = "/usr/local/bin";
154 if (!dirs[1]) dirs[1] = "/usr/local/lib";
157 snprintf(buf, sizeof(buf), "/usr/local/share/%s", app_domain);
160 if (!dirs[3]) dirs[3] = dirs[2];
164 caps = alloca(eina_stringshare_strlen(app_domain) + 1);
165 for (p1 = (char *)app_domain, p2 = caps; *p1; p1++, p2++)
169 app_pfx = eina_prefix_new(argv[0], app_mainfunc, caps, app_domain,
170 app_checkfile, dirs[0], dirs[1], dirs[2], dirs[3]);
174 _prefix_shutdown(void)
176 if (app_pfx) eina_prefix_free(app_pfx);
177 ELM_SAFE_FREE(app_domain, eina_stringshare_del);
178 ELM_SAFE_FREE(app_checkfile, eina_stringshare_del);
179 ELM_SAFE_FREE(app_compile_bin_dir, eina_stringshare_del);
180 ELM_SAFE_FREE(app_compile_lib_dir, eina_stringshare_del);
181 ELM_SAFE_FREE(app_compile_data_dir, eina_stringshare_del);
182 ELM_SAFE_FREE(app_compile_locale_dir, eina_stringshare_del);
184 app_prefix_dir = NULL;
188 app_locale_dir = NULL;
195 void (*shutdown)(void);
196 Eina_Bool (*app_connect)(const char *appname);
200 #define _CLOUSEAU_LOAD_SYMBOL(cls_struct, sym) \
203 (cls_struct).sym = eina_module_symbol_get((cls_struct).handle, "clouseau_" #sym); \
204 if (!(cls_struct).sym) \
206 WRN("Failed loading symbol '%s' from the clouseau library.", "clouseau_" #sym); \
207 eina_module_free((cls_struct).handle); \
208 (cls_struct).handle = NULL; \
215 _elm_clouseau_unload()
217 if (!_clouseau_info.is_init)
220 if (_clouseau_info.shutdown)
222 _clouseau_info.shutdown();
225 if (_clouseau_info.handle)
227 eina_module_free(_clouseau_info.handle);
228 _clouseau_info.handle = NULL;
231 _clouseau_info.is_init = EINA_FALSE;
235 _elm_clouseau_reload()
237 if (!_elm_config->clouseau_enable)
239 _elm_clouseau_unload();
243 if (_clouseau_info.is_init)
246 _clouseau_info.handle = eina_module_new(
247 PACKAGE_LIB_DIR "/libclouseau" LIBEXT);
248 if (!eina_module_load(_clouseau_info.handle))
250 WRN("Failed loading the clouseau library.");
251 eina_module_free(_clouseau_info.handle);
252 _clouseau_info.handle = NULL;
256 _CLOUSEAU_LOAD_SYMBOL(_clouseau_info, init);
257 _CLOUSEAU_LOAD_SYMBOL(_clouseau_info, shutdown);
258 _CLOUSEAU_LOAD_SYMBOL(_clouseau_info, app_connect);
260 _clouseau_info.init();
261 if(!_clouseau_info.app_connect(elm_app_name_get()))
263 ERR("Failed connecting to the clouseau server.");
266 _clouseau_info.is_init = EINA_TRUE;
271 Eina_Bool _sys_memory_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
273 Ecore_Memory_State state = ecore_memory_state_get();
275 if (state != ECORE_MEMORY_STATE_LOW)
276 return ECORE_CALLBACK_PASS_ON;
278 elm_cache_all_flush();
279 return ECORE_CALLBACK_PASS_ON;
282 Eina_Bool _sys_lang_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
286 lang = getenv("LANG");
288 lang = getenv("LC_MESSAGES");
290 lang = getenv("LC_ALL");
293 elm_language_set(lang);
295 ERR("Language not set in environment");
297 return ECORE_CALLBACK_PASS_ON;
305 if (_elm_init_count > 1) return _elm_init_count;
306 elm_quicklaunch_init(argc, argv);
307 elm_quicklaunch_sub_init(argc, argv);
310 system_handlers[0] = ecore_event_handler_add(ECORE_EVENT_MEMORY_STATE, _sys_memory_changed, NULL);
311 system_handlers[1] = ecore_event_handler_add(ECORE_EVENT_LOCALE_CHANGED, _sys_lang_changed, NULL);
313 _elm_atspi_bridge_init();
315 return _elm_init_count;
321 if (_elm_init_count <= 0)
323 ERR("Init count not greater than 0 in shutdown.");
327 if (_elm_init_count > 0) return _elm_init_count;
329 ecore_event_handler_del(system_handlers[0]);
330 ecore_event_handler_del(system_handlers[1]);
333 while (_elm_win_deferred_free) ecore_main_loop_iterate();
335 _elm_clouseau_unload();
336 _elm_atspi_bridge_shutdown();
338 // _prefix_shutdown();
339 ELM_SAFE_FREE(app_name, eina_stringshare_del);
340 ELM_SAFE_FREE(app_desktop_entry, eina_stringshare_del);
342 elm_quicklaunch_sub_shutdown();
343 elm_quicklaunch_shutdown();
344 return _elm_init_count;
348 elm_app_info_set(void *mainfunc, const char *dom, const char *checkfile)
350 app_mainfunc = mainfunc;
351 eina_stringshare_replace(&app_domain, dom);
352 eina_stringshare_replace(&app_checkfile, checkfile);
356 elm_app_name_set(const char *name)
358 eina_stringshare_replace(&app_name, name);
362 elm_app_desktop_entry_set(const char *path)
364 eina_stringshare_replace(&app_desktop_entry, path);
368 elm_app_compile_bin_dir_set(const char *dir)
370 eina_stringshare_replace(&app_compile_bin_dir, dir);
374 elm_app_compile_lib_dir_set(const char *dir)
376 eina_stringshare_replace(&app_compile_lib_dir, dir);
380 elm_app_compile_data_dir_set(const char *dir)
382 eina_stringshare_replace(&app_compile_data_dir, dir);
386 elm_app_compile_locale_set(const char *dir)
388 eina_stringshare_replace(&app_compile_locale_dir, dir);
392 elm_app_name_get(void)
394 if (app_name) return app_name;
400 elm_app_desktop_entry_get(void)
402 if (app_desktop_entry) return app_desktop_entry;
408 elm_app_prefix_dir_get(void)
410 if (app_prefix_dir) return app_prefix_dir;
412 if (!app_pfx) return "";
413 app_prefix_dir = eina_prefix_get(app_pfx);
414 return app_prefix_dir;
418 elm_app_bin_dir_get(void)
420 if (app_bin_dir) return app_bin_dir;
422 if (!app_pfx) return "";
423 app_bin_dir = eina_prefix_bin_get(app_pfx);
428 elm_app_lib_dir_get(void)
430 if (app_lib_dir) return app_lib_dir;
432 if (!app_pfx) return "";
433 app_lib_dir = eina_prefix_lib_get(app_pfx);
438 elm_app_data_dir_get(void)
440 if (app_data_dir) return app_data_dir;
442 if (!app_pfx) return "";
443 app_data_dir = eina_prefix_data_get(app_pfx);
448 elm_app_locale_dir_get(void)
450 if (app_locale_dir) return app_locale_dir;
452 if (!app_pfx) return "";
453 app_locale_dir = eina_prefix_locale_get(app_pfx);
454 return app_locale_dir;
457 static Eina_Bool _elm_need_e_dbus = EINA_FALSE;
458 static void *e_dbus_handle = NULL;
461 elm_need_e_dbus(void)
463 int (*init_func)(void) = NULL;
465 if (_elm_need_e_dbus) return EINA_TRUE;
466 /* We use RTLD_NOLOAD when available, so we are sure to use the 'libeldbus' that was linked to the binary */
468 # define RTLD_NOLOAD RTLD_GLOBAL
470 if (!e_dbus_handle) e_dbus_handle = dlopen("libeldbus.so", RTLD_LAZY | RTLD_NOLOAD);
471 if (!e_dbus_handle) return EINA_FALSE;
472 init_func = dlsym(e_dbus_handle, "e_dbus_init");
473 if (!init_func) return EINA_FALSE;
474 _elm_need_e_dbus = EINA_TRUE;
480 _elm_unneed_e_dbus(void)
482 int (*shutdown_func)(void) = NULL;
484 if (!_elm_need_e_dbus) return;
485 shutdown_func = dlsym(e_dbus_handle, "e_dbus_shutdown");
486 if (!shutdown_func) return;
487 _elm_need_e_dbus = EINA_FALSE;
490 dlclose(e_dbus_handle);
491 e_dbus_handle = NULL;
494 static Eina_Bool _elm_need_eldbus = EINA_FALSE;
496 elm_need_eldbus(void)
498 if (_elm_need_eldbus) return EINA_TRUE;
499 _elm_need_eldbus = EINA_TRUE;
505 _elm_unneed_eldbus(void)
507 if (!_elm_need_eldbus) return;
508 _elm_need_eldbus = EINA_FALSE;
513 static Eina_Bool _elm_need_elocation = EINA_FALSE;
516 elm_need_elocation(void)
519 if (_elm_need_elocation) return EINA_TRUE;
520 _elm_need_elocation = EINA_TRUE;
529 _elm_unneed_elocation(void)
532 if (!_elm_need_elocation) return;
533 _elm_need_elocation = EINA_FALSE;
538 static Eina_Bool _elm_need_efreet = EINA_FALSE;
541 elm_need_efreet(void)
543 if (_elm_need_efreet) return EINA_TRUE;
544 _elm_need_efreet = EINA_TRUE;
552 list = efreet_icon_extra_list_get();
555 e_user_dir_concat_static(buf, "icons");
556 *list = eina_list_prepend(*list, (void *)eina_stringshare_add(buf));
557 e_prefix_data_concat_static(buf, "data/icons");
558 *list = eina_list_prepend(*list, (void *)eina_stringshare_add(buf));
566 _elm_unneed_efreet(void)
568 if (!_elm_need_efreet) return;
569 _elm_need_efreet = EINA_FALSE;
570 efreet_trash_shutdown();
571 efreet_mime_shutdown();
576 elm_quicklaunch_mode_set(Eina_Bool ql_on)
578 quicklaunch_on = ql_on;
582 elm_quicklaunch_mode_get(void)
584 return quicklaunch_on;
588 elm_quicklaunch_init(int argc,
591 _elm_ql_init_count++;
592 if (_elm_ql_init_count > 1) return _elm_ql_init_count;
594 _elm_log_dom = eina_log_domain_register("elementary", EINA_COLOR_LIGHTBLUE);
597 EINA_LOG_ERR("could not register elementary log domain.");
598 _elm_log_dom = EINA_LOG_DOMAIN_GLOBAL;
604 #ifdef HAVE_ELEMENTARY_EMAP
607 ecore_app_args_set(argc, (const char **)argv);
609 memset(_elm_policies, 0, sizeof(_elm_policies));
610 if (!ELM_EVENT_POLICY_CHANGED)
611 ELM_EVENT_POLICY_CHANGED = ecore_event_type_new();
615 _elm_exit_handler = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, _elm_signal_exit, NULL);
619 _elm_appname = strdup(ecore_file_file_get(argv[0]));
620 elm_app_name_set(_elm_appname);
623 pfx = eina_prefix_new(argv ? argv[0] : NULL, elm_quicklaunch_init,
624 "ELM", "elementary", "config/profile.cfg",
625 PACKAGE_LIB_DIR, /* don't have a bin dir currently */
631 _elm_data_dir = eina_stringshare_add(eina_prefix_data_get(pfx));
632 _elm_lib_dir = eina_stringshare_add(eina_prefix_lib_get(pfx));
634 if (!_elm_data_dir) _elm_data_dir = eina_stringshare_add("/");
635 if (!_elm_lib_dir) _elm_lib_dir = eina_stringshare_add("/");
637 eina_log_timing(_elm_log_dom,
639 EINA_LOG_STATE_INIT);
643 return _elm_ql_init_count;
647 elm_quicklaunch_sub_init(int argc,
650 _elm_sub_init_count++;
651 if (_elm_sub_init_count > 1) return _elm_sub_init_count;
655 #ifdef SEMI_BROKEN_QUICKLAUNCH
656 return _elm_sub_init_count;
662 ecore_app_args_set(argc, (const char **)argv);
667 _elm_config_sub_init();
668 ecore_evas_init(); // FIXME: check errors
671 ecore_con_url_init();
675 return _elm_sub_init_count;
679 elm_quicklaunch_sub_shutdown(void)
681 _elm_sub_init_count--;
682 if (_elm_sub_init_count > 0) return _elm_sub_init_count;
685 #ifdef SEMI_BROKEN_QUICKLAUNCH
686 return _elm_sub_init_count;
692 _elm_module_shutdown();
693 _elm_prefs_shutdown();
694 _elm_ews_wm_shutdown();
695 ecore_con_url_shutdown();
696 ecore_con_shutdown();
697 ecore_imf_shutdown();
698 ecore_evas_shutdown();
699 _elm_config_sub_shutdown();
700 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
701 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
702 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
703 ENGINE_COMPARE(ELM_XRENDER_X11) ||
704 ENGINE_COMPARE(ELM_OPENGL_X11) ||
705 ENGINE_COMPARE(ELM_SOFTWARE_SDL) ||
706 ENGINE_COMPARE(ELM_SOFTWARE_16_SDL) ||
707 ENGINE_COMPARE(ELM_OPENGL_SDL) ||
708 ENGINE_COMPARE(ELM_OPENGL_COCOA) ||
709 ENGINE_COMPARE(ELM_SOFTWARE_WIN32) ||
710 ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE) ||
711 ENGINE_COMPARE(ELM_EWS))
712 #undef ENGINE_COMPARE
713 evas_cserve_disconnect();
717 return _elm_sub_init_count;
721 elm_quicklaunch_shutdown(void)
723 _elm_ql_init_count--;
724 if (_elm_ql_init_count > 0) return _elm_ql_init_count;
726 eina_log_timing(_elm_log_dom,
728 EINA_LOG_STATE_SHUTDOWN);
730 if (pfx) eina_prefix_free(pfx);
732 ELM_SAFE_FREE(_elm_data_dir, eina_stringshare_del);
733 ELM_SAFE_FREE(_elm_lib_dir, eina_stringshare_del);
734 ELM_SAFE_FREE(_elm_appname, free);
736 _elm_config_shutdown();
738 ELM_SAFE_FREE(_elm_exit_handler, ecore_event_handler_del);
740 _elm_theme_shutdown();
741 _elm_unneed_systray();
742 _elm_unneed_sys_notify();
743 _elm_unneed_efreet();
744 _elm_unneed_e_dbus();
745 _elm_unneed_eldbus();
746 _elm_unneed_elocation();
747 _elm_unneed_ethumb();
749 ecore_file_shutdown();
751 #ifdef HAVE_ELEMENTARY_EMAP
754 _elm_emotion_shutdown();
759 if ((_elm_log_dom > -1) && (_elm_log_dom != EINA_LOG_DOMAIN_GLOBAL))
761 eina_log_domain_unregister(_elm_log_dom);
766 return _elm_ql_init_count;
770 elm_quicklaunch_seed(void)
772 #ifndef SEMI_BROKEN_QUICKLAUNCH
775 Evas_Object *win, *bg, *bt;
777 win = elm_win_add(NULL, "seed", ELM_WIN_BASIC);
778 bg = elm_bg_add(win);
779 elm_win_resize_object_add(win, bg);
780 evas_object_show(bg);
781 bt = elm_button_add(win);
782 elm_object_text_set(bt, " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~-_=+\\|]}[{;:'\",<.>/?");
783 elm_win_resize_object_add(win, bt);
784 ecore_main_loop_iterate();
785 evas_object_del(win);
786 ecore_main_loop_iterate();
787 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
788 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
789 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
790 ENGINE_COMPARE(ELM_XRENDER_X11) ||
791 ENGINE_COMPARE(ELM_OPENGL_X11))
792 #undef ENGINE_COMPARE
794 # ifdef HAVE_ELEMENTARY_X
798 ecore_main_loop_iterate();
804 static void *qr_handle = NULL;
806 static int (*qr_main)(int argc,
810 elm_quicklaunch_prepare(int argc,
815 char *exe, *exe2, *p;
818 if (argc <= 0 || argv == NULL) return EINA_FALSE;
820 exe = elm_quicklaunch_exe_path_get(argv[0], cwd);
823 ERR("requested quicklaunch binary '%s' does not exist\n", argv[0]);
827 exe2 = malloc(strlen(exe) + 1 + 7 + strlen(LIBEXT));
829 p = strrchr(exe2, '/');
832 exename = alloca(strlen(p) + 1);
835 strcat(p, "../lib/");
838 if (access(exe2, R_OK | X_OK) != 0)
839 ELM_SAFE_FREE(exe2, free);
841 /* Try linking to executable first. Works with PIE files. */
842 qr_handle = dlopen(exe, RTLD_NOW | RTLD_GLOBAL);
845 INF("dlopen('%s') = %p", exe, qr_handle);
846 qr_main = dlsym(qr_handle, "elm_main");
849 INF("dlsym(%p, 'elm_main') = %p", qr_handle, qr_main);
860 WRN("not quicklauncher capable: '%s'", exe);
866 /* Open companion .so file.
867 * Support for legacy quicklaunch apps with separate library.
869 qr_handle = dlopen(exe2, RTLD_NOW | RTLD_GLOBAL);
872 fprintf(stderr, "dlerr: %s\n", dlerror());
873 WRN("dlopen('%s') failed: %s", exe2, dlerror());
877 INF("dlopen('%s') = %p", exe2, qr_handle);
878 qr_main = dlsym(qr_handle, "elm_main");
879 INF("dlsym(%p, 'elm_main') = %p", qr_handle, qr_main);
882 WRN("not quicklauncher capable: no elm_main in '%s'", exe2);
898 elm_quicklaunch_fork(int argc,
901 void (postfork_func) (void *data),
914 if (child > 0) return EINA_TRUE;
917 perror("could not fork");
921 if (chdir(cwd) != 0) perror("could not chdir");
922 args = alloca((argc + 1) * sizeof(char *));
923 for (i = 0; i < argc; i++) args[i] = argv[i];
925 WRN("%s not quicklaunch capable, fallback...", argv[0]);
926 execvp(argv[0], args);
927 ERR("failed to execute '%s': %s", argv[0], strerror(errno));
931 if (child > 0) return EINA_TRUE;
934 perror("could not fork");
937 if (postfork_func) postfork_func(postfork_data);
940 eina_main_loop_define();
944 ELM_SAFE_FREE(_elm_appname, free);
945 if ((argv) && (argv[0]))
946 _elm_appname = strdup(ecore_file_file_get(argv[0]));
948 #ifdef SEMI_BROKEN_QUICKLAUNCH
949 ecore_app_args_set(argc, (const char **)argv);
953 _elm_config_sub_init();
954 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
955 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
956 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
957 ENGINE_COMPARE(ELM_XRENDER_X11) ||
958 ENGINE_COMPARE(ELM_OPENGL_X11))
959 #undef ENGINE_COMPARE
961 # ifdef HAVE_ELEMENTARY_X
965 ecore_evas_init(); // FIXME: check errors
971 if (chdir(cwd) != 0) perror("could not chdir");
972 ecore_app_args_set(argc, (const char **)argv);
973 ret = qr_main(argc, argv);
987 elm_quicklaunch_cleanup(void)
1000 elm_quicklaunch_fallback(int argc,
1005 elm_quicklaunch_init(argc, argv);
1006 elm_quicklaunch_sub_init(argc, argv);
1007 elm_quicklaunch_prepare(argc, argv, getcwd(cwd, sizeof(cwd)));
1008 ret = qr_main(argc, argv);
1014 elm_quicklaunch_exe_path_get(const char *exe, const char *cwd)
1016 static char *path = NULL;
1017 static Eina_List *pathlist = NULL;
1018 const char *pathitr;
1021 if (exe[0] == '/') return strdup(exe);
1023 pathlist = eina_list_append(pathlist, eina_stringshare_add(cwd));
1026 if ((exe[0] == '.') && (exe[1] == '/')) return strdup(exe);
1027 if ((exe[0] == '.') && (exe[1] == '.') && (exe[2] == '/')) return strdup(exe);
1033 path = getenv("PATH");
1034 buf2 = alloca(strlen(path) + 1);
1039 if ((*p == ':') || (!*p))
1044 strncpy(buf2, pp, len);
1046 pathlist = eina_list_append(pathlist, eina_stringshare_add(buf2));
1058 EINA_LIST_FOREACH(pathlist, l, pathitr)
1060 snprintf(buf, sizeof(buf), "%s/%s", pathitr, exe);
1061 if (!access(buf, R_OK | X_OK)) return strdup(buf);
1069 ecore_main_loop_begin();
1075 ecore_main_loop_quit();
1077 if (elm_policy_get(ELM_POLICY_EXIT) == ELM_POLICY_EXIT_WINDOWS_DEL)
1079 Eina_List *l, *l_next;
1082 EINA_LIST_FOREACH_SAFE(_elm_win_list, l, l_next, win)
1083 evas_object_del(win);
1087 //FIXME: Use Elm_Policy Parameter when 2.0 is released.
1089 elm_policy_set(unsigned int policy,
1092 Elm_Event_Policy_Changed *ev;
1094 if (policy >= ELM_POLICY_LAST)
1097 if (value == _elm_policies[policy])
1100 /* TODO: validate policy? */
1102 ev = malloc(sizeof(*ev));
1103 ev->policy = policy;
1104 ev->new_value = value;
1105 ev->old_value = _elm_policies[policy];
1107 _elm_policies[policy] = value;
1109 ecore_event_add(ELM_EVENT_POLICY_CHANGED, ev, NULL, NULL);
1114 //FIXME: Use Elm_Policy Parameter when 2.0 is released.
1116 elm_policy_get(unsigned int policy)
1118 if (policy >= ELM_POLICY_LAST)
1120 return _elm_policies[policy];
1124 elm_language_set(const char *lang)
1126 setlocale(LC_ALL, lang);
1127 _elm_win_translate();
1131 elm_object_mirrored_get(const Evas_Object *obj)
1133 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1134 return elm_widget_mirrored_get(obj);
1138 elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored)
1140 EINA_SAFETY_ON_NULL_RETURN(obj);
1141 elm_widget_mirrored_set(obj, mirrored);
1145 elm_object_mirrored_automatic_get(const Evas_Object *obj)
1147 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1148 return elm_widget_mirrored_automatic_get(obj);
1152 elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic)
1154 EINA_SAFETY_ON_NULL_RETURN(obj);
1155 elm_widget_mirrored_automatic_set(obj, automatic);
1163 elm_object_scale_set(Evas_Object *obj,
1166 EINA_SAFETY_ON_NULL_RETURN(obj);
1167 elm_widget_scale_set(obj, scale);
1171 elm_object_scale_get(const Evas_Object *obj)
1173 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0.0);
1174 return elm_widget_scale_get(obj);
1178 elm_object_part_text_set(Evas_Object *obj, const char *part, const char *label)
1180 EINA_SAFETY_ON_NULL_RETURN(obj);
1181 elm_widget_part_text_set(obj, part, label);
1185 elm_object_part_text_get(const Evas_Object *obj, const char *part)
1187 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1188 return elm_widget_part_text_get(obj, part);
1192 elm_object_domain_translatable_part_text_set(Evas_Object *obj, const char *part, const char *domain, const char *text)
1194 EINA_SAFETY_ON_NULL_RETURN(obj);
1195 elm_widget_domain_translatable_part_text_set(obj, part, domain, text);
1199 elm_object_translatable_part_text_get(const Evas_Object *obj, const char *part)
1201 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1202 return elm_widget_translatable_part_text_get(obj, part);
1206 elm_object_domain_part_text_translatable_set(Evas_Object *obj, const char *part, const char *domain, Eina_Bool translatable)
1208 EINA_SAFETY_ON_NULL_RETURN(obj);
1209 elm_widget_domain_part_text_translatable_set(obj, part, domain, translatable);
1212 EINA_DEPRECATED EAPI void
1213 elm_object_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text)
1215 elm_object_domain_translatable_part_text_set(obj, part, domain, text);
1218 EINA_DEPRECATED EAPI const char *
1219 elm_object_translatable_text_part_get(const Evas_Object *obj, const char *part)
1221 return elm_object_translatable_part_text_get(obj, part);
1225 elm_object_part_content_set(Evas_Object *obj, const char *part, Evas_Object *content)
1227 EINA_SAFETY_ON_NULL_RETURN(obj);
1228 elm_widget_content_part_set(obj, part, content);
1232 elm_object_part_content_get(const Evas_Object *obj, const char *part)
1234 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1235 return elm_widget_content_part_get(obj, part);
1239 elm_object_part_content_unset(Evas_Object *obj, const char *part)
1241 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1242 return elm_widget_content_part_unset(obj, part);
1246 elm_object_style_set(Evas_Object *obj,
1249 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1250 return elm_widget_style_set(obj, style);
1254 elm_object_focus_highlight_style_set(Evas_Object *obj,
1257 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1258 return elm_widget_focus_highlight_style_set(obj, style);
1262 elm_object_focus_highlight_style_get(const Evas_Object *obj)
1264 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1265 return elm_widget_focus_highlight_style_get(obj);
1269 elm_object_style_get(const Evas_Object *obj)
1271 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1272 return elm_widget_style_get(obj);
1276 elm_object_disabled_set(Evas_Object *obj,
1279 EINA_SAFETY_ON_NULL_RETURN(obj);
1280 elm_widget_disabled_set(obj, disabled);
1284 elm_object_disabled_get(const Evas_Object *obj)
1286 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1287 return elm_widget_disabled_get(obj);
1291 elm_cache_all_flush(void)
1296 edje_file_cache_flush();
1297 edje_collection_cache_flush();
1299 EINA_LIST_FOREACH(_elm_win_list, l, obj)
1301 Evas *e = evas_object_evas_get(obj);
1302 evas_image_cache_flush(e);
1303 evas_font_cache_flush(e);
1304 evas_render_dump(e);
1309 elm_object_focus_get(const Evas_Object *obj)
1311 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1312 return elm_widget_focus_get(obj);
1316 elm_object_focus_set(Evas_Object *obj,
1319 EINA_SAFETY_ON_NULL_RETURN(obj);
1321 if (elm_widget_is(obj))
1325 if (focus == elm_widget_focus_get(obj)) return;
1327 // ugly, but, special case for inlined windows
1328 type = evas_object_type_get(obj);
1329 if ((type) && (!strcmp(type, "elm_win")))
1331 Evas_Object *inlined = elm_win_inlined_image_object_get(obj);
1335 evas_object_focus_set(inlined, focus);
1340 elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
1342 elm_widget_focused_object_clear(obj);
1346 evas_object_focus_set(obj, focus);
1351 elm_object_focus_allow_set(Evas_Object *obj,
1354 EINA_SAFETY_ON_NULL_RETURN(obj);
1355 elm_widget_can_focus_set(obj, enable);
1356 /*FIXME: According to the elm_object_focus_allow_get(), child_can_focus field
1357 of the parent should be updated. Otherwise, the checking of it's child focus allow states should not be in elm_object_focus_allow_get() */
1361 elm_object_focus_allow_get(const Evas_Object *obj)
1363 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1364 return (elm_widget_can_focus_get(obj)) || (elm_widget_child_can_focus_get(obj));
1368 elm_object_focus_custom_chain_set(Evas_Object *obj,
1371 EINA_SAFETY_ON_NULL_RETURN(obj);
1372 elm_widget_focus_custom_chain_set(obj, objs);
1376 elm_object_focus_custom_chain_unset(Evas_Object *obj)
1378 EINA_SAFETY_ON_NULL_RETURN(obj);
1379 elm_widget_focus_custom_chain_unset(obj);
1382 EAPI const Eina_List *
1383 elm_object_focus_custom_chain_get(const Evas_Object *obj)
1385 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1386 return elm_widget_focus_custom_chain_get(obj);
1390 elm_object_focus_custom_chain_append(Evas_Object *obj,
1392 Evas_Object *relative_child)
1394 EINA_SAFETY_ON_NULL_RETURN(obj);
1395 elm_widget_focus_custom_chain_append(obj, child, relative_child);
1399 elm_object_focus_custom_chain_prepend(Evas_Object *obj,
1401 Evas_Object *relative_child)
1403 EINA_SAFETY_ON_NULL_RETURN(obj);
1404 elm_widget_focus_custom_chain_prepend(obj, child, relative_child);
1407 EINA_DEPRECATED EAPI void
1408 elm_object_focus_cycle(Evas_Object *obj,
1409 Elm_Focus_Direction dir)
1411 elm_object_focus_next(obj, dir);
1415 elm_object_focus_next(Evas_Object *obj,
1416 Elm_Focus_Direction dir)
1418 EINA_SAFETY_ON_NULL_RETURN(obj);
1419 elm_widget_focus_cycle(obj, dir);
1423 elm_object_focus_next_object_get(const Evas_Object *obj,
1424 Elm_Focus_Direction dir)
1426 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1427 return elm_widget_focus_next_object_get(obj, dir);
1431 elm_object_focus_next_object_set(Evas_Object *obj,
1433 Elm_Focus_Direction dir)
1435 EINA_SAFETY_ON_NULL_RETURN(obj);
1436 elm_widget_focus_next_object_set(obj, next, dir);
1440 elm_object_focused_object_get(const Evas_Object *obj)
1442 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1443 return elm_widget_focused_object_get(obj);
1447 elm_object_tree_focus_allow_set(Evas_Object *obj,
1448 Eina_Bool tree_focusable)
1450 EINA_SAFETY_ON_NULL_RETURN(obj);
1451 elm_widget_tree_unfocusable_set(obj, !tree_focusable);
1455 elm_object_tree_focus_allow_get(const Evas_Object *obj)
1457 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1458 return !elm_widget_tree_unfocusable_get(obj);
1462 elm_object_scroll_hold_push(Evas_Object *obj)
1464 EINA_SAFETY_ON_NULL_RETURN(obj);
1465 elm_widget_scroll_hold_push(obj);
1469 elm_object_scroll_hold_pop(Evas_Object *obj)
1471 EINA_SAFETY_ON_NULL_RETURN(obj);
1472 elm_widget_scroll_hold_pop(obj);
1476 elm_object_scroll_hold_get(const Evas_Object *obj)
1478 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0);
1479 return elm_widget_scroll_hold_get(obj);
1483 elm_object_scroll_freeze_push(Evas_Object *obj)
1485 EINA_SAFETY_ON_NULL_RETURN(obj);
1486 elm_widget_scroll_freeze_push(obj);
1490 elm_object_scroll_freeze_pop(Evas_Object *obj)
1492 EINA_SAFETY_ON_NULL_RETURN(obj);
1493 elm_widget_scroll_freeze_pop(obj);
1497 elm_object_scroll_freeze_get(const Evas_Object *obj)
1499 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0);
1500 return elm_widget_scroll_freeze_get(obj);
1504 elm_object_scroll_lock_x_set(Evas_Object *obj,
1507 EINA_SAFETY_ON_NULL_RETURN(obj);
1508 elm_widget_drag_lock_x_set(obj, lock);
1512 elm_object_scroll_lock_y_set(Evas_Object *obj,
1515 EINA_SAFETY_ON_NULL_RETURN(obj);
1516 elm_widget_drag_lock_y_set(obj, lock);
1520 elm_object_scroll_lock_x_get(const Evas_Object *obj)
1522 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1523 return elm_widget_drag_lock_x_get(obj);
1527 elm_object_scroll_lock_y_get(const Evas_Object *obj)
1529 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1530 return elm_widget_drag_lock_y_get(obj);
1534 elm_object_scroll_item_loop_enabled_set(Evas_Object *obj,
1537 EINA_SAFETY_ON_NULL_RETURN(obj);
1538 elm_widget_item_loop_enabled_set(obj, enable);
1542 elm_object_scroll_item_loop_enabled_get(const Evas_Object *obj)
1544 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1545 return elm_widget_item_loop_enabled_get(obj);
1549 elm_object_widget_check(const Evas_Object *obj)
1551 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1552 return elm_widget_is(obj);
1556 elm_object_parent_widget_get(const Evas_Object *obj)
1558 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1559 return elm_widget_parent_widget_get(obj);
1563 elm_object_top_widget_get(const Evas_Object *obj)
1565 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1566 return elm_widget_top_get(obj);
1570 elm_object_widget_type_get(const Evas_Object *obj)
1572 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1573 return elm_widget_type_get(obj);
1577 elm_object_signal_emit(Evas_Object *obj,
1578 const char *emission,
1581 EINA_SAFETY_ON_NULL_RETURN(obj);
1582 elm_widget_signal_emit(obj, emission, source);
1586 elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data)
1588 EINA_SAFETY_ON_NULL_RETURN(obj);
1589 EINA_SAFETY_ON_NULL_RETURN(func);
1590 elm_widget_signal_callback_add(obj, emission, source, func, data);
1594 elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func)
1596 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1597 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
1598 return elm_widget_signal_callback_del(obj, emission, source, func);
1602 elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data)
1604 EINA_SAFETY_ON_NULL_RETURN(obj);
1605 EINA_SAFETY_ON_NULL_RETURN(func);
1606 elm_widget_event_callback_add(obj, func, data);
1610 elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data)
1612 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1613 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
1614 return elm_widget_event_callback_del(obj, func, data);
1618 elm_object_tree_dump(const Evas_Object *top)
1621 elm_widget_tree_dump(top);
1629 elm_object_tree_dot_dump(const Evas_Object *top,
1633 FILE *f = fopen(file, "wb");
1634 elm_widget_tree_dot_dump(top, f);
1644 elm_coords_finger_size_adjust(int times_w,
1649 if ((w) && (*w < (elm_config_finger_size_get() * times_w)))
1650 *w = elm_config_finger_size_get() * times_w;
1651 if ((h) && (*h < (elm_config_finger_size_get() * times_h)))
1652 *h = elm_config_finger_size_get() * times_h;
1656 elm_object_item_widget_get(const Elm_Object_Item *it)
1658 return elm_widget_item_widget_get(it);
1662 elm_object_item_part_content_set(Elm_Object_Item *it,
1664 Evas_Object *content)
1666 _elm_widget_item_part_content_set((Elm_Widget_Item *)it, part, content);
1670 elm_object_item_part_content_get(const Elm_Object_Item *it,
1673 return _elm_widget_item_part_content_get((Elm_Widget_Item *)it, part);
1677 elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part)
1679 return _elm_widget_item_part_content_unset((Elm_Widget_Item *)it, part);
1683 elm_object_item_part_text_set(Elm_Object_Item *it,
1687 _elm_widget_item_part_text_set((Elm_Widget_Item *)it, part, label);
1691 elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part)
1693 return _elm_widget_item_part_text_get((Elm_Widget_Item *)it, part);
1697 elm_object_item_domain_translatable_part_text_set(Elm_Object_Item *it, const char *part, const char *domain, const char *text)
1699 _elm_widget_item_domain_translatable_part_text_set((Elm_Widget_Item *)it, part, domain, text);
1703 elm_object_item_translatable_part_text_get(const Elm_Object_Item *it, const char *part)
1705 return _elm_widget_item_translatable_part_text_get((Elm_Widget_Item *)it, part);
1709 elm_object_item_domain_part_text_translatable_set(Elm_Object_Item *it, const char *part, const char *domain, Eina_Bool translatable)
1711 _elm_widget_item_domain_part_text_translatable_set((Elm_Widget_Item *)it, part, domain, translatable);
1715 elm_object_access_info_set(Evas_Object *obj, const char *txt)
1717 elm_widget_access_info_set(obj, txt);
1721 elm_object_name_find(const Evas_Object *obj, const char *name, int recurse)
1723 return elm_widget_name_find(obj, name, recurse);
1727 elm_object_orientation_mode_disabled_set(Evas_Object *obj, Eina_Bool disabled)
1729 elm_widget_orientation_mode_disabled_set(obj, disabled);
1733 elm_object_orientation_mode_disabled_get(const Evas_Object *obj)
1735 return elm_widget_orientation_mode_disabled_get(obj);
1738 EAPI Elm_Object_Item *
1739 elm_object_focused_item_get(const Evas_Object *obj)
1741 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1742 return elm_widget_focused_item_get(obj);
1746 elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
1748 _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt);
1752 elm_object_item_access_register(Elm_Object_Item *item)
1754 Elm_Widget_Item *it;
1756 it = (Elm_Widget_Item *)item;
1758 _elm_access_widget_item_register(it);
1760 if (it) return it->access_obj;
1765 elm_object_item_access_unregister(Elm_Object_Item *item)
1767 _elm_access_widget_item_unregister((Elm_Widget_Item *)item);
1771 elm_object_item_access_object_get(const Elm_Object_Item *item)
1773 if (!item) return NULL;
1775 return ((Elm_Widget_Item *)item)->access_obj;
1779 elm_object_item_access_order_set(Elm_Object_Item *item, Eina_List *objs)
1781 _elm_access_widget_item_access_order_set((Elm_Widget_Item *)item, objs);
1784 EAPI const Eina_List *
1785 elm_object_item_access_order_get(const Elm_Object_Item *item)
1787 return _elm_access_widget_item_access_order_get((Elm_Widget_Item *)item);
1791 elm_object_item_access_order_unset(Elm_Object_Item *item)
1793 _elm_access_widget_item_access_order_unset((Elm_Widget_Item *)item);
1797 elm_object_item_data_get(const Elm_Object_Item *it)
1799 return elm_widget_item_data_get(it);
1803 elm_object_item_data_set(Elm_Object_Item *it, void *data)
1805 elm_widget_item_data_set(it, data);
1809 elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source)
1811 _elm_widget_item_signal_emit((Elm_Widget_Item *)it, emission, source);
1815 elm_object_item_signal_callback_add(Elm_Object_Item *it, const char *emission, const char *source, Elm_Object_Item_Signal_Cb func, void *data)
1817 _elm_widget_item_signal_callback_add((Elm_Widget_Item *)it, emission, source, (Elm_Widget_Item_Signal_Cb) func, data);
1821 elm_object_item_signal_callback_del(Elm_Object_Item *it, const char *emission, const char *source, Elm_Object_Item_Signal_Cb func)
1823 return _elm_widget_item_signal_callback_del((Elm_Widget_Item *)it, emission, source, (Elm_Widget_Item_Signal_Cb) func);
1827 elm_object_item_style_set(Elm_Object_Item *it, const char *style)
1829 elm_widget_item_style_set(it, style);
1833 elm_object_item_style_get(Elm_Object_Item *it)
1835 return elm_widget_item_style_get(it);
1838 EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
1840 _elm_widget_item_disabled_set((Elm_Widget_Item *)it, disabled);
1843 EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it)
1845 return _elm_widget_item_disabled_get((Elm_Widget_Item *)it);
1848 EAPI void elm_object_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb del_cb)
1850 _elm_widget_item_del_cb_set((Elm_Widget_Item *)it, del_cb);
1853 EAPI void elm_object_item_del(Elm_Object_Item *it)
1856 _elm_widget_item_del((Elm_Widget_Item *)it);
1860 elm_object_item_tooltip_text_set(Elm_Object_Item *it, const char *text)
1862 elm_widget_item_tooltip_text_set(it, text);
1866 elm_object_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb)
1868 elm_widget_item_tooltip_content_cb_set(it, func, data, del_cb);
1872 elm_object_item_tooltip_unset(Elm_Object_Item *it)
1874 elm_widget_item_tooltip_unset(it);
1878 elm_object_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable)
1880 return elm_widget_item_tooltip_window_mode_set(it, disable);
1884 elm_object_item_tooltip_window_mode_get(const Elm_Object_Item *it)
1886 return elm_widget_item_tooltip_window_mode_get(it);
1890 elm_object_item_tooltip_style_set(Elm_Object_Item *it, const char *style)
1892 elm_widget_item_tooltip_style_set(it, style);
1896 elm_object_item_tooltip_style_get(const Elm_Object_Item *it)
1898 return elm_widget_item_tooltip_style_get(it);
1902 elm_object_item_cursor_set(Elm_Object_Item *it, const char *cursor)
1904 elm_widget_item_cursor_set(it, cursor);
1908 elm_object_item_cursor_get(const Elm_Object_Item *it)
1910 return elm_widget_item_cursor_get(it);
1914 elm_object_item_cursor_unset(Elm_Object_Item *it)
1916 elm_widget_item_cursor_unset(it);
1920 elm_object_item_cursor_style_set(Elm_Object_Item *it, const char *style)
1922 elm_widget_item_cursor_style_set(it, style);
1926 elm_object_item_cursor_style_get(const Elm_Object_Item *it)
1928 return elm_widget_item_cursor_style_get(it);
1932 elm_object_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only)
1934 elm_widget_item_cursor_engine_only_set(it, engine_only);
1938 elm_object_item_cursor_engine_only_get(const Elm_Object_Item *it)
1940 return elm_widget_item_cursor_engine_only_get(it);
1944 elm_object_item_track(Elm_Object_Item *it)
1946 return elm_widget_item_track((Elm_Widget_Item *)it);
1950 elm_object_item_untrack(Elm_Object_Item *it)
1952 elm_widget_item_untrack((Elm_Widget_Item *)it);
1956 elm_object_item_track_get(const Elm_Object_Item *it)
1958 return elm_widget_item_track_get((Elm_Widget_Item *)it);
1962 elm_object_item_focus_set(Elm_Object_Item *item, Eina_Bool focused)
1964 elm_widget_item_focus_set(item, focused);
1968 elm_object_item_focus_get(const Elm_Object_Item *item)
1970 return elm_widget_item_focus_get(item);