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_imf_shutdown();
461 ecore_evas_shutdown();
462 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
463 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
464 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
465 ENGINE_COMPARE(ELM_XRENDER_X11) ||
466 ENGINE_COMPARE(ELM_OPENGL_X11))
467 #undef ENGINE_COMPARE
469 #ifdef HAVE_ELEMENTARY_X
470 ecore_x_disconnect();
473 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
474 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
475 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
476 ENGINE_COMPARE(ELM_XRENDER_X11) ||
477 ENGINE_COMPARE(ELM_OPENGL_X11) ||
478 ENGINE_COMPARE(ELM_SOFTWARE_SDL) ||
479 ENGINE_COMPARE(ELM_SOFTWARE_16_SDL) ||
480 ENGINE_COMPARE(ELM_OPENGL_SDL) ||
481 ENGINE_COMPARE(ELM_SOFTWARE_WIN32) ||
482 ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
483 #undef ENGINE_COMPARE
484 evas_cserve_disconnect();
488 return _elm_sub_init_count;
492 elm_quicklaunch_shutdown(void)
494 _elm_ql_init_count--;
495 if (_elm_ql_init_count > 0) return _elm_ql_init_count;
496 if (pfx) eina_prefix_free(pfx);
498 eina_stringshare_del(_elm_data_dir);
499 _elm_data_dir = NULL;
500 eina_stringshare_del(_elm_lib_dir);
506 _elm_config_shutdown();
508 ecore_event_handler_del(_elm_exit_handler);
509 _elm_exit_handler = NULL;
511 _elm_theme_shutdown();
512 _elm_unneed_efreet();
513 _elm_unneed_e_dbus();
514 _elm_unneed_ethumb();
516 ecore_file_shutdown();
518 #ifdef HAVE_ELEMENTARY_EMAP
525 if ((_elm_log_dom > -1) && (_elm_log_dom != EINA_LOG_DOMAIN_GLOBAL))
527 eina_log_domain_unregister(_elm_log_dom);
531 _elm_widget_type_clear();
534 return _elm_ql_init_count;
538 elm_quicklaunch_seed(void)
540 #ifndef SEMI_BROKEN_QUICKLAUNCH
543 Evas_Object *win, *bg, *bt;
545 win = elm_win_add(NULL, "seed", ELM_WIN_BASIC);
546 bg = elm_bg_add(win);
547 elm_win_resize_object_add(win, bg);
548 evas_object_show(bg);
549 bt = elm_button_add(win);
550 elm_button_label_set(bt, " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~-_=+\\|]}[{;:'\",<.>/?");
551 elm_win_resize_object_add(win, bt);
552 ecore_main_loop_iterate();
553 evas_object_del(win);
554 ecore_main_loop_iterate();
555 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
556 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
557 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
558 ENGINE_COMPARE(ELM_XRENDER_X11) ||
559 ENGINE_COMPARE(ELM_OPENGL_X11))
560 #undef ENGINE_COMPARE
562 # ifdef HAVE_ELEMENTARY_X
566 ecore_main_loop_iterate();
571 static void *qr_handle = NULL;
572 static int (*qr_main)(int argc,
576 elm_quicklaunch_prepare(int argc __UNUSED__,
580 char *exe = elm_quicklaunch_exe_path_get(argv[0]);
583 ERR("requested quicklaunch binary '%s' does not exist\n", argv[0]);
591 exe2 = malloc(strlen(exe) + 1 + 10);
593 p = strrchr(exe2, '/');
596 exename = alloca(strlen(p) + 1);
599 strcat(p, "../lib/");
602 if (!access(exe2, R_OK | X_OK))
610 qr_handle = dlopen(exe, RTLD_NOW | RTLD_GLOBAL);
613 fprintf(stderr, "dlerr: %s\n", dlerror());
614 WRN("dlopen('%s') failed: %s", exe, dlerror());
618 INF("dlopen('%s') = %p", exe, qr_handle);
619 qr_main = dlsym(qr_handle, "elm_main");
620 INF("dlsym(%p, 'elm_main') = %p", qr_handle, qr_main);
623 WRN("not quicklauncher capable: no elm_main in '%s'", exe);
642 extern char **environ;
647 for (i = 0, size = 0; environ[i]; i++)
648 size += strlen(environ[i]) + 1;
650 p = malloc((i + 1) * sizeof(char *));
655 for (i = 0; oldenv[i]; i++)
656 environ[i] = strdup(oldenv[i]);
663 elm_quicklaunch_fork(int argc,
666 void (postfork_func) (void *data),
676 // need to accept current environment from elementary_run
683 if (child > 0) return EINA_TRUE;
686 perror("could not fork");
691 perror("could not chdir");
692 args = alloca((argc + 1) * sizeof(char *));
693 for (i = 0; i < argc; i++) args[i] = argv[i];
695 WRN("%s not quicklaunch capable, fallback...", argv[0]);
696 execvp(argv[0], args);
697 ERR("failed to execute '%s': %s", argv[0], strerror(errno));
701 if (child > 0) return EINA_TRUE;
704 perror("could not fork");
707 if (postfork_func) postfork_func(postfork_data);
711 #ifdef SEMI_BROKEN_QUICKLAUNCH
712 ecore_app_args_set(argc, (const char **)argv);
715 _elm_config_sub_init();
716 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
717 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
718 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
719 ENGINE_COMPARE(ELM_XRENDER_X11) ||
720 ENGINE_COMPARE(ELM_OPENGL_X11))
721 #undef ENGINE_COMPARE
723 # ifdef HAVE_ELEMENTARY_X
727 ecore_evas_init(); // FIXME: check errors
735 perror("could not chdir");
736 // FIXME: this is very linux specific. it changes argv[0] of the process
737 // so ps etc. report what you'd expect. for other unixes and os's this
744 ecore_app_args_get(&real_argc, &real_argv);
745 lastarg = real_argv[real_argc - 1] + strlen(real_argv[real_argc - 1]);
746 for (p = real_argv[0]; p < lastarg; p++) *p = 0;
747 strcpy(real_argv[0], argv[0]);
749 ecore_app_args_set(argc, (const char **)argv);
750 ret = qr_main(argc, argv);
764 elm_quicklaunch_cleanup(void)
777 elm_quicklaunch_fallback(int argc,
781 elm_quicklaunch_init(argc, argv);
782 elm_quicklaunch_sub_init(argc, argv);
783 elm_quicklaunch_prepare(argc, argv);
784 ret = qr_main(argc, argv);
790 elm_quicklaunch_exe_path_get(const char *exe)
792 static char *path = NULL;
793 static Eina_List *pathlist = NULL;
797 if (exe[0] == '/') return strdup(exe);
798 if ((exe[0] == '.') && (exe[1] == '/')) return strdup(exe);
799 if ((exe[0] == '.') && (exe[1] == '.') && (exe[2] == '/')) return strdup(exe);
804 path = getenv("PATH");
805 buf2 = alloca(strlen(path) + 1);
810 if ((*p == ':') || (!*p))
815 strncpy(buf2, pp, len);
817 pathlist = eina_list_append(pathlist, eina_stringshare_add(buf2));
829 EINA_LIST_FOREACH(pathlist, l, pathitr)
831 snprintf(buf, sizeof(buf), "%s/%s", pathitr, exe);
832 if (!access(buf, R_OK | X_OK)) return strdup(buf);
840 ecore_main_loop_begin();
846 ecore_main_loop_quit();
850 elm_policy_set(unsigned int policy,
853 Elm_Event_Policy_Changed *ev;
855 if (policy >= ELM_POLICY_LAST)
858 if (value == _elm_policies[policy])
861 /* TODO: validade policy? */
863 ev = malloc(sizeof(*ev));
865 ev->new_value = value;
866 ev->old_value = _elm_policies[policy];
868 _elm_policies[policy] = value;
870 ecore_event_add(ELM_EVENT_POLICY_CHANGED, ev, NULL, NULL);
876 elm_policy_get(unsigned int policy)
878 if (policy >= ELM_POLICY_LAST)
880 return _elm_policies[policy];
884 elm_language_set(const char *lang)
886 setlocale(LC_ALL, lang);
887 _elm_win_translate();
891 elm_object_mirrored_get(const Evas_Object *obj)
893 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
894 return elm_widget_mirrored_get(obj);
898 elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored)
900 EINA_SAFETY_ON_NULL_RETURN(obj);
901 elm_widget_mirrored_set(obj, mirrored);
905 elm_object_mirrored_automatic_get(const Evas_Object *obj)
907 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
908 return elm_widget_mirrored_automatic_get(obj);
912 elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic)
914 EINA_SAFETY_ON_NULL_RETURN(obj);
915 elm_widget_mirrored_automatic_set(obj, automatic);
919 elm_object_scale_set(Evas_Object *obj,
922 EINA_SAFETY_ON_NULL_RETURN(obj);
923 elm_widget_scale_set(obj, scale);
927 elm_object_scale_get(const Evas_Object *obj)
929 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0.0);
930 return elm_widget_scale_get(obj);
934 elm_object_text_part_set(Evas_Object *obj, const char *part, const char *label)
936 EINA_SAFETY_ON_NULL_RETURN(obj);
937 elm_widget_text_part_set(obj, part, label);
941 elm_object_text_part_get(const Evas_Object *obj, const char *part)
943 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
944 return elm_widget_text_part_get(obj, part);
948 elm_object_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text)
950 EINA_SAFETY_ON_NULL_RETURN(obj);
951 elm_widget_domain_translatable_text_part_set(obj, part, domain, text);
955 elm_object_translatable_text_part_get(const Evas_Object *obj, const char *part)
957 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
958 return elm_widget_translatable_text_part_get(obj, part);
962 elm_object_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content)
964 EINA_SAFETY_ON_NULL_RETURN(obj);
965 elm_widget_content_part_set(obj, part, content);
969 elm_object_content_part_get(const Evas_Object *obj, const char *part)
971 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
972 return elm_widget_content_part_get(obj, part);
976 elm_object_content_part_unset(Evas_Object *obj, const char *part)
978 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
979 return elm_widget_content_part_unset(obj, part);
985 return _elm_config->scale;
989 elm_scale_set(double scale)
991 if (_elm_config->scale == scale) return;
992 _elm_config->scale = scale;
997 elm_scale_all_set(double scale)
999 #ifdef HAVE_ELEMENTARY_X
1000 static Ecore_X_Atom atom = 0;
1001 unsigned int scale_i = (unsigned int)(scale * 1000.0);
1003 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_SCALE");
1004 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1010 elm_password_show_last_get(void)
1012 return _elm_config->password_show_last;
1016 elm_password_show_last_set(Eina_Bool password_show_last)
1018 if (_elm_config->password_show_last == password_show_last) return;
1019 _elm_config->password_show_last = password_show_last;
1020 edje_password_show_last_set(_elm_config->password_show_last);
1024 elm_password_show_last_timeout_get(void)
1026 return _elm_config->password_show_last_timeout;
1030 elm_password_show_last_timeout_set(double password_show_last_timeout)
1032 if (_elm_config->password_show_last_timeout == password_show_last_timeout) return;
1033 _elm_config->password_show_last_timeout = password_show_last_timeout;
1034 edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout);
1038 elm_object_style_set(Evas_Object *obj,
1041 EINA_SAFETY_ON_NULL_RETURN(obj);
1042 elm_widget_style_set(obj, style);
1046 elm_object_style_get(const Evas_Object *obj)
1048 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1049 return elm_widget_style_get(obj);
1053 elm_object_disabled_set(Evas_Object *obj,
1056 EINA_SAFETY_ON_NULL_RETURN(obj);
1057 elm_widget_disabled_set(obj, disabled);
1061 elm_object_disabled_get(const Evas_Object *obj)
1063 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1064 return elm_widget_disabled_get(obj);
1068 elm_config_save(void)
1070 return _elm_config_save();
1074 elm_config_reload(void)
1076 _elm_config_reload();
1080 elm_profile_current_get(void)
1082 return _elm_config_current_profile_get();
1086 elm_profile_dir_get(const char *profile,
1089 return _elm_config_profile_dir_get(profile, is_user);
1093 elm_profile_dir_free(const char *p_dir)
1095 free((void *)p_dir);
1099 elm_profile_list_get(void)
1101 return _elm_config_profiles_list();
1105 elm_profile_list_free(Eina_List *l)
1109 EINA_LIST_FREE(l, dir)
1110 eina_stringshare_del(dir);
1114 elm_profile_set(const char *profile)
1116 EINA_SAFETY_ON_NULL_RETURN(profile);
1117 _elm_config_profile_set(profile);
1121 elm_profile_all_set(const char *profile)
1123 #ifdef HAVE_ELEMENTARY_X
1124 static Ecore_X_Atom atom = 0;
1126 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_PROFILE");
1127 ecore_x_window_prop_string_set(ecore_x_window_root_first_get(),
1133 elm_engine_current_get(void)
1135 return _elm_config->engine;
1139 elm_engine_set(const char *engine)
1141 EINA_SAFETY_ON_NULL_RETURN(engine);
1143 _elm_config_engine_set(engine);
1146 EAPI const Eina_List *
1147 elm_text_classes_list_get(void)
1149 return _elm_config_text_classes_get();
1153 elm_text_classes_list_free(const Eina_List *list)
1155 _elm_config_text_classes_free((Eina_List *)list);
1158 EAPI const Eina_List *
1159 elm_font_overlay_list_get(void)
1161 return _elm_config_font_overlays_list();
1165 elm_font_overlay_set(const char *text_class,
1167 Evas_Font_Size size)
1169 _elm_config_font_overlay_set(text_class, font, size);
1173 elm_font_overlay_unset(const char *text_class)
1175 _elm_config_font_overlay_remove(text_class);
1179 elm_font_overlay_apply(void)
1181 _elm_config_font_overlay_apply();
1185 elm_font_overlay_all_apply(void)
1187 #ifdef HAVE_ELEMENTARY_X
1188 static Ecore_X_Atom atom = 0;
1189 unsigned int dummy = (unsigned int)(1 * 1000.0);
1191 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FONT_OVERLAY");
1192 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(), atom, &dummy,
1197 EAPI Elm_Font_Properties *
1198 elm_font_properties_get(const char *font)
1200 EINA_SAFETY_ON_NULL_RETURN_VAL(font, NULL);
1201 return _elm_font_properties_get(NULL, font);
1205 elm_font_properties_free(Elm_Font_Properties *efp)
1209 EINA_SAFETY_ON_NULL_RETURN(efp);
1210 EINA_LIST_FREE(efp->styles, str)
1211 if (str) eina_stringshare_del(str);
1212 if (efp->name) eina_stringshare_del(efp->name);
1217 elm_font_fontconfig_name_get(const char *name,
1222 EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
1223 if (!style || style[0] == 0) return eina_stringshare_add(name);
1224 snprintf(buf, 256, "%s" ELM_FONT_TOKEN_STYLE "%s", name, style);
1225 return eina_stringshare_add(buf);
1229 elm_font_fontconfig_name_free(const char *name)
1231 eina_stringshare_del(name);
1235 elm_font_available_hash_add(Eina_List *list)
1237 Eina_Hash *font_hash;
1243 /* populate with default font families */
1244 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Regular");
1245 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Bold");
1246 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Oblique");
1247 font_hash = _elm_font_available_hash_add(font_hash,
1248 "Sans:style=Bold Oblique");
1250 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Regular");
1251 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Bold");
1252 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Oblique");
1253 font_hash = _elm_font_available_hash_add(font_hash,
1254 "Serif:style=Bold Oblique");
1256 font_hash = _elm_font_available_hash_add(font_hash,
1257 "Monospace:style=Regular");
1258 font_hash = _elm_font_available_hash_add(font_hash,
1259 "Monospace:style=Bold");
1260 font_hash = _elm_font_available_hash_add(font_hash,
1261 "Monospace:style=Oblique");
1262 font_hash = _elm_font_available_hash_add(font_hash,
1263 "Monospace:style=Bold Oblique");
1265 EINA_LIST_FOREACH(list, l, key)
1266 font_hash = _elm_font_available_hash_add(font_hash, key);
1272 elm_font_available_hash_del(Eina_Hash *hash)
1274 _elm_font_available_hash_del(hash);
1278 elm_finger_size_get(void)
1280 return _elm_config->finger_size;
1284 elm_finger_size_set(Evas_Coord size)
1286 if (_elm_config->finger_size == size) return;
1287 _elm_config->finger_size = size;
1292 elm_finger_size_all_set(Evas_Coord size)
1294 #ifdef HAVE_ELEMENTARY_X
1295 static Ecore_X_Atom atom = 0;
1296 unsigned int size_i = (unsigned int)size;
1298 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FINGER_SIZE");
1299 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1305 elm_autocapitalization_allow_all_set(Eina_Bool on)
1307 #ifdef HAVE_ELEMENTARY_X
1308 static Ecore_X_Atom atom = 0;
1309 unsigned int on_i = (unsigned int)on;
1311 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_AUTOCAPITAL_ALLOW");
1312 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1318 elm_autoperiod_allow_all_set(Eina_Bool on)
1320 #ifdef HAVE_ELEMENTARY_X
1321 static Ecore_X_Atom atom = 0;
1322 unsigned int on_i = (unsigned int)on;
1324 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_AUTOPERIOD_ALLOW");
1325 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1331 elm_coords_finger_size_adjust(int times_w,
1336 if ((w) && (*w < (_elm_config->finger_size * times_w)))
1337 *w = _elm_config->finger_size * times_w;
1338 if ((h) && (*h < (_elm_config->finger_size * times_h)))
1339 *h = _elm_config->finger_size * times_h;
1348 edje_file_cache_flush();
1349 edje_collection_cache_flush();
1351 EINA_LIST_FOREACH(_elm_win_list, l, obj)
1353 Evas *e = evas_object_evas_get(obj);
1354 evas_image_cache_flush(e);
1355 evas_font_cache_flush(e);
1356 evas_render_dump(e);
1361 elm_cache_flush_interval_get(void)
1363 return _elm_config->cache_flush_poll_interval;
1367 elm_cache_flush_interval_set(int size)
1369 if (_elm_config->cache_flush_poll_interval == size) return;
1370 _elm_config->cache_flush_poll_interval = size;
1376 elm_cache_flush_interval_all_set(int size)
1378 #ifdef HAVE_ELEMENTARY_X
1379 static Ecore_X_Atom atom = 0;
1380 unsigned int size_i = (unsigned int)size;
1382 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_INTERVAL");
1383 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1389 elm_cache_flush_enabled_get(void)
1391 return _elm_config->cache_flush_enable;
1395 elm_cache_flush_enabled_set(Eina_Bool enabled)
1397 enabled = !!enabled;
1398 if (_elm_config->cache_flush_enable == enabled) return;
1399 _elm_config->cache_flush_enable = enabled;
1405 elm_cache_flush_enabled_all_set(Eina_Bool enabled)
1407 #ifdef HAVE_ELEMENTARY_X
1408 static Ecore_X_Atom atom = 0;
1409 unsigned int enabled_i = (unsigned int)enabled;
1411 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_ENABLE");
1412 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1413 atom, &enabled_i, 1);
1418 elm_font_cache_get(void)
1420 return _elm_config->font_cache;
1424 elm_font_cache_set(int size)
1426 if (_elm_config->font_cache == size) return;
1427 _elm_config->font_cache = size;
1433 elm_font_cache_all_set(int size)
1435 #ifdef HAVE_ELEMENTARY_X
1436 static Ecore_X_Atom atom = 0;
1437 unsigned int size_i = (unsigned int)size;
1439 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FONT_CACHE");
1440 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1446 elm_image_cache_get(void)
1448 return _elm_config->image_cache;
1452 elm_image_cache_set(int size)
1454 if (_elm_config->image_cache == size) return;
1455 _elm_config->image_cache = size;
1461 elm_image_cache_all_set(int size)
1463 #ifdef HAVE_ELEMENTARY_X
1464 static Ecore_X_Atom atom = 0;
1465 unsigned int size_i = (unsigned int)size;
1467 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_IMAGE_CACHE");
1468 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1474 elm_edje_file_cache_get(void)
1476 return _elm_config->edje_cache;
1480 elm_edje_file_cache_set(int size)
1482 if (_elm_config->edje_cache == size) return;
1483 _elm_config->edje_cache = size;
1489 elm_edje_file_cache_all_set(int size)
1491 #ifdef HAVE_ELEMENTARY_X
1492 static Ecore_X_Atom atom = 0;
1493 unsigned int size_i = (unsigned int)size;
1495 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_FILE_CACHE");
1496 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1502 elm_edje_collection_cache_get(void)
1504 return _elm_config->edje_collection_cache;
1508 elm_edje_collection_cache_set(int size)
1510 if (_elm_config->edje_collection_cache == size) return;
1511 _elm_config->edje_collection_cache = size;
1517 elm_edje_collection_cache_all_set(int size)
1519 #ifdef HAVE_ELEMENTARY_X
1520 static Ecore_X_Atom atom = 0;
1521 unsigned int size_i = (unsigned int)size;
1523 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_COLLECTION_CACHE");
1524 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1530 elm_object_focus_get(const Evas_Object *obj)
1532 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1533 return elm_widget_focus_get(obj);
1537 elm_object_focus_set(Evas_Object *obj,
1540 EINA_SAFETY_ON_NULL_RETURN(obj);
1543 if (elm_widget_focus_get(obj)) return;
1544 elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
1548 if (!elm_widget_can_focus_get(obj)) return;
1549 elm_widget_focused_object_clear(obj);
1554 elm_object_focus(Evas_Object *obj)
1556 EINA_SAFETY_ON_NULL_RETURN(obj);
1557 elm_object_focus_set(obj, EINA_TRUE);
1561 elm_object_unfocus(Evas_Object *obj)
1563 EINA_SAFETY_ON_NULL_RETURN(obj);
1564 elm_object_focus_set(obj, EINA_FALSE);
1568 elm_object_focus_allow_set(Evas_Object *obj,
1571 EINA_SAFETY_ON_NULL_RETURN(obj);
1572 elm_widget_can_focus_set(obj, enable);
1576 elm_object_focus_allow_get(const Evas_Object *obj)
1578 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1579 return (elm_widget_can_focus_get(obj)) || (elm_widget_child_can_focus_get(obj));
1583 elm_object_focus_custom_chain_set(Evas_Object *obj,
1586 EINA_SAFETY_ON_NULL_RETURN(obj);
1587 elm_widget_focus_custom_chain_set(obj, objs);
1591 elm_object_focus_custom_chain_unset(Evas_Object *obj)
1593 EINA_SAFETY_ON_NULL_RETURN(obj);
1594 elm_widget_focus_custom_chain_unset(obj);
1597 EAPI const Eina_List *
1598 elm_object_focus_custom_chain_get(const Evas_Object *obj)
1600 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1601 return elm_widget_focus_custom_chain_get(obj);
1605 elm_object_focus_custom_chain_append(Evas_Object *obj,
1607 Evas_Object *relative_child)
1609 EINA_SAFETY_ON_NULL_RETURN(obj);
1610 EINA_SAFETY_ON_NULL_RETURN(child);
1611 elm_widget_focus_custom_chain_append(obj, child, relative_child);
1615 elm_object_focus_custom_chain_prepend(Evas_Object *obj,
1617 Evas_Object *relative_child)
1619 EINA_SAFETY_ON_NULL_RETURN(obj);
1620 EINA_SAFETY_ON_NULL_RETURN(child);
1621 elm_widget_focus_custom_chain_prepend(obj, child, relative_child);
1625 elm_object_focus_cycle(Evas_Object *obj,
1626 Elm_Focus_Direction dir)
1628 EINA_SAFETY_ON_NULL_RETURN(obj);
1629 elm_widget_focus_cycle(obj, dir);
1633 elm_object_focus_direction_go(Evas_Object *obj,
1637 EINA_SAFETY_ON_NULL_RETURN(obj);
1638 elm_widget_focus_direction_go(obj, x, y);
1642 elm_object_tree_unfocusable_set(Evas_Object *obj,
1643 Eina_Bool tree_unfocusable)
1645 EINA_SAFETY_ON_NULL_RETURN(obj);
1646 elm_widget_tree_unfocusable_set(obj, tree_unfocusable);
1650 elm_object_tree_unfocusable_get(const Evas_Object *obj)
1652 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1653 return elm_widget_tree_unfocusable_get(obj);
1657 elm_focus_highlight_enabled_get(void)
1659 return _elm_config->focus_highlight_enable;
1663 elm_focus_highlight_enabled_set(Eina_Bool enable)
1665 _elm_config->focus_highlight_enable = !!enable;
1669 elm_focus_highlight_animate_get(void)
1671 return _elm_config->focus_highlight_animate;
1675 elm_focus_highlight_animate_set(Eina_Bool animate)
1677 _elm_config->focus_highlight_animate = !!animate;
1681 elm_scroll_bounce_enabled_get(void)
1683 return _elm_config->thumbscroll_bounce_enable;
1687 elm_scroll_bounce_enabled_set(Eina_Bool enabled)
1689 _elm_config->thumbscroll_bounce_enable = enabled;
1693 elm_scroll_bounce_enabled_all_set(Eina_Bool enabled)
1695 #ifdef HAVE_ELEMENTARY_X
1696 static Ecore_X_Atom atom = 0;
1697 unsigned int bounce_enable_i = (unsigned int)enabled;
1700 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_ENABLE");
1701 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1702 atom, &bounce_enable_i, 1);
1707 elm_scroll_bounce_friction_get(void)
1709 return _elm_config->thumbscroll_bounce_friction;
1713 elm_scroll_bounce_friction_set(double friction)
1715 _elm_config->thumbscroll_bounce_friction = friction;
1719 elm_scroll_bounce_friction_all_set(double friction)
1721 #ifdef HAVE_ELEMENTARY_X
1722 static Ecore_X_Atom atom = 0;
1723 unsigned int bounce_friction_i = (unsigned int)(friction * 1000.0);
1726 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_FRICTION");
1727 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1728 atom, &bounce_friction_i, 1);
1733 elm_scroll_page_scroll_friction_get(void)
1735 return _elm_config->page_scroll_friction;
1739 elm_scroll_page_scroll_friction_set(double friction)
1741 _elm_config->page_scroll_friction = friction;
1745 elm_scroll_page_scroll_friction_all_set(double friction)
1747 #ifdef HAVE_ELEMENTARY_X
1748 static Ecore_X_Atom atom = 0;
1749 unsigned int page_scroll_friction_i = (unsigned int)(friction * 1000.0);
1752 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_PAGE_SCROLL_FRICTION");
1753 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1754 atom, &page_scroll_friction_i, 1);
1759 elm_scroll_bring_in_scroll_friction_get(void)
1761 return _elm_config->bring_in_scroll_friction;
1765 elm_scroll_bring_in_scroll_friction_set(double friction)
1767 _elm_config->bring_in_scroll_friction = friction;
1771 elm_scroll_bring_in_scroll_friction_all_set(double friction)
1773 #ifdef HAVE_ELEMENTARY_X
1774 static Ecore_X_Atom atom = 0;
1775 unsigned int bring_in_scroll_friction_i = (unsigned int)(friction * 1000.0);
1779 ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BRING_IN_SCROLL_FRICTION");
1780 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1781 atom, &bring_in_scroll_friction_i, 1);
1786 elm_scroll_zoom_friction_get(void)
1788 return _elm_config->zoom_friction;
1792 elm_scroll_zoom_friction_set(double friction)
1794 _elm_config->zoom_friction = friction;
1798 elm_scroll_zoom_friction_all_set(double friction)
1800 #ifdef HAVE_ELEMENTARY_X
1801 static Ecore_X_Atom atom = 0;
1802 unsigned int zoom_friction_i = (unsigned int)(friction * 1000.0);
1805 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ZOOM_FRICTION");
1806 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1807 atom, &zoom_friction_i, 1);
1812 elm_scroll_thumbscroll_enabled_get(void)
1814 return _elm_config->thumbscroll_enable;
1818 elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled)
1820 _elm_config->thumbscroll_enable = enabled;
1824 elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled)
1826 #ifdef HAVE_ELEMENTARY_X
1827 static Ecore_X_Atom atom = 0;
1828 unsigned int ts_enable_i = (unsigned int)enabled;
1830 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ENABLE");
1831 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1832 atom, &ts_enable_i, 1);
1837 elm_scroll_thumbscroll_threshold_get(void)
1839 return _elm_config->thumbscroll_threshold;
1843 elm_scroll_thumbscroll_threshold_set(unsigned int threshold)
1845 _elm_config->thumbscroll_threshold = threshold;
1849 elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold)
1851 #ifdef HAVE_ELEMENTARY_X
1852 static Ecore_X_Atom atom = 0;
1853 unsigned int ts_threshold_i = (unsigned int)threshold;
1855 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_THRESHOLD");
1856 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1857 atom, &ts_threshold_i, 1);
1862 elm_scroll_thumbscroll_momentum_threshold_get(void)
1864 return _elm_config->thumbscroll_momentum_threshold;
1868 elm_scroll_thumbscroll_momentum_threshold_set(double threshold)
1870 _elm_config->thumbscroll_momentum_threshold = threshold;
1874 elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold)
1876 #ifdef HAVE_ELEMENTARY_X
1877 static Ecore_X_Atom atom = 0;
1878 unsigned int ts_momentum_threshold_i = (unsigned int)(threshold * 1000.0);
1881 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_MOMENTUM_THRESHOLD");
1882 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1883 atom, &ts_momentum_threshold_i, 1);
1888 elm_scroll_thumbscroll_friction_get(void)
1890 return _elm_config->thumbscroll_friction;
1894 elm_scroll_thumbscroll_friction_set(double friction)
1896 _elm_config->thumbscroll_friction = friction;
1900 elm_scroll_thumbscroll_friction_all_set(double friction)
1902 #ifdef HAVE_ELEMENTARY_X
1903 static Ecore_X_Atom atom = 0;
1904 unsigned int ts_friction_i = (unsigned int)(friction * 1000.0);
1906 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_FRICTION");
1907 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1908 atom, &ts_friction_i, 1);
1913 elm_scroll_thumbscroll_border_friction_get(void)
1915 return _elm_config->thumbscroll_border_friction;
1919 elm_scroll_thumbscroll_border_friction_set(double friction)
1927 _elm_config->thumbscroll_friction = friction;
1931 elm_scroll_thumbscroll_border_friction_all_set(double friction)
1939 #ifdef HAVE_ELEMENTARY_X
1940 static Ecore_X_Atom atom = 0;
1941 unsigned int border_friction_i = (unsigned int)(friction * 1000.0);
1944 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BORDER_FRICTION");
1945 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1946 atom, &border_friction_i, 1);
1951 elm_scroll_thumbscroll_sensitivity_friction_get(void)
1953 return _elm_config->thumbscroll_sensitivity_friction;
1957 elm_scroll_thumbscroll_sensitivity_friction_set(double friction)
1965 _elm_config->thumbscroll_friction = friction;
1969 elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction)
1977 #ifdef HAVE_ELEMENTARY_X
1978 static Ecore_X_Atom atom = 0;
1979 unsigned int sensitivity_friction_i = (unsigned int)(friction * 1000.0);
1982 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_SENSITIVITY_FRICTION");
1983 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1984 atom, &sensitivity_friction_i, 1);
1989 elm_object_scroll_hold_push(Evas_Object *obj)
1991 EINA_SAFETY_ON_NULL_RETURN(obj);
1992 elm_widget_scroll_hold_push(obj);
1996 elm_object_scroll_hold_pop(Evas_Object *obj)
1998 EINA_SAFETY_ON_NULL_RETURN(obj);
1999 elm_widget_scroll_hold_pop(obj);
2003 elm_object_scroll_freeze_push(Evas_Object *obj)
2005 EINA_SAFETY_ON_NULL_RETURN(obj);
2006 elm_widget_scroll_freeze_push(obj);
2010 elm_object_scroll_lock_x_set(Evas_Object *obj,
2013 EINA_SAFETY_ON_NULL_RETURN(obj);
2014 elm_widget_drag_lock_x_set(obj, lock);
2018 elm_object_scroll_lock_y_set(Evas_Object *obj,
2021 EINA_SAFETY_ON_NULL_RETURN(obj);
2022 elm_widget_drag_lock_y_set(obj, lock);
2026 elm_object_scroll_lock_x_get(const Evas_Object *obj)
2028 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2029 return elm_widget_drag_lock_x_get(obj);
2033 elm_object_scroll_lock_y_get(const Evas_Object *obj)
2035 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2036 return elm_widget_drag_lock_y_get(obj);
2040 elm_object_scroll_freeze_pop(Evas_Object *obj)
2042 EINA_SAFETY_ON_NULL_RETURN(obj);
2043 elm_widget_scroll_freeze_pop(obj);
2047 elm_object_widget_check(const Evas_Object *obj)
2049 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2050 return elm_widget_is(obj);
2054 elm_object_parent_widget_get(const Evas_Object *obj)
2056 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2057 return elm_widget_parent_widget_get(obj);
2061 elm_object_top_widget_get(const Evas_Object *obj)
2063 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2064 return elm_widget_top_get(obj);
2068 elm_object_widget_type_get(const Evas_Object *obj)
2070 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2071 return elm_widget_type_get(obj);
2075 elm_object_signal_emit(Evas_Object *obj,
2076 const char *emission,
2079 EINA_SAFETY_ON_NULL_RETURN(obj);
2080 elm_widget_signal_emit(obj, emission, source);
2084 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)
2086 EINA_SAFETY_ON_NULL_RETURN(obj);
2087 EINA_SAFETY_ON_NULL_RETURN(func);
2088 elm_widget_signal_callback_add(obj, emission, source, func, data);
2092 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))
2094 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2095 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
2096 return elm_widget_signal_callback_del(obj, emission, source, func);
2100 elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data)
2102 EINA_SAFETY_ON_NULL_RETURN(obj);
2103 EINA_SAFETY_ON_NULL_RETURN(func);
2104 elm_widget_event_callback_add(obj, func, data);
2108 elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data)
2110 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2111 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
2112 return elm_widget_event_callback_del(obj, func, data);
2116 elm_object_tree_dump(const Evas_Object *top)
2119 elm_widget_tree_dump(top);
2127 elm_object_tree_dot_dump(const Evas_Object *top,
2131 FILE *f = fopen(file, "wb");
2132 elm_widget_tree_dot_dump(top, f);
2142 elm_longpress_timeout_set(double longpress_timeout)
2144 _elm_config->longpress_timeout = longpress_timeout;
2148 elm_longpress_timeout_get(void)
2150 return _elm_config->longpress_timeout;
2154 elm_object_item_object_get(const Elm_Object_Item *it)
2156 return ((Elm_Widget_Item *) it)->widget;
2160 elm_object_item_content_part_set(Elm_Object_Item *it,
2162 Evas_Object *content)
2164 elm_widget_item_content_part_set(it, part, content);
2168 elm_object_item_content_part_get(const Elm_Object_Item *it,
2171 return elm_widget_item_content_part_get(it, part);
2175 elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part)
2177 return elm_widget_item_content_part_unset(it, part);
2181 elm_object_item_text_part_set(Elm_Object_Item *it,
2185 elm_widget_item_text_part_set(it, part, label);
2189 elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part)
2191 return elm_widget_item_text_part_get(it, part);
2195 elm_object_item_data_get(const Elm_Object_Item *it)
2197 return elm_widget_item_data_get(it);
2201 elm_object_item_data_set(Elm_Object_Item *it, void *data)
2203 elm_widget_item_data_set(it, data);
2207 elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source)
2209 elm_widget_item_signal_emit(it, emission, source);