2 # include "elementary_config.h"
6 #include <dlfcn.h> /* dlopen,dlclose,etc */
9 #ifdef HAVE_CRT_EXTERNS_H
10 # include <crt_externs.h>
17 #include <Elementary.h>
20 #define SEMI_BROKEN_QUICKLAUNCH 1
22 static Elm_Version _version = { VMAJ, VMIN, VMIC, VREV };
23 EAPI Elm_Version *elm_version = &_version;
26 _elm_dangerous_call_check(const char *call)
31 snprintf(buf, sizeof(buf), "%i.%i.%i.%i", VMAJ, VMIN, VMIC, VREV);
32 eval = getenv("ELM_NO_FINGER_WAGGLING");
33 if ((eval) && (!strcmp(eval, buf)))
35 printf("ELEMENTARY FINGER WAGGLE!!!!!!!!!!\n"
38 "PLEASE see the API documentation for this function. This call\n"
39 "should almost never be used. Only in very special cases.\n"
41 "To remove this warning please set the environment variable:\n"
42 " ELM_NO_FINGER_WAGGLING\n"
43 "To the value of the Elementary version + revision number. e.g.:\n"
51 static Eina_Bool _elm_signal_exit(void *data,
55 static Eina_Prefix *pfx = NULL;
56 char *_elm_appname = NULL;
57 const char *_elm_data_dir = NULL;
58 const char *_elm_lib_dir = NULL;
59 int _elm_log_dom = -1;
61 EAPI int ELM_EVENT_POLICY_CHANGED = 0;
63 static int _elm_init_count = 0;
64 static int _elm_sub_init_count = 0;
65 static int _elm_ql_init_count = 0;
66 static int _elm_policies[ELM_POLICY_LAST];
67 static Ecore_Event_Handler *_elm_exit_handler = NULL;
68 static Eina_Bool quicklaunch_on = 0;
71 _elm_signal_exit(void *data __UNUSED__,
72 int ev_type __UNUSED__,
76 return ECORE_CALLBACK_PASS_ON;
82 edje_scale_set(_elm_config->scale);
83 _elm_win_rescale(NULL, EINA_FALSE);
86 static void *app_mainfunc = NULL;
87 static const char *app_domain = NULL;
88 static const char *app_checkfile = NULL;
90 static const char *app_compile_bin_dir = NULL;
91 static const char *app_compile_lib_dir = NULL;
92 static const char *app_compile_data_dir = NULL;
93 static const char *app_compile_locale_dir = NULL;
94 static const char *app_prefix_dir = NULL;
95 static const char *app_bin_dir = NULL;
96 static const char *app_lib_dir = NULL;
97 static const char *app_data_dir = NULL;
98 static const char *app_locale_dir = NULL;
100 static Eina_Prefix *app_pfx = NULL;
107 const char *dirs[4] = { NULL, NULL, NULL, NULL };
108 char *caps = NULL, *p1, *p2;
111 if (!app_domain) return;
113 ecore_app_args_get(&argc, &argv);
114 if (argc < 1) return;
116 dirs[0] = app_compile_bin_dir;
117 dirs[1] = app_compile_lib_dir;
118 dirs[2] = app_compile_data_dir;
119 dirs[3] = app_compile_locale_dir;
121 if (!dirs[1]) dirs[1] = dirs[0];
122 if (!dirs[0]) dirs[0] = dirs[1];
123 if (!dirs[3]) dirs[3] = dirs[2];
124 if (!dirs[2]) dirs[2] = dirs[3];
128 caps = alloca(strlen(app_domain) + 1);
129 for (p1 = (char *)app_domain, p2 = caps; *p1; p1++, p2++)
133 app_pfx = eina_prefix_new(argv[0], app_mainfunc, caps, app_domain,
134 app_checkfile, dirs[0], dirs[1], dirs[2], dirs[3]);
138 _prefix_shutdown(void)
140 if (app_pfx) eina_prefix_free(app_pfx);
141 if (app_domain) eina_stringshare_del(app_domain);
142 if (app_checkfile) eina_stringshare_del(app_checkfile);
143 if (app_compile_bin_dir) eina_stringshare_del(app_compile_bin_dir);
144 if (app_compile_lib_dir) eina_stringshare_del(app_compile_lib_dir);
145 if (app_compile_data_dir) eina_stringshare_del(app_compile_data_dir);
146 if (app_compile_locale_dir) eina_stringshare_del(app_compile_locale_dir);
147 if (app_prefix_dir) eina_stringshare_del(app_prefix_dir);
148 if (app_bin_dir) eina_stringshare_del(app_bin_dir);
149 if (app_lib_dir) eina_stringshare_del(app_lib_dir);
150 if (app_data_dir) eina_stringshare_del(app_data_dir);
151 if (app_locale_dir) eina_stringshare_del(app_locale_dir);
154 app_checkfile = NULL;
155 app_compile_bin_dir = NULL;
156 app_compile_lib_dir = NULL;
157 app_compile_data_dir = NULL;
158 app_compile_locale_dir = NULL;
159 app_prefix_dir = NULL;
163 app_locale_dir = NULL;
172 if (_elm_init_count > 1) return _elm_init_count;
173 elm_quicklaunch_init(argc, argv);
174 elm_quicklaunch_sub_init(argc, argv);
176 return _elm_init_count;
183 if (_elm_init_count > 0) return _elm_init_count;
185 while (_elm_win_deferred_free) ecore_main_loop_iterate();
187 // _prefix_shutdown();
188 elm_quicklaunch_sub_shutdown();
189 elm_quicklaunch_shutdown();
190 return _elm_init_count;
194 elm_app_info_set(void *mainfunc, const char *dom, const char *checkfile)
196 app_mainfunc = mainfunc;
197 eina_stringshare_replace(&app_domain, dom);
198 eina_stringshare_replace(&app_checkfile, checkfile);
202 elm_app_compile_bin_dir_set(const char *dir)
204 eina_stringshare_replace(&app_compile_bin_dir, dir);
208 elm_app_compile_lib_dir_set(const char *dir)
210 eina_stringshare_replace(&app_compile_lib_dir, dir);
214 elm_app_compile_data_dir_set(const char *dir)
216 eina_stringshare_replace(&app_compile_data_dir, dir);
220 elm_app_compile_locale_set(const char *dir)
222 eina_stringshare_replace(&app_compile_locale_dir, dir);
226 elm_app_prefix_dir_get(void)
228 if (app_prefix_dir) return app_prefix_dir;
230 if (!app_pfx) return "";
231 app_prefix_dir = eina_prefix_get(app_pfx);
232 return app_prefix_dir;
236 elm_app_bin_dir_get(void)
238 if (app_bin_dir) return app_bin_dir;
240 if (!app_pfx) return "";
241 app_bin_dir = eina_prefix_bin_get(app_pfx);
246 elm_app_lib_dir_get(void)
248 if (app_lib_dir) return app_lib_dir;
250 if (!app_pfx) return "";
251 app_lib_dir = eina_prefix_lib_get(app_pfx);
256 elm_app_data_dir_get(void)
258 if (app_data_dir) return app_data_dir;
260 if (!app_pfx) return "";
261 app_data_dir = eina_prefix_data_get(app_pfx);
266 elm_app_locale_dir_get(void)
268 if (app_locale_dir) return app_locale_dir;
270 if (!app_pfx) return "";
271 app_locale_dir = eina_prefix_locale_get(app_pfx);
272 return app_locale_dir;
276 static int _elm_need_e_dbus = 0;
279 elm_need_e_dbus(void)
282 if (_elm_need_e_dbus++) return EINA_TRUE;
291 _elm_unneed_e_dbus(void)
294 if (--_elm_need_e_dbus) return;
296 _elm_need_e_dbus = 0;
302 static int _elm_need_efreet = 0;
305 elm_need_efreet(void)
308 if (_elm_need_efreet++) return EINA_TRUE;
316 list = efreet_icon_extra_list_get();
319 e_user_dir_concat_static(buf, "icons");
320 *list = eina_list_prepend(*list, (void *)eina_stringshare_add(buf));
321 e_prefix_data_concat_static(buf, "data/icons");
322 *list = eina_list_prepend(*list, (void *)eina_stringshare_add(buf));
333 _elm_unneed_efreet(void)
336 if (--_elm_need_efreet) return;
338 _elm_need_efreet = 0;
339 efreet_trash_shutdown();
340 efreet_mime_shutdown();
346 elm_quicklaunch_mode_set(Eina_Bool ql_on)
348 quicklaunch_on = ql_on;
352 elm_quicklaunch_mode_get(void)
354 return quicklaunch_on;
358 elm_quicklaunch_init(int argc,
361 _elm_ql_init_count++;
362 if (_elm_ql_init_count > 1) return _elm_ql_init_count;
364 _elm_log_dom = eina_log_domain_register("elementary", EINA_COLOR_LIGHTBLUE);
367 EINA_LOG_ERR("could not register elementary log domain.");
368 _elm_log_dom = EINA_LOG_DOMAIN_GLOBAL;
374 #ifdef HAVE_ELEMENTARY_EMAP
377 ecore_app_args_set(argc, (const char **)argv);
379 memset(_elm_policies, 0, sizeof(_elm_policies));
380 if (!ELM_EVENT_POLICY_CHANGED)
381 ELM_EVENT_POLICY_CHANGED = ecore_event_type_new();
385 _elm_exit_handler = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, _elm_signal_exit, NULL);
387 if (argv) _elm_appname = strdup(ecore_file_file_get(argv[0]));
389 pfx = eina_prefix_new(NULL, elm_quicklaunch_init,
390 "ELM", "elementary", "config/profile.cfg",
391 PACKAGE_LIB_DIR, /* don't have a bin dir currently */
397 _elm_data_dir = eina_stringshare_add(eina_prefix_data_get(pfx));
398 _elm_lib_dir = eina_stringshare_add(eina_prefix_lib_get(pfx));
400 if (!_elm_data_dir) _elm_data_dir = eina_stringshare_add("/");
401 if (!_elm_lib_dir) _elm_lib_dir = eina_stringshare_add("/");
404 return _elm_ql_init_count;
408 elm_quicklaunch_sub_init(int argc,
411 _elm_sub_init_count++;
412 if (_elm_sub_init_count > 1) return _elm_sub_init_count;
415 #ifdef SEMI_BROKEN_QUICKLAUNCH
416 return _elm_sub_init_count;
421 ecore_app_args_set(argc, (const char **)argv);
425 _elm_config_sub_init();
426 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
427 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
428 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
429 ENGINE_COMPARE(ELM_XRENDER_X11) ||
430 ENGINE_COMPARE(ELM_OPENGL_X11))
431 #undef ENGINE_COMPARE
433 #ifdef HAVE_ELEMENTARY_X
437 ecore_evas_init(); // FIXME: check errors
440 ecore_con_url_init();
442 return _elm_sub_init_count;
446 elm_quicklaunch_sub_shutdown(void)
448 _elm_sub_init_count--;
449 if (_elm_sub_init_count > 0) return _elm_sub_init_count;
452 #ifdef SEMI_BROKEN_QUICKLAUNCH
453 return _elm_sub_init_count;
459 _elm_module_shutdown();
460 ecore_con_url_shutdown();
461 ecore_con_shutdown();
462 ecore_imf_shutdown();
463 ecore_evas_shutdown();
464 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
465 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
466 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
467 ENGINE_COMPARE(ELM_XRENDER_X11) ||
468 ENGINE_COMPARE(ELM_OPENGL_X11))
469 #undef ENGINE_COMPARE
471 #ifdef HAVE_ELEMENTARY_X
472 ecore_x_disconnect();
475 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
476 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
477 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
478 ENGINE_COMPARE(ELM_XRENDER_X11) ||
479 ENGINE_COMPARE(ELM_OPENGL_X11) ||
480 ENGINE_COMPARE(ELM_SOFTWARE_SDL) ||
481 ENGINE_COMPARE(ELM_SOFTWARE_16_SDL) ||
482 ENGINE_COMPARE(ELM_OPENGL_SDL) ||
483 ENGINE_COMPARE(ELM_SOFTWARE_WIN32) ||
484 ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
485 #undef ENGINE_COMPARE
486 evas_cserve_disconnect();
490 return _elm_sub_init_count;
494 elm_quicklaunch_shutdown(void)
496 _elm_ql_init_count--;
497 if (_elm_ql_init_count > 0) return _elm_ql_init_count;
498 if (pfx) eina_prefix_free(pfx);
500 eina_stringshare_del(_elm_data_dir);
501 _elm_data_dir = NULL;
502 eina_stringshare_del(_elm_lib_dir);
508 _elm_config_shutdown();
510 ecore_event_handler_del(_elm_exit_handler);
511 _elm_exit_handler = NULL;
513 _elm_theme_shutdown();
514 _elm_unneed_efreet();
515 _elm_unneed_e_dbus();
516 _elm_unneed_ethumb();
518 ecore_file_shutdown();
520 #ifdef HAVE_ELEMENTARY_EMAP
527 if ((_elm_log_dom > -1) && (_elm_log_dom != EINA_LOG_DOMAIN_GLOBAL))
529 eina_log_domain_unregister(_elm_log_dom);
533 _elm_widget_type_clear();
536 return _elm_ql_init_count;
540 elm_quicklaunch_seed(void)
542 #ifndef SEMI_BROKEN_QUICKLAUNCH
545 Evas_Object *win, *bg, *bt;
547 win = elm_win_add(NULL, "seed", ELM_WIN_BASIC);
548 bg = elm_bg_add(win);
549 elm_win_resize_object_add(win, bg);
550 evas_object_show(bg);
551 bt = elm_button_add(win);
552 elm_button_label_set(bt, " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~-_=+\\|]}[{;:'\",<.>/?");
553 elm_win_resize_object_add(win, bt);
554 ecore_main_loop_iterate();
555 evas_object_del(win);
556 ecore_main_loop_iterate();
557 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
558 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
559 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
560 ENGINE_COMPARE(ELM_XRENDER_X11) ||
561 ENGINE_COMPARE(ELM_OPENGL_X11))
562 #undef ENGINE_COMPARE
564 # ifdef HAVE_ELEMENTARY_X
568 ecore_main_loop_iterate();
573 static void *qr_handle = NULL;
574 static int (*qr_main)(int argc,
578 elm_quicklaunch_prepare(int argc __UNUSED__,
582 char *exe = elm_quicklaunch_exe_path_get(argv[0]);
585 ERR("requested quicklaunch binary '%s' does not exist\n", argv[0]);
593 exe2 = malloc(strlen(exe) + 1 + 10);
595 p = strrchr(exe2, '/');
598 exename = alloca(strlen(p) + 1);
601 strcat(p, "../lib/");
604 if (!access(exe2, R_OK | X_OK))
612 qr_handle = dlopen(exe, RTLD_NOW | RTLD_GLOBAL);
615 fprintf(stderr, "dlerr: %s\n", dlerror());
616 WRN("dlopen('%s') failed: %s", exe, dlerror());
620 INF("dlopen('%s') = %p", exe, qr_handle);
621 qr_main = dlsym(qr_handle, "elm_main");
622 INF("dlsym(%p, 'elm_main') = %p", qr_handle, qr_main);
625 WRN("not quicklauncher capable: no elm_main in '%s'", exe);
644 extern char **environ;
649 for (i = 0, size = 0; environ[i]; i++)
650 size += strlen(environ[i]) + 1;
652 p = malloc((i + 1) * sizeof(char *));
657 for (i = 0; oldenv[i]; i++)
658 environ[i] = strdup(oldenv[i]);
665 elm_quicklaunch_fork(int argc,
668 void (postfork_func) (void *data),
678 // need to accept current environment from elementary_run
685 if (child > 0) return EINA_TRUE;
688 perror("could not fork");
693 perror("could not chdir");
694 args = alloca((argc + 1) * sizeof(char *));
695 for (i = 0; i < argc; i++) args[i] = argv[i];
697 WRN("%s not quicklaunch capable, fallback...", argv[0]);
698 execvp(argv[0], args);
699 ERR("failed to execute '%s': %s", argv[0], strerror(errno));
703 if (child > 0) return EINA_TRUE;
706 perror("could not fork");
709 if (postfork_func) postfork_func(postfork_data);
713 #ifdef SEMI_BROKEN_QUICKLAUNCH
714 ecore_app_args_set(argc, (const char **)argv);
717 _elm_config_sub_init();
718 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
719 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
720 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
721 ENGINE_COMPARE(ELM_XRENDER_X11) ||
722 ENGINE_COMPARE(ELM_OPENGL_X11))
723 #undef ENGINE_COMPARE
725 # ifdef HAVE_ELEMENTARY_X
729 ecore_evas_init(); // FIXME: check errors
737 perror("could not chdir");
738 // FIXME: this is very linux specific. it changes argv[0] of the process
739 // so ps etc. report what you'd expect. for other unixes and os's this
746 ecore_app_args_get(&real_argc, &real_argv);
747 lastarg = real_argv[real_argc - 1] + strlen(real_argv[real_argc - 1]);
748 for (p = real_argv[0]; p < lastarg; p++) *p = 0;
749 strcpy(real_argv[0], argv[0]);
751 ecore_app_args_set(argc, (const char **)argv);
752 ret = qr_main(argc, argv);
766 elm_quicklaunch_cleanup(void)
779 elm_quicklaunch_fallback(int argc,
783 elm_quicklaunch_init(argc, argv);
784 elm_quicklaunch_sub_init(argc, argv);
785 elm_quicklaunch_prepare(argc, argv);
786 ret = qr_main(argc, argv);
792 elm_quicklaunch_exe_path_get(const char *exe)
794 static char *path = NULL;
795 static Eina_List *pathlist = NULL;
799 if (exe[0] == '/') return strdup(exe);
800 if ((exe[0] == '.') && (exe[1] == '/')) return strdup(exe);
801 if ((exe[0] == '.') && (exe[1] == '.') && (exe[2] == '/')) return strdup(exe);
806 path = getenv("PATH");
807 buf2 = alloca(strlen(path) + 1);
812 if ((*p == ':') || (!*p))
817 strncpy(buf2, pp, len);
819 pathlist = eina_list_append(pathlist, eina_stringshare_add(buf2));
831 EINA_LIST_FOREACH(pathlist, l, pathitr)
833 snprintf(buf, sizeof(buf), "%s/%s", pathitr, exe);
834 if (!access(buf, R_OK | X_OK)) return strdup(buf);
842 ecore_main_loop_begin();
848 ecore_main_loop_quit();
852 elm_policy_set(unsigned int policy,
855 Elm_Event_Policy_Changed *ev;
857 if (policy >= ELM_POLICY_LAST)
860 if (value == _elm_policies[policy])
863 /* TODO: validade policy? */
865 ev = malloc(sizeof(*ev));
867 ev->new_value = value;
868 ev->old_value = _elm_policies[policy];
870 _elm_policies[policy] = value;
872 ecore_event_add(ELM_EVENT_POLICY_CHANGED, ev, NULL, NULL);
878 elm_policy_get(unsigned int policy)
880 if (policy >= ELM_POLICY_LAST)
882 return _elm_policies[policy];
886 elm_language_set(const char *lang)
888 setlocale(LC_ALL, lang);
889 _elm_win_translate();
893 elm_object_mirrored_get(const Evas_Object *obj)
895 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
896 return elm_widget_mirrored_get(obj);
900 elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored)
902 EINA_SAFETY_ON_NULL_RETURN(obj);
903 elm_widget_mirrored_set(obj, mirrored);
907 elm_object_mirrored_automatic_get(const Evas_Object *obj)
909 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
910 return elm_widget_mirrored_automatic_get(obj);
914 elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic)
916 EINA_SAFETY_ON_NULL_RETURN(obj);
917 elm_widget_mirrored_automatic_set(obj, automatic);
921 elm_object_scale_set(Evas_Object *obj,
924 EINA_SAFETY_ON_NULL_RETURN(obj);
925 elm_widget_scale_set(obj, scale);
929 elm_object_scale_get(const Evas_Object *obj)
931 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0.0);
932 return elm_widget_scale_get(obj);
936 elm_object_text_part_set(Evas_Object *obj, const char *part, const char *label)
938 EINA_SAFETY_ON_NULL_RETURN(obj);
939 elm_widget_text_part_set(obj, part, label);
943 elm_object_text_part_get(const Evas_Object *obj, const char *part)
945 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
946 return elm_widget_text_part_get(obj, part);
950 elm_object_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text)
952 EINA_SAFETY_ON_NULL_RETURN(obj);
953 elm_widget_domain_translatable_text_part_set(obj, part, domain, text);
957 elm_object_translatable_text_part_get(const Evas_Object *obj, const char *part)
959 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
960 return elm_widget_translatable_text_part_get(obj, part);
964 elm_object_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content)
966 EINA_SAFETY_ON_NULL_RETURN(obj);
967 elm_widget_content_part_set(obj, part, content);
971 elm_object_content_part_get(const Evas_Object *obj, const char *part)
973 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
974 return elm_widget_content_part_get(obj, part);
978 elm_object_content_part_unset(Evas_Object *obj, const char *part)
980 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
981 return elm_widget_content_part_unset(obj, part);
987 return _elm_config->scale;
991 elm_scale_set(double scale)
993 if (_elm_config->scale == scale) return;
994 _elm_config->scale = scale;
999 elm_scale_all_set(double scale)
1001 #ifdef HAVE_ELEMENTARY_X
1002 static Ecore_X_Atom atom = 0;
1003 unsigned int scale_i = (unsigned int)(scale * 1000.0);
1005 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_SCALE");
1006 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1012 elm_password_show_last_get(void)
1014 return _elm_config->password_show_last;
1018 elm_password_show_last_set(Eina_Bool password_show_last)
1020 if (_elm_config->password_show_last == password_show_last) return;
1021 _elm_config->password_show_last = password_show_last;
1022 edje_password_show_last_set(_elm_config->password_show_last);
1026 elm_password_show_last_timeout_get(void)
1028 return _elm_config->password_show_last_timeout;
1032 elm_password_show_last_timeout_set(double password_show_last_timeout)
1034 if (_elm_config->password_show_last_timeout == password_show_last_timeout) return;
1035 _elm_config->password_show_last_timeout = password_show_last_timeout;
1036 edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout);
1040 elm_object_style_set(Evas_Object *obj,
1043 EINA_SAFETY_ON_NULL_RETURN(obj);
1044 elm_widget_style_set(obj, style);
1048 elm_object_style_get(const Evas_Object *obj)
1050 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1051 return elm_widget_style_get(obj);
1055 elm_object_disabled_set(Evas_Object *obj,
1058 EINA_SAFETY_ON_NULL_RETURN(obj);
1059 elm_widget_disabled_set(obj, disabled);
1063 elm_object_disabled_get(const Evas_Object *obj)
1065 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1066 return elm_widget_disabled_get(obj);
1070 elm_config_save(void)
1072 return _elm_config_save();
1076 elm_config_reload(void)
1078 _elm_config_reload();
1082 elm_profile_current_get(void)
1084 return _elm_config_current_profile_get();
1088 elm_profile_dir_get(const char *profile,
1091 return _elm_config_profile_dir_get(profile, is_user);
1095 elm_profile_dir_free(const char *p_dir)
1097 free((void *)p_dir);
1101 elm_profile_list_get(void)
1103 return _elm_config_profiles_list();
1107 elm_profile_list_free(Eina_List *l)
1111 EINA_LIST_FREE(l, dir)
1112 eina_stringshare_del(dir);
1116 elm_profile_set(const char *profile)
1118 EINA_SAFETY_ON_NULL_RETURN(profile);
1119 _elm_config_profile_set(profile);
1123 elm_profile_all_set(const char *profile)
1125 #ifdef HAVE_ELEMENTARY_X
1126 static Ecore_X_Atom atom = 0;
1128 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_PROFILE");
1129 ecore_x_window_prop_string_set(ecore_x_window_root_first_get(),
1135 elm_engine_current_get(void)
1137 return _elm_config->engine;
1141 elm_engine_set(const char *engine)
1143 EINA_SAFETY_ON_NULL_RETURN(engine);
1145 _elm_config_engine_set(engine);
1148 EAPI const Eina_List *
1149 elm_text_classes_list_get(void)
1151 return _elm_config_text_classes_get();
1155 elm_text_classes_list_free(const Eina_List *list)
1157 _elm_config_text_classes_free((Eina_List *)list);
1160 EAPI const Eina_List *
1161 elm_font_overlay_list_get(void)
1163 return _elm_config_font_overlays_list();
1167 elm_font_overlay_set(const char *text_class,
1169 Evas_Font_Size size)
1171 _elm_config_font_overlay_set(text_class, font, size);
1175 elm_font_overlay_unset(const char *text_class)
1177 _elm_config_font_overlay_remove(text_class);
1181 elm_font_overlay_apply(void)
1183 _elm_config_font_overlay_apply();
1187 elm_font_overlay_all_apply(void)
1189 #ifdef HAVE_ELEMENTARY_X
1190 static Ecore_X_Atom atom = 0;
1191 unsigned int dummy = (unsigned int)(1 * 1000.0);
1193 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FONT_OVERLAY");
1194 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(), atom, &dummy,
1199 EAPI Elm_Font_Properties *
1200 elm_font_properties_get(const char *font)
1202 EINA_SAFETY_ON_NULL_RETURN_VAL(font, NULL);
1203 return _elm_font_properties_get(NULL, font);
1207 elm_font_properties_free(Elm_Font_Properties *efp)
1211 EINA_SAFETY_ON_NULL_RETURN(efp);
1212 EINA_LIST_FREE(efp->styles, str)
1213 if (str) eina_stringshare_del(str);
1214 if (efp->name) eina_stringshare_del(efp->name);
1219 elm_font_fontconfig_name_get(const char *name,
1224 EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
1225 if (!style || style[0] == 0) return eina_stringshare_add(name);
1226 snprintf(buf, 256, "%s" ELM_FONT_TOKEN_STYLE "%s", name, style);
1227 return eina_stringshare_add(buf);
1231 elm_font_fontconfig_name_free(const char *name)
1233 eina_stringshare_del(name);
1237 elm_font_available_hash_add(Eina_List *list)
1239 Eina_Hash *font_hash;
1245 /* populate with default font families */
1246 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Regular");
1247 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Bold");
1248 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Oblique");
1249 font_hash = _elm_font_available_hash_add(font_hash,
1250 "Sans:style=Bold Oblique");
1252 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Regular");
1253 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Bold");
1254 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Oblique");
1255 font_hash = _elm_font_available_hash_add(font_hash,
1256 "Serif:style=Bold Oblique");
1258 font_hash = _elm_font_available_hash_add(font_hash,
1259 "Monospace:style=Regular");
1260 font_hash = _elm_font_available_hash_add(font_hash,
1261 "Monospace:style=Bold");
1262 font_hash = _elm_font_available_hash_add(font_hash,
1263 "Monospace:style=Oblique");
1264 font_hash = _elm_font_available_hash_add(font_hash,
1265 "Monospace:style=Bold Oblique");
1267 EINA_LIST_FOREACH(list, l, key)
1268 font_hash = _elm_font_available_hash_add(font_hash, key);
1274 elm_font_available_hash_del(Eina_Hash *hash)
1276 _elm_font_available_hash_del(hash);
1280 elm_finger_size_get(void)
1282 return _elm_config->finger_size;
1286 elm_finger_size_set(Evas_Coord size)
1288 if (_elm_config->finger_size == size) return;
1289 _elm_config->finger_size = size;
1294 elm_finger_size_all_set(Evas_Coord size)
1296 #ifdef HAVE_ELEMENTARY_X
1297 static Ecore_X_Atom atom = 0;
1298 unsigned int size_i = (unsigned int)size;
1300 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FINGER_SIZE");
1301 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1307 elm_autocapitalization_allow_all_set(Eina_Bool on)
1309 #ifdef HAVE_ELEMENTARY_X
1310 static Ecore_X_Atom atom = 0;
1311 unsigned int on_i = (unsigned int)on;
1313 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_AUTOCAPITAL_ALLOW");
1314 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1320 elm_autoperiod_allow_all_set(Eina_Bool on)
1322 #ifdef HAVE_ELEMENTARY_X
1323 static Ecore_X_Atom atom = 0;
1324 unsigned int on_i = (unsigned int)on;
1326 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_AUTOPERIOD_ALLOW");
1327 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1333 elm_coords_finger_size_adjust(int times_w,
1338 if ((w) && (*w < (_elm_config->finger_size * times_w)))
1339 *w = _elm_config->finger_size * times_w;
1340 if ((h) && (*h < (_elm_config->finger_size * times_h)))
1341 *h = _elm_config->finger_size * times_h;
1350 edje_file_cache_flush();
1351 edje_collection_cache_flush();
1353 EINA_LIST_FOREACH(_elm_win_list, l, obj)
1355 Evas *e = evas_object_evas_get(obj);
1356 evas_image_cache_flush(e);
1357 evas_font_cache_flush(e);
1358 evas_render_dump(e);
1363 elm_cache_flush_interval_get(void)
1365 return _elm_config->cache_flush_poll_interval;
1369 elm_cache_flush_interval_set(int size)
1371 if (_elm_config->cache_flush_poll_interval == size) return;
1372 _elm_config->cache_flush_poll_interval = size;
1378 elm_cache_flush_interval_all_set(int size)
1380 #ifdef HAVE_ELEMENTARY_X
1381 static Ecore_X_Atom atom = 0;
1382 unsigned int size_i = (unsigned int)size;
1384 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_INTERVAL");
1385 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1391 elm_cache_flush_enabled_get(void)
1393 return _elm_config->cache_flush_enable;
1397 elm_cache_flush_enabled_set(Eina_Bool enabled)
1399 enabled = !!enabled;
1400 if (_elm_config->cache_flush_enable == enabled) return;
1401 _elm_config->cache_flush_enable = enabled;
1407 elm_cache_flush_enabled_all_set(Eina_Bool enabled)
1409 #ifdef HAVE_ELEMENTARY_X
1410 static Ecore_X_Atom atom = 0;
1411 unsigned int enabled_i = (unsigned int)enabled;
1413 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_ENABLE");
1414 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1415 atom, &enabled_i, 1);
1420 elm_font_cache_get(void)
1422 return _elm_config->font_cache;
1426 elm_font_cache_set(int size)
1428 if (_elm_config->font_cache == size) return;
1429 _elm_config->font_cache = size;
1435 elm_font_cache_all_set(int size)
1437 #ifdef HAVE_ELEMENTARY_X
1438 static Ecore_X_Atom atom = 0;
1439 unsigned int size_i = (unsigned int)size;
1441 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FONT_CACHE");
1442 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1448 elm_image_cache_get(void)
1450 return _elm_config->image_cache;
1454 elm_image_cache_set(int size)
1456 if (_elm_config->image_cache == size) return;
1457 _elm_config->image_cache = size;
1463 elm_image_cache_all_set(int size)
1465 #ifdef HAVE_ELEMENTARY_X
1466 static Ecore_X_Atom atom = 0;
1467 unsigned int size_i = (unsigned int)size;
1469 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_IMAGE_CACHE");
1470 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1476 elm_edje_file_cache_get(void)
1478 return _elm_config->edje_cache;
1482 elm_edje_file_cache_set(int size)
1484 if (_elm_config->edje_cache == size) return;
1485 _elm_config->edje_cache = size;
1491 elm_edje_file_cache_all_set(int size)
1493 #ifdef HAVE_ELEMENTARY_X
1494 static Ecore_X_Atom atom = 0;
1495 unsigned int size_i = (unsigned int)size;
1497 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_FILE_CACHE");
1498 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1504 elm_edje_collection_cache_get(void)
1506 return _elm_config->edje_collection_cache;
1510 elm_edje_collection_cache_set(int size)
1512 if (_elm_config->edje_collection_cache == size) return;
1513 _elm_config->edje_collection_cache = size;
1519 elm_edje_collection_cache_all_set(int size)
1521 #ifdef HAVE_ELEMENTARY_X
1522 static Ecore_X_Atom atom = 0;
1523 unsigned int size_i = (unsigned int)size;
1525 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_COLLECTION_CACHE");
1526 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1532 elm_object_focus_get(const Evas_Object *obj)
1534 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1535 return elm_widget_focus_get(obj);
1539 elm_object_focus_set(Evas_Object *obj,
1542 EINA_SAFETY_ON_NULL_RETURN(obj);
1545 if (elm_widget_focus_get(obj)) return;
1546 elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
1550 if (!elm_widget_can_focus_get(obj)) return;
1551 elm_widget_focused_object_clear(obj);
1556 elm_object_focus(Evas_Object *obj)
1558 EINA_SAFETY_ON_NULL_RETURN(obj);
1559 elm_object_focus_set(obj, EINA_TRUE);
1563 elm_object_unfocus(Evas_Object *obj)
1565 EINA_SAFETY_ON_NULL_RETURN(obj);
1566 elm_object_focus_set(obj, EINA_FALSE);
1570 elm_object_focus_allow_set(Evas_Object *obj,
1573 EINA_SAFETY_ON_NULL_RETURN(obj);
1574 elm_widget_can_focus_set(obj, enable);
1578 elm_object_focus_allow_get(const Evas_Object *obj)
1580 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1581 return (elm_widget_can_focus_get(obj)) || (elm_widget_child_can_focus_get(obj));
1585 elm_object_focus_custom_chain_set(Evas_Object *obj,
1588 EINA_SAFETY_ON_NULL_RETURN(obj);
1589 elm_widget_focus_custom_chain_set(obj, objs);
1593 elm_object_focus_custom_chain_unset(Evas_Object *obj)
1595 EINA_SAFETY_ON_NULL_RETURN(obj);
1596 elm_widget_focus_custom_chain_unset(obj);
1599 EAPI const Eina_List *
1600 elm_object_focus_custom_chain_get(const Evas_Object *obj)
1602 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1603 return elm_widget_focus_custom_chain_get(obj);
1607 elm_object_focus_custom_chain_append(Evas_Object *obj,
1609 Evas_Object *relative_child)
1611 EINA_SAFETY_ON_NULL_RETURN(obj);
1612 EINA_SAFETY_ON_NULL_RETURN(child);
1613 elm_widget_focus_custom_chain_append(obj, child, relative_child);
1617 elm_object_focus_custom_chain_prepend(Evas_Object *obj,
1619 Evas_Object *relative_child)
1621 EINA_SAFETY_ON_NULL_RETURN(obj);
1622 EINA_SAFETY_ON_NULL_RETURN(child);
1623 elm_widget_focus_custom_chain_prepend(obj, child, relative_child);
1627 elm_object_focus_cycle(Evas_Object *obj,
1628 Elm_Focus_Direction dir)
1630 EINA_SAFETY_ON_NULL_RETURN(obj);
1631 elm_widget_focus_cycle(obj, dir);
1635 elm_object_focus_direction_go(Evas_Object *obj,
1639 EINA_SAFETY_ON_NULL_RETURN(obj);
1640 elm_widget_focus_direction_go(obj, x, y);
1644 elm_object_tree_unfocusable_set(Evas_Object *obj,
1645 Eina_Bool tree_unfocusable)
1647 EINA_SAFETY_ON_NULL_RETURN(obj);
1648 elm_widget_tree_unfocusable_set(obj, tree_unfocusable);
1652 elm_object_tree_unfocusable_get(const Evas_Object *obj)
1654 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1655 return elm_widget_tree_unfocusable_get(obj);
1659 elm_focus_highlight_enabled_get(void)
1661 return _elm_config->focus_highlight_enable;
1665 elm_focus_highlight_enabled_set(Eina_Bool enable)
1667 _elm_config->focus_highlight_enable = !!enable;
1671 elm_focus_highlight_animate_get(void)
1673 return _elm_config->focus_highlight_animate;
1677 elm_focus_highlight_animate_set(Eina_Bool animate)
1679 _elm_config->focus_highlight_animate = !!animate;
1683 elm_scroll_bounce_enabled_get(void)
1685 return _elm_config->thumbscroll_bounce_enable;
1689 elm_scroll_bounce_enabled_set(Eina_Bool enabled)
1691 _elm_config->thumbscroll_bounce_enable = enabled;
1695 elm_scroll_bounce_enabled_all_set(Eina_Bool enabled)
1697 #ifdef HAVE_ELEMENTARY_X
1698 static Ecore_X_Atom atom = 0;
1699 unsigned int bounce_enable_i = (unsigned int)enabled;
1702 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_ENABLE");
1703 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1704 atom, &bounce_enable_i, 1);
1709 elm_scroll_bounce_friction_get(void)
1711 return _elm_config->thumbscroll_bounce_friction;
1715 elm_scroll_bounce_friction_set(double friction)
1717 _elm_config->thumbscroll_bounce_friction = friction;
1721 elm_scroll_bounce_friction_all_set(double friction)
1723 #ifdef HAVE_ELEMENTARY_X
1724 static Ecore_X_Atom atom = 0;
1725 unsigned int bounce_friction_i = (unsigned int)(friction * 1000.0);
1728 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_FRICTION");
1729 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1730 atom, &bounce_friction_i, 1);
1735 elm_scroll_page_scroll_friction_get(void)
1737 return _elm_config->page_scroll_friction;
1741 elm_scroll_page_scroll_friction_set(double friction)
1743 _elm_config->page_scroll_friction = friction;
1747 elm_scroll_page_scroll_friction_all_set(double friction)
1749 #ifdef HAVE_ELEMENTARY_X
1750 static Ecore_X_Atom atom = 0;
1751 unsigned int page_scroll_friction_i = (unsigned int)(friction * 1000.0);
1754 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_PAGE_SCROLL_FRICTION");
1755 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1756 atom, &page_scroll_friction_i, 1);
1761 elm_scroll_bring_in_scroll_friction_get(void)
1763 return _elm_config->bring_in_scroll_friction;
1767 elm_scroll_bring_in_scroll_friction_set(double friction)
1769 _elm_config->bring_in_scroll_friction = friction;
1773 elm_scroll_bring_in_scroll_friction_all_set(double friction)
1775 #ifdef HAVE_ELEMENTARY_X
1776 static Ecore_X_Atom atom = 0;
1777 unsigned int bring_in_scroll_friction_i = (unsigned int)(friction * 1000.0);
1781 ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BRING_IN_SCROLL_FRICTION");
1782 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1783 atom, &bring_in_scroll_friction_i, 1);
1788 elm_scroll_zoom_friction_get(void)
1790 return _elm_config->zoom_friction;
1794 elm_scroll_zoom_friction_set(double friction)
1796 _elm_config->zoom_friction = friction;
1800 elm_scroll_zoom_friction_all_set(double friction)
1802 #ifdef HAVE_ELEMENTARY_X
1803 static Ecore_X_Atom atom = 0;
1804 unsigned int zoom_friction_i = (unsigned int)(friction * 1000.0);
1807 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ZOOM_FRICTION");
1808 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1809 atom, &zoom_friction_i, 1);
1814 elm_scroll_thumbscroll_enabled_get(void)
1816 return _elm_config->thumbscroll_enable;
1820 elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled)
1822 _elm_config->thumbscroll_enable = enabled;
1826 elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled)
1828 #ifdef HAVE_ELEMENTARY_X
1829 static Ecore_X_Atom atom = 0;
1830 unsigned int ts_enable_i = (unsigned int)enabled;
1832 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ENABLE");
1833 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1834 atom, &ts_enable_i, 1);
1839 elm_scroll_thumbscroll_threshold_get(void)
1841 return _elm_config->thumbscroll_threshold;
1845 elm_scroll_thumbscroll_threshold_set(unsigned int threshold)
1847 _elm_config->thumbscroll_threshold = threshold;
1851 elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold)
1853 #ifdef HAVE_ELEMENTARY_X
1854 static Ecore_X_Atom atom = 0;
1855 unsigned int ts_threshold_i = (unsigned int)threshold;
1857 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_THRESHOLD");
1858 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1859 atom, &ts_threshold_i, 1);
1864 elm_scroll_thumbscroll_momentum_threshold_get(void)
1866 return _elm_config->thumbscroll_momentum_threshold;
1870 elm_scroll_thumbscroll_momentum_threshold_set(double threshold)
1872 _elm_config->thumbscroll_momentum_threshold = threshold;
1876 elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold)
1878 #ifdef HAVE_ELEMENTARY_X
1879 static Ecore_X_Atom atom = 0;
1880 unsigned int ts_momentum_threshold_i = (unsigned int)(threshold * 1000.0);
1883 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_MOMENTUM_THRESHOLD");
1884 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1885 atom, &ts_momentum_threshold_i, 1);
1890 elm_scroll_thumbscroll_friction_get(void)
1892 return _elm_config->thumbscroll_friction;
1896 elm_scroll_thumbscroll_friction_set(double friction)
1898 _elm_config->thumbscroll_friction = friction;
1902 elm_scroll_thumbscroll_friction_all_set(double friction)
1904 #ifdef HAVE_ELEMENTARY_X
1905 static Ecore_X_Atom atom = 0;
1906 unsigned int ts_friction_i = (unsigned int)(friction * 1000.0);
1908 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_FRICTION");
1909 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1910 atom, &ts_friction_i, 1);
1915 elm_scroll_thumbscroll_border_friction_get(void)
1917 return _elm_config->thumbscroll_border_friction;
1921 elm_scroll_thumbscroll_border_friction_set(double friction)
1929 _elm_config->thumbscroll_friction = friction;
1933 elm_scroll_thumbscroll_border_friction_all_set(double friction)
1941 #ifdef HAVE_ELEMENTARY_X
1942 static Ecore_X_Atom atom = 0;
1943 unsigned int border_friction_i = (unsigned int)(friction * 1000.0);
1946 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BORDER_FRICTION");
1947 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1948 atom, &border_friction_i, 1);
1953 elm_scroll_thumbscroll_sensitivity_friction_get(void)
1955 return _elm_config->thumbscroll_sensitivity_friction;
1959 elm_scroll_thumbscroll_sensitivity_friction_set(double friction)
1967 _elm_config->thumbscroll_friction = friction;
1971 elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction)
1979 #ifdef HAVE_ELEMENTARY_X
1980 static Ecore_X_Atom atom = 0;
1981 unsigned int sensitivity_friction_i = (unsigned int)(friction * 1000.0);
1984 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_SENSITIVITY_FRICTION");
1985 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1986 atom, &sensitivity_friction_i, 1);
1991 elm_object_scroll_hold_push(Evas_Object *obj)
1993 EINA_SAFETY_ON_NULL_RETURN(obj);
1994 elm_widget_scroll_hold_push(obj);
1998 elm_object_scroll_hold_pop(Evas_Object *obj)
2000 EINA_SAFETY_ON_NULL_RETURN(obj);
2001 elm_widget_scroll_hold_pop(obj);
2005 elm_object_scroll_freeze_push(Evas_Object *obj)
2007 EINA_SAFETY_ON_NULL_RETURN(obj);
2008 elm_widget_scroll_freeze_push(obj);
2012 elm_object_scroll_lock_x_set(Evas_Object *obj,
2015 EINA_SAFETY_ON_NULL_RETURN(obj);
2016 elm_widget_drag_lock_x_set(obj, lock);
2020 elm_object_scroll_lock_y_set(Evas_Object *obj,
2023 EINA_SAFETY_ON_NULL_RETURN(obj);
2024 elm_widget_drag_lock_y_set(obj, lock);
2028 elm_object_scroll_lock_x_get(const Evas_Object *obj)
2030 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2031 return elm_widget_drag_lock_x_get(obj);
2035 elm_object_scroll_lock_y_get(const Evas_Object *obj)
2037 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2038 return elm_widget_drag_lock_y_get(obj);
2042 elm_object_scroll_freeze_pop(Evas_Object *obj)
2044 EINA_SAFETY_ON_NULL_RETURN(obj);
2045 elm_widget_scroll_freeze_pop(obj);
2049 elm_object_widget_check(const Evas_Object *obj)
2051 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2052 return elm_widget_is(obj);
2056 elm_object_parent_widget_get(const Evas_Object *obj)
2058 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2059 return elm_widget_parent_widget_get(obj);
2063 elm_object_top_widget_get(const Evas_Object *obj)
2065 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2066 return elm_widget_top_get(obj);
2070 elm_object_widget_type_get(const Evas_Object *obj)
2072 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2073 return elm_widget_type_get(obj);
2077 elm_object_signal_emit(Evas_Object *obj,
2078 const char *emission,
2081 EINA_SAFETY_ON_NULL_RETURN(obj);
2082 elm_widget_signal_emit(obj, emission, source);
2086 elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)
2088 EINA_SAFETY_ON_NULL_RETURN(obj);
2089 EINA_SAFETY_ON_NULL_RETURN(func);
2090 elm_widget_signal_callback_add(obj, emission, source, func, data);
2094 elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source))
2096 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2097 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
2098 return elm_widget_signal_callback_del(obj, emission, source, func);
2102 elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data)
2104 EINA_SAFETY_ON_NULL_RETURN(obj);
2105 EINA_SAFETY_ON_NULL_RETURN(func);
2106 elm_widget_event_callback_add(obj, func, data);
2110 elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data)
2112 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2113 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
2114 return elm_widget_event_callback_del(obj, func, data);
2118 elm_object_tree_dump(const Evas_Object *top)
2121 elm_widget_tree_dump(top);
2129 elm_object_tree_dot_dump(const Evas_Object *top,
2133 FILE *f = fopen(file, "wb");
2134 elm_widget_tree_dot_dump(top, f);
2144 elm_longpress_timeout_set(double longpress_timeout)
2146 _elm_config->longpress_timeout = longpress_timeout;
2150 elm_longpress_timeout_get(void)
2152 return _elm_config->longpress_timeout;
2156 elm_object_item_object_get(const Elm_Object_Item *it)
2158 return ((Elm_Widget_Item *) it)->widget;
2162 elm_object_item_content_part_set(Elm_Object_Item *it,
2164 Evas_Object *content)
2166 elm_widget_item_content_part_set(it, part, content);
2170 elm_object_item_content_part_get(const Elm_Object_Item *it,
2173 return elm_widget_item_content_part_get(it, part);
2177 elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part)
2179 return elm_widget_item_content_part_unset(it, part);
2183 elm_object_item_text_part_set(Elm_Object_Item *it,
2187 elm_widget_item_text_part_set(it, part, label);
2191 elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part)
2193 return elm_widget_item_text_part_get(it, part);
2197 elm_object_item_data_get(const Elm_Object_Item *it)
2199 return elm_widget_item_data_get(it);
2203 elm_object_item_data_set(Elm_Object_Item *it, void *data)
2205 elm_widget_item_data_set(it, data);
2209 elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source)
2211 elm_widget_item_signal_emit(it, emission, source);
2215 elm_object_access_info_set(Evas_Object *obj, const char *txt)
2217 elm_widget_access_info_set(obj, txt);
2221 elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
2223 _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt);