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_OPENGL_COCOA) ||
484 ENGINE_COMPARE(ELM_SOFTWARE_WIN32) ||
485 ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
486 #undef ENGINE_COMPARE
487 evas_cserve_disconnect();
491 return _elm_sub_init_count;
495 elm_quicklaunch_shutdown(void)
497 _elm_ql_init_count--;
498 if (_elm_ql_init_count > 0) return _elm_ql_init_count;
499 if (pfx) eina_prefix_free(pfx);
501 eina_stringshare_del(_elm_data_dir);
502 _elm_data_dir = NULL;
503 eina_stringshare_del(_elm_lib_dir);
509 _elm_config_shutdown();
511 ecore_event_handler_del(_elm_exit_handler);
512 _elm_exit_handler = NULL;
514 _elm_theme_shutdown();
515 _elm_unneed_efreet();
516 _elm_unneed_e_dbus();
517 _elm_unneed_ethumb();
519 ecore_file_shutdown();
521 #ifdef HAVE_ELEMENTARY_EMAP
528 if ((_elm_log_dom > -1) && (_elm_log_dom != EINA_LOG_DOMAIN_GLOBAL))
530 eina_log_domain_unregister(_elm_log_dom);
534 _elm_widget_type_clear();
537 return _elm_ql_init_count;
541 elm_quicklaunch_seed(void)
543 #ifndef SEMI_BROKEN_QUICKLAUNCH
546 Evas_Object *win, *bg, *bt;
548 win = elm_win_add(NULL, "seed", ELM_WIN_BASIC);
549 bg = elm_bg_add(win);
550 elm_win_resize_object_add(win, bg);
551 evas_object_show(bg);
552 bt = elm_button_add(win);
553 elm_button_label_set(bt, " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~-_=+\\|]}[{;:'\",<.>/?");
554 elm_win_resize_object_add(win, bt);
555 ecore_main_loop_iterate();
556 evas_object_del(win);
557 ecore_main_loop_iterate();
558 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
559 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
560 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
561 ENGINE_COMPARE(ELM_XRENDER_X11) ||
562 ENGINE_COMPARE(ELM_OPENGL_X11))
563 #undef ENGINE_COMPARE
565 # ifdef HAVE_ELEMENTARY_X
569 ecore_main_loop_iterate();
574 static void *qr_handle = NULL;
575 static int (*qr_main)(int argc,
579 elm_quicklaunch_prepare(int argc __UNUSED__,
583 char *exe = elm_quicklaunch_exe_path_get(argv[0]);
586 ERR("requested quicklaunch binary '%s' does not exist\n", argv[0]);
594 exe2 = malloc(strlen(exe) + 1 + 10);
596 p = strrchr(exe2, '/');
599 exename = alloca(strlen(p) + 1);
602 strcat(p, "../lib/");
605 if (!access(exe2, R_OK | X_OK))
613 qr_handle = dlopen(exe, RTLD_NOW | RTLD_GLOBAL);
616 fprintf(stderr, "dlerr: %s\n", dlerror());
617 WRN("dlopen('%s') failed: %s", exe, dlerror());
621 INF("dlopen('%s') = %p", exe, qr_handle);
622 qr_main = dlsym(qr_handle, "elm_main");
623 INF("dlsym(%p, 'elm_main') = %p", qr_handle, qr_main);
626 WRN("not quicklauncher capable: no elm_main in '%s'", exe);
645 extern char **environ;
650 for (i = 0, size = 0; environ[i]; i++)
651 size += strlen(environ[i]) + 1;
653 p = malloc((i + 1) * sizeof(char *));
658 for (i = 0; oldenv[i]; i++)
659 environ[i] = strdup(oldenv[i]);
666 elm_quicklaunch_fork(int argc,
669 void (postfork_func) (void *data),
679 // need to accept current environment from elementary_run
686 if (child > 0) return EINA_TRUE;
689 perror("could not fork");
694 perror("could not chdir");
695 args = alloca((argc + 1) * sizeof(char *));
696 for (i = 0; i < argc; i++) args[i] = argv[i];
698 WRN("%s not quicklaunch capable, fallback...", argv[0]);
699 execvp(argv[0], args);
700 ERR("failed to execute '%s': %s", argv[0], strerror(errno));
704 if (child > 0) return EINA_TRUE;
707 perror("could not fork");
710 if (postfork_func) postfork_func(postfork_data);
714 #ifdef SEMI_BROKEN_QUICKLAUNCH
715 ecore_app_args_set(argc, (const char **)argv);
718 _elm_config_sub_init();
719 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
720 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
721 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
722 ENGINE_COMPARE(ELM_XRENDER_X11) ||
723 ENGINE_COMPARE(ELM_OPENGL_X11))
724 #undef ENGINE_COMPARE
726 # ifdef HAVE_ELEMENTARY_X
730 ecore_evas_init(); // FIXME: check errors
738 perror("could not chdir");
739 // FIXME: this is very linux specific. it changes argv[0] of the process
740 // so ps etc. report what you'd expect. for other unixes and os's this
747 ecore_app_args_get(&real_argc, &real_argv);
748 lastarg = real_argv[real_argc - 1] + strlen(real_argv[real_argc - 1]);
749 for (p = real_argv[0]; p < lastarg; p++) *p = 0;
750 strcpy(real_argv[0], argv[0]);
752 ecore_app_args_set(argc, (const char **)argv);
753 ret = qr_main(argc, argv);
767 elm_quicklaunch_cleanup(void)
780 elm_quicklaunch_fallback(int argc,
784 elm_quicklaunch_init(argc, argv);
785 elm_quicklaunch_sub_init(argc, argv);
786 elm_quicklaunch_prepare(argc, argv);
787 ret = qr_main(argc, argv);
793 elm_quicklaunch_exe_path_get(const char *exe)
795 static char *path = NULL;
796 static Eina_List *pathlist = NULL;
800 if (exe[0] == '/') return strdup(exe);
801 if ((exe[0] == '.') && (exe[1] == '/')) return strdup(exe);
802 if ((exe[0] == '.') && (exe[1] == '.') && (exe[2] == '/')) return strdup(exe);
807 path = getenv("PATH");
808 buf2 = alloca(strlen(path) + 1);
813 if ((*p == ':') || (!*p))
818 strncpy(buf2, pp, len);
820 pathlist = eina_list_append(pathlist, eina_stringshare_add(buf2));
832 EINA_LIST_FOREACH(pathlist, l, pathitr)
834 snprintf(buf, sizeof(buf), "%s/%s", pathitr, exe);
835 if (!access(buf, R_OK | X_OK)) return strdup(buf);
843 ecore_main_loop_begin();
849 ecore_main_loop_quit();
853 elm_policy_set(unsigned int policy,
856 Elm_Event_Policy_Changed *ev;
858 if (policy >= ELM_POLICY_LAST)
861 if (value == _elm_policies[policy])
864 /* TODO: validade policy? */
866 ev = malloc(sizeof(*ev));
868 ev->new_value = value;
869 ev->old_value = _elm_policies[policy];
871 _elm_policies[policy] = value;
873 ecore_event_add(ELM_EVENT_POLICY_CHANGED, ev, NULL, NULL);
879 elm_policy_get(unsigned int policy)
881 if (policy >= ELM_POLICY_LAST)
883 return _elm_policies[policy];
887 elm_language_set(const char *lang)
889 setlocale(LC_ALL, lang);
890 _elm_win_translate();
894 elm_object_mirrored_get(const Evas_Object *obj)
896 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
897 return elm_widget_mirrored_get(obj);
901 elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored)
903 EINA_SAFETY_ON_NULL_RETURN(obj);
904 elm_widget_mirrored_set(obj, mirrored);
908 elm_object_mirrored_automatic_get(const Evas_Object *obj)
910 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
911 return elm_widget_mirrored_automatic_get(obj);
915 elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic)
917 EINA_SAFETY_ON_NULL_RETURN(obj);
918 elm_widget_mirrored_automatic_set(obj, automatic);
922 elm_object_scale_set(Evas_Object *obj,
925 EINA_SAFETY_ON_NULL_RETURN(obj);
926 elm_widget_scale_set(obj, scale);
930 elm_object_scale_get(const Evas_Object *obj)
932 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0.0);
933 return elm_widget_scale_get(obj);
937 elm_object_text_part_set(Evas_Object *obj, const char *part, const char *label)
939 EINA_SAFETY_ON_NULL_RETURN(obj);
940 elm_widget_text_part_set(obj, part, label);
944 elm_object_text_part_get(const Evas_Object *obj, const char *part)
946 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
947 return elm_widget_text_part_get(obj, part);
951 elm_object_part_text_set(Evas_Object *obj, const char *part, const char *label)
953 EINA_SAFETY_ON_NULL_RETURN(obj);
954 elm_widget_text_part_set(obj, part, label);
958 elm_object_part_text_get(const Evas_Object *obj, const char *part)
960 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
961 return elm_widget_text_part_get(obj, part);
965 elm_object_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text)
967 EINA_SAFETY_ON_NULL_RETURN(obj);
968 elm_widget_domain_translatable_text_part_set(obj, part, domain, text);
972 elm_object_translatable_text_part_get(const Evas_Object *obj, const char *part)
974 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
975 return elm_widget_translatable_text_part_get(obj, part);
979 elm_object_part_content_set(Evas_Object *obj, const char *part, Evas_Object *content)
981 EINA_SAFETY_ON_NULL_RETURN(obj);
982 elm_widget_content_part_set(obj, part, content);
986 elm_object_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content)
988 EINA_SAFETY_ON_NULL_RETURN(obj);
989 elm_widget_content_part_set(obj, part, content);
994 elm_object_part_content_get(const Evas_Object *obj, const char *part)
996 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
997 return elm_widget_content_part_get(obj, part);
1001 elm_object_content_part_get(const Evas_Object *obj, const char *part)
1003 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1004 return elm_widget_content_part_get(obj, part);
1008 elm_object_part_content_unset(Evas_Object *obj, const char *part)
1010 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1011 return elm_widget_content_part_unset(obj, part);
1016 elm_object_content_part_unset(Evas_Object *obj, const char *part)
1018 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1019 return elm_widget_content_part_unset(obj, part);
1025 return _elm_config->scale;
1029 elm_scale_set(double scale)
1031 if (_elm_config->scale == scale) return;
1032 _elm_config->scale = scale;
1037 elm_scale_all_set(double scale)
1039 #ifdef HAVE_ELEMENTARY_X
1040 static Ecore_X_Atom atom = 0;
1041 unsigned int scale_i = (unsigned int)(scale * 1000.0);
1043 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_SCALE");
1044 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1050 elm_password_show_last_get(void)
1052 return _elm_config->password_show_last;
1056 elm_password_show_last_set(Eina_Bool password_show_last)
1058 if (_elm_config->password_show_last == password_show_last) return;
1059 _elm_config->password_show_last = password_show_last;
1060 edje_password_show_last_set(_elm_config->password_show_last);
1064 elm_password_show_last_timeout_get(void)
1066 return _elm_config->password_show_last_timeout;
1070 elm_password_show_last_timeout_set(double password_show_last_timeout)
1072 if (_elm_config->password_show_last_timeout == password_show_last_timeout) return;
1073 _elm_config->password_show_last_timeout = password_show_last_timeout;
1074 edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout);
1078 elm_object_style_set(Evas_Object *obj,
1081 EINA_SAFETY_ON_NULL_RETURN(obj);
1082 elm_widget_style_set(obj, style);
1086 elm_object_style_get(const Evas_Object *obj)
1088 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1089 return elm_widget_style_get(obj);
1093 elm_object_disabled_set(Evas_Object *obj,
1096 EINA_SAFETY_ON_NULL_RETURN(obj);
1097 elm_widget_disabled_set(obj, disabled);
1101 elm_object_disabled_get(const Evas_Object *obj)
1103 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1104 return elm_widget_disabled_get(obj);
1108 elm_config_save(void)
1110 return _elm_config_save();
1114 elm_config_reload(void)
1116 _elm_config_reload();
1120 elm_profile_current_get(void)
1122 return _elm_config_current_profile_get();
1126 elm_profile_dir_get(const char *profile,
1129 return _elm_config_profile_dir_get(profile, is_user);
1133 elm_profile_dir_free(const char *p_dir)
1135 free((void *)p_dir);
1139 elm_profile_list_get(void)
1141 return _elm_config_profiles_list();
1145 elm_profile_list_free(Eina_List *l)
1149 EINA_LIST_FREE(l, dir)
1150 eina_stringshare_del(dir);
1154 elm_profile_set(const char *profile)
1156 EINA_SAFETY_ON_NULL_RETURN(profile);
1157 _elm_config_profile_set(profile);
1161 elm_profile_all_set(const char *profile)
1163 #ifdef HAVE_ELEMENTARY_X
1164 static Ecore_X_Atom atom = 0;
1166 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_PROFILE");
1167 ecore_x_window_prop_string_set(ecore_x_window_root_first_get(),
1173 elm_engine_current_get(void)
1175 return _elm_config->engine;
1179 elm_engine_set(const char *engine)
1181 EINA_SAFETY_ON_NULL_RETURN(engine);
1183 _elm_config_engine_set(engine);
1186 EAPI const Eina_List *
1187 elm_text_classes_list_get(void)
1189 return _elm_config_text_classes_get();
1193 elm_text_classes_list_free(const Eina_List *list)
1195 _elm_config_text_classes_free((Eina_List *)list);
1198 EAPI const Eina_List *
1199 elm_font_overlay_list_get(void)
1201 return _elm_config_font_overlays_list();
1205 elm_font_overlay_set(const char *text_class,
1207 Evas_Font_Size size)
1209 _elm_config_font_overlay_set(text_class, font, size);
1213 elm_font_overlay_unset(const char *text_class)
1215 _elm_config_font_overlay_remove(text_class);
1219 elm_font_overlay_apply(void)
1221 _elm_config_font_overlay_apply();
1225 elm_font_overlay_all_apply(void)
1227 #ifdef HAVE_ELEMENTARY_X
1228 static Ecore_X_Atom atom = 0;
1229 unsigned int dummy = (unsigned int)(1 * 1000.0);
1231 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FONT_OVERLAY");
1232 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(), atom, &dummy,
1237 EAPI Elm_Font_Properties *
1238 elm_font_properties_get(const char *font)
1240 EINA_SAFETY_ON_NULL_RETURN_VAL(font, NULL);
1241 return _elm_font_properties_get(NULL, font);
1245 elm_font_properties_free(Elm_Font_Properties *efp)
1249 EINA_SAFETY_ON_NULL_RETURN(efp);
1250 EINA_LIST_FREE(efp->styles, str)
1251 if (str) eina_stringshare_del(str);
1252 if (efp->name) eina_stringshare_del(efp->name);
1257 elm_font_fontconfig_name_get(const char *name,
1262 EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
1263 if (!style || style[0] == 0) return eina_stringshare_add(name);
1264 snprintf(buf, 256, "%s" ELM_FONT_TOKEN_STYLE "%s", name, style);
1265 return eina_stringshare_add(buf);
1269 elm_font_fontconfig_name_free(const char *name)
1271 eina_stringshare_del(name);
1275 elm_font_available_hash_add(Eina_List *list)
1277 Eina_Hash *font_hash;
1283 /* populate with default font families */
1284 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Regular");
1285 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Bold");
1286 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Oblique");
1287 font_hash = _elm_font_available_hash_add(font_hash,
1288 "Sans:style=Bold Oblique");
1290 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Regular");
1291 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Bold");
1292 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Oblique");
1293 font_hash = _elm_font_available_hash_add(font_hash,
1294 "Serif:style=Bold Oblique");
1296 font_hash = _elm_font_available_hash_add(font_hash,
1297 "Monospace:style=Regular");
1298 font_hash = _elm_font_available_hash_add(font_hash,
1299 "Monospace:style=Bold");
1300 font_hash = _elm_font_available_hash_add(font_hash,
1301 "Monospace:style=Oblique");
1302 font_hash = _elm_font_available_hash_add(font_hash,
1303 "Monospace:style=Bold Oblique");
1305 EINA_LIST_FOREACH(list, l, key)
1306 font_hash = _elm_font_available_hash_add(font_hash, key);
1312 elm_font_available_hash_del(Eina_Hash *hash)
1314 _elm_font_available_hash_del(hash);
1318 elm_finger_size_get(void)
1320 return _elm_config->finger_size;
1324 elm_finger_size_set(Evas_Coord size)
1326 if (_elm_config->finger_size == size) return;
1327 _elm_config->finger_size = size;
1332 elm_finger_size_all_set(Evas_Coord size)
1334 #ifdef HAVE_ELEMENTARY_X
1335 static Ecore_X_Atom atom = 0;
1336 unsigned int size_i = (unsigned int)size;
1338 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FINGER_SIZE");
1339 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1345 elm_autocapitalization_allow_all_set(Eina_Bool on)
1347 #ifdef HAVE_ELEMENTARY_X
1348 static Ecore_X_Atom atom = 0;
1349 unsigned int on_i = (unsigned int)on;
1351 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_AUTOCAPITAL_ALLOW");
1352 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1358 elm_autoperiod_allow_all_set(Eina_Bool on)
1360 #ifdef HAVE_ELEMENTARY_X
1361 static Ecore_X_Atom atom = 0;
1362 unsigned int on_i = (unsigned int)on;
1364 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_AUTOPERIOD_ALLOW");
1365 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1371 elm_coords_finger_size_adjust(int times_w,
1376 if ((w) && (*w < (_elm_config->finger_size * times_w)))
1377 *w = _elm_config->finger_size * times_w;
1378 if ((h) && (*h < (_elm_config->finger_size * times_h)))
1379 *h = _elm_config->finger_size * times_h;
1388 edje_file_cache_flush();
1389 edje_collection_cache_flush();
1391 EINA_LIST_FOREACH(_elm_win_list, l, obj)
1393 Evas *e = evas_object_evas_get(obj);
1394 evas_image_cache_flush(e);
1395 evas_font_cache_flush(e);
1396 evas_render_dump(e);
1401 elm_cache_flush_interval_get(void)
1403 return _elm_config->cache_flush_poll_interval;
1407 elm_cache_flush_interval_set(int size)
1409 if (_elm_config->cache_flush_poll_interval == size) return;
1410 _elm_config->cache_flush_poll_interval = size;
1416 elm_cache_flush_interval_all_set(int size)
1418 #ifdef HAVE_ELEMENTARY_X
1419 static Ecore_X_Atom atom = 0;
1420 unsigned int size_i = (unsigned int)size;
1422 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_INTERVAL");
1423 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1429 elm_cache_flush_enabled_get(void)
1431 return _elm_config->cache_flush_enable;
1435 elm_cache_flush_enabled_set(Eina_Bool enabled)
1437 enabled = !!enabled;
1438 if (_elm_config->cache_flush_enable == enabled) return;
1439 _elm_config->cache_flush_enable = enabled;
1445 elm_cache_flush_enabled_all_set(Eina_Bool enabled)
1447 #ifdef HAVE_ELEMENTARY_X
1448 static Ecore_X_Atom atom = 0;
1449 unsigned int enabled_i = (unsigned int)enabled;
1451 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_ENABLE");
1452 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1453 atom, &enabled_i, 1);
1458 elm_font_cache_get(void)
1460 return _elm_config->font_cache;
1464 elm_font_cache_set(int size)
1466 if (_elm_config->font_cache == size) return;
1467 _elm_config->font_cache = size;
1473 elm_font_cache_all_set(int size)
1475 #ifdef HAVE_ELEMENTARY_X
1476 static Ecore_X_Atom atom = 0;
1477 unsigned int size_i = (unsigned int)size;
1479 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FONT_CACHE");
1480 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1486 elm_image_cache_get(void)
1488 return _elm_config->image_cache;
1492 elm_image_cache_set(int size)
1494 if (_elm_config->image_cache == size) return;
1495 _elm_config->image_cache = size;
1501 elm_image_cache_all_set(int size)
1503 #ifdef HAVE_ELEMENTARY_X
1504 static Ecore_X_Atom atom = 0;
1505 unsigned int size_i = (unsigned int)size;
1507 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_IMAGE_CACHE");
1508 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1514 elm_edje_file_cache_get(void)
1516 return _elm_config->edje_cache;
1520 elm_edje_file_cache_set(int size)
1522 if (_elm_config->edje_cache == size) return;
1523 _elm_config->edje_cache = size;
1529 elm_edje_file_cache_all_set(int size)
1531 #ifdef HAVE_ELEMENTARY_X
1532 static Ecore_X_Atom atom = 0;
1533 unsigned int size_i = (unsigned int)size;
1535 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_FILE_CACHE");
1536 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1542 elm_edje_collection_cache_get(void)
1544 return _elm_config->edje_collection_cache;
1548 elm_edje_collection_cache_set(int size)
1550 if (_elm_config->edje_collection_cache == size) return;
1551 _elm_config->edje_collection_cache = size;
1557 elm_edje_collection_cache_all_set(int size)
1559 #ifdef HAVE_ELEMENTARY_X
1560 static Ecore_X_Atom atom = 0;
1561 unsigned int size_i = (unsigned int)size;
1563 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_COLLECTION_CACHE");
1564 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1570 elm_object_focus_get(const Evas_Object *obj)
1572 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1573 return elm_widget_focus_get(obj);
1577 elm_object_focus_set(Evas_Object *obj,
1580 EINA_SAFETY_ON_NULL_RETURN(obj);
1583 if (elm_widget_focus_get(obj)) return;
1584 elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
1588 if (!elm_widget_can_focus_get(obj)) return;
1589 elm_widget_focused_object_clear(obj);
1594 elm_object_focus(Evas_Object *obj)
1596 EINA_SAFETY_ON_NULL_RETURN(obj);
1597 elm_object_focus_set(obj, EINA_TRUE);
1601 elm_object_unfocus(Evas_Object *obj)
1603 EINA_SAFETY_ON_NULL_RETURN(obj);
1604 elm_object_focus_set(obj, EINA_FALSE);
1608 elm_object_focus_allow_set(Evas_Object *obj,
1611 EINA_SAFETY_ON_NULL_RETURN(obj);
1612 elm_widget_can_focus_set(obj, enable);
1616 elm_object_focus_allow_get(const Evas_Object *obj)
1618 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1619 return (elm_widget_can_focus_get(obj)) || (elm_widget_child_can_focus_get(obj));
1623 elm_object_focus_custom_chain_set(Evas_Object *obj,
1626 EINA_SAFETY_ON_NULL_RETURN(obj);
1627 elm_widget_focus_custom_chain_set(obj, objs);
1631 elm_object_focus_custom_chain_unset(Evas_Object *obj)
1633 EINA_SAFETY_ON_NULL_RETURN(obj);
1634 elm_widget_focus_custom_chain_unset(obj);
1637 EAPI const Eina_List *
1638 elm_object_focus_custom_chain_get(const Evas_Object *obj)
1640 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1641 return elm_widget_focus_custom_chain_get(obj);
1645 elm_object_focus_custom_chain_append(Evas_Object *obj,
1647 Evas_Object *relative_child)
1649 EINA_SAFETY_ON_NULL_RETURN(obj);
1650 EINA_SAFETY_ON_NULL_RETURN(child);
1651 elm_widget_focus_custom_chain_append(obj, child, relative_child);
1655 elm_object_focus_custom_chain_prepend(Evas_Object *obj,
1657 Evas_Object *relative_child)
1659 EINA_SAFETY_ON_NULL_RETURN(obj);
1660 EINA_SAFETY_ON_NULL_RETURN(child);
1661 elm_widget_focus_custom_chain_prepend(obj, child, relative_child);
1665 elm_object_focus_cycle(Evas_Object *obj,
1666 Elm_Focus_Direction dir)
1668 EINA_SAFETY_ON_NULL_RETURN(obj);
1669 elm_widget_focus_cycle(obj, dir);
1673 elm_object_focus_direction_go(Evas_Object *obj,
1677 EINA_SAFETY_ON_NULL_RETURN(obj);
1678 elm_widget_focus_direction_go(obj, x, y);
1682 elm_object_tree_unfocusable_set(Evas_Object *obj,
1683 Eina_Bool tree_unfocusable)
1685 EINA_SAFETY_ON_NULL_RETURN(obj);
1686 elm_widget_tree_unfocusable_set(obj, tree_unfocusable);
1690 elm_object_tree_unfocusable_get(const Evas_Object *obj)
1692 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1693 return elm_widget_tree_unfocusable_get(obj);
1697 elm_focus_highlight_enabled_get(void)
1699 return _elm_config->focus_highlight_enable;
1703 elm_focus_highlight_enabled_set(Eina_Bool enable)
1705 _elm_config->focus_highlight_enable = !!enable;
1709 elm_focus_highlight_animate_get(void)
1711 return _elm_config->focus_highlight_animate;
1715 elm_focus_highlight_animate_set(Eina_Bool animate)
1717 _elm_config->focus_highlight_animate = !!animate;
1721 elm_scroll_bounce_enabled_get(void)
1723 return _elm_config->thumbscroll_bounce_enable;
1727 elm_scroll_bounce_enabled_set(Eina_Bool enabled)
1729 _elm_config->thumbscroll_bounce_enable = enabled;
1733 elm_scroll_bounce_enabled_all_set(Eina_Bool enabled)
1735 #ifdef HAVE_ELEMENTARY_X
1736 static Ecore_X_Atom atom = 0;
1737 unsigned int bounce_enable_i = (unsigned int)enabled;
1740 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_ENABLE");
1741 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1742 atom, &bounce_enable_i, 1);
1747 elm_scroll_bounce_friction_get(void)
1749 return _elm_config->thumbscroll_bounce_friction;
1753 elm_scroll_bounce_friction_set(double friction)
1755 _elm_config->thumbscroll_bounce_friction = friction;
1759 elm_scroll_bounce_friction_all_set(double friction)
1761 #ifdef HAVE_ELEMENTARY_X
1762 static Ecore_X_Atom atom = 0;
1763 unsigned int bounce_friction_i = (unsigned int)(friction * 1000.0);
1766 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_FRICTION");
1767 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1768 atom, &bounce_friction_i, 1);
1773 elm_scroll_page_scroll_friction_get(void)
1775 return _elm_config->page_scroll_friction;
1779 elm_scroll_page_scroll_friction_set(double friction)
1781 _elm_config->page_scroll_friction = friction;
1785 elm_scroll_page_scroll_friction_all_set(double friction)
1787 #ifdef HAVE_ELEMENTARY_X
1788 static Ecore_X_Atom atom = 0;
1789 unsigned int page_scroll_friction_i = (unsigned int)(friction * 1000.0);
1792 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_PAGE_SCROLL_FRICTION");
1793 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1794 atom, &page_scroll_friction_i, 1);
1799 elm_scroll_bring_in_scroll_friction_get(void)
1801 return _elm_config->bring_in_scroll_friction;
1805 elm_scroll_bring_in_scroll_friction_set(double friction)
1807 _elm_config->bring_in_scroll_friction = friction;
1811 elm_scroll_bring_in_scroll_friction_all_set(double friction)
1813 #ifdef HAVE_ELEMENTARY_X
1814 static Ecore_X_Atom atom = 0;
1815 unsigned int bring_in_scroll_friction_i = (unsigned int)(friction * 1000.0);
1819 ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BRING_IN_SCROLL_FRICTION");
1820 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1821 atom, &bring_in_scroll_friction_i, 1);
1826 elm_scroll_zoom_friction_get(void)
1828 return _elm_config->zoom_friction;
1832 elm_scroll_zoom_friction_set(double friction)
1834 _elm_config->zoom_friction = friction;
1838 elm_scroll_zoom_friction_all_set(double friction)
1840 #ifdef HAVE_ELEMENTARY_X
1841 static Ecore_X_Atom atom = 0;
1842 unsigned int zoom_friction_i = (unsigned int)(friction * 1000.0);
1845 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ZOOM_FRICTION");
1846 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1847 atom, &zoom_friction_i, 1);
1852 elm_scroll_thumbscroll_enabled_get(void)
1854 return _elm_config->thumbscroll_enable;
1858 elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled)
1860 _elm_config->thumbscroll_enable = enabled;
1864 elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled)
1866 #ifdef HAVE_ELEMENTARY_X
1867 static Ecore_X_Atom atom = 0;
1868 unsigned int ts_enable_i = (unsigned int)enabled;
1870 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ENABLE");
1871 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1872 atom, &ts_enable_i, 1);
1877 elm_scroll_thumbscroll_threshold_get(void)
1879 return _elm_config->thumbscroll_threshold;
1883 elm_scroll_thumbscroll_threshold_set(unsigned int threshold)
1885 _elm_config->thumbscroll_threshold = threshold;
1889 elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold)
1891 #ifdef HAVE_ELEMENTARY_X
1892 static Ecore_X_Atom atom = 0;
1893 unsigned int ts_threshold_i = (unsigned int)threshold;
1895 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_THRESHOLD");
1896 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1897 atom, &ts_threshold_i, 1);
1902 elm_scroll_thumbscroll_momentum_threshold_get(void)
1904 return _elm_config->thumbscroll_momentum_threshold;
1908 elm_scroll_thumbscroll_momentum_threshold_set(double threshold)
1910 _elm_config->thumbscroll_momentum_threshold = threshold;
1914 elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold)
1916 #ifdef HAVE_ELEMENTARY_X
1917 static Ecore_X_Atom atom = 0;
1918 unsigned int ts_momentum_threshold_i = (unsigned int)(threshold * 1000.0);
1921 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_MOMENTUM_THRESHOLD");
1922 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1923 atom, &ts_momentum_threshold_i, 1);
1928 elm_scroll_thumbscroll_friction_get(void)
1930 return _elm_config->thumbscroll_friction;
1934 elm_scroll_thumbscroll_friction_set(double friction)
1936 _elm_config->thumbscroll_friction = friction;
1940 elm_scroll_thumbscroll_friction_all_set(double friction)
1942 #ifdef HAVE_ELEMENTARY_X
1943 static Ecore_X_Atom atom = 0;
1944 unsigned int ts_friction_i = (unsigned int)(friction * 1000.0);
1946 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_FRICTION");
1947 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1948 atom, &ts_friction_i, 1);
1953 elm_scroll_thumbscroll_border_friction_get(void)
1955 return _elm_config->thumbscroll_border_friction;
1959 elm_scroll_thumbscroll_border_friction_set(double friction)
1967 _elm_config->thumbscroll_friction = friction;
1971 elm_scroll_thumbscroll_border_friction_all_set(double friction)
1979 #ifdef HAVE_ELEMENTARY_X
1980 static Ecore_X_Atom atom = 0;
1981 unsigned int border_friction_i = (unsigned int)(friction * 1000.0);
1984 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BORDER_FRICTION");
1985 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1986 atom, &border_friction_i, 1);
1991 elm_scroll_thumbscroll_sensitivity_friction_get(void)
1993 return _elm_config->thumbscroll_sensitivity_friction;
1997 elm_scroll_thumbscroll_sensitivity_friction_set(double friction)
2005 _elm_config->thumbscroll_friction = friction;
2009 elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction)
2017 #ifdef HAVE_ELEMENTARY_X
2018 static Ecore_X_Atom atom = 0;
2019 unsigned int sensitivity_friction_i = (unsigned int)(friction * 1000.0);
2022 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_SENSITIVITY_FRICTION");
2023 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
2024 atom, &sensitivity_friction_i, 1);
2029 elm_object_scroll_hold_push(Evas_Object *obj)
2031 EINA_SAFETY_ON_NULL_RETURN(obj);
2032 elm_widget_scroll_hold_push(obj);
2036 elm_object_scroll_hold_pop(Evas_Object *obj)
2038 EINA_SAFETY_ON_NULL_RETURN(obj);
2039 elm_widget_scroll_hold_pop(obj);
2043 elm_object_scroll_freeze_push(Evas_Object *obj)
2045 EINA_SAFETY_ON_NULL_RETURN(obj);
2046 elm_widget_scroll_freeze_push(obj);
2050 elm_object_scroll_lock_x_set(Evas_Object *obj,
2053 EINA_SAFETY_ON_NULL_RETURN(obj);
2054 elm_widget_drag_lock_x_set(obj, lock);
2058 elm_object_scroll_lock_y_set(Evas_Object *obj,
2061 EINA_SAFETY_ON_NULL_RETURN(obj);
2062 elm_widget_drag_lock_y_set(obj, lock);
2066 elm_object_scroll_lock_x_get(const Evas_Object *obj)
2068 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2069 return elm_widget_drag_lock_x_get(obj);
2073 elm_object_scroll_lock_y_get(const Evas_Object *obj)
2075 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2076 return elm_widget_drag_lock_y_get(obj);
2080 elm_object_scroll_freeze_pop(Evas_Object *obj)
2082 EINA_SAFETY_ON_NULL_RETURN(obj);
2083 elm_widget_scroll_freeze_pop(obj);
2087 elm_object_widget_check(const Evas_Object *obj)
2089 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
2090 return elm_widget_is(obj);
2094 elm_object_parent_widget_get(const Evas_Object *obj)
2096 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2097 return elm_widget_parent_widget_get(obj);
2101 elm_object_top_widget_get(const Evas_Object *obj)
2103 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2104 return elm_widget_top_get(obj);
2108 elm_object_widget_type_get(const Evas_Object *obj)
2110 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2111 return elm_widget_type_get(obj);
2115 elm_object_signal_emit(Evas_Object *obj,
2116 const char *emission,
2119 EINA_SAFETY_ON_NULL_RETURN(obj);
2120 elm_widget_signal_emit(obj, emission, source);
2124 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)
2126 EINA_SAFETY_ON_NULL_RETURN(obj);
2127 EINA_SAFETY_ON_NULL_RETURN(func);
2128 elm_widget_signal_callback_add(obj, emission, source, func, data);
2132 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))
2134 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2135 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
2136 return elm_widget_signal_callback_del(obj, emission, source, func);
2140 elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data)
2142 EINA_SAFETY_ON_NULL_RETURN(obj);
2143 EINA_SAFETY_ON_NULL_RETURN(func);
2144 elm_widget_event_callback_add(obj, func, data);
2148 elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data)
2150 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2151 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
2152 return elm_widget_event_callback_del(obj, func, data);
2156 elm_object_tree_dump(const Evas_Object *top)
2159 elm_widget_tree_dump(top);
2167 elm_object_tree_dot_dump(const Evas_Object *top,
2171 FILE *f = fopen(file, "wb");
2172 elm_widget_tree_dot_dump(top, f);
2182 elm_longpress_timeout_set(double longpress_timeout)
2184 _elm_config->longpress_timeout = longpress_timeout;
2188 elm_longpress_timeout_get(void)
2190 return _elm_config->longpress_timeout;
2194 elm_object_item_object_get(const Elm_Object_Item *it)
2196 return ((Elm_Widget_Item *) it)->widget;
2200 elm_object_item_content_part_set(Elm_Object_Item *it,
2202 Evas_Object *content)
2204 elm_widget_item_content_part_set(it, part, content);
2208 elm_object_item_content_part_get(const Elm_Object_Item *it,
2211 return elm_widget_item_content_part_get(it, part);
2215 elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part)
2217 return elm_widget_item_content_part_unset(it, part);
2221 elm_object_item_text_part_set(Elm_Object_Item *it,
2225 elm_widget_item_text_part_set(it, part, label);
2229 elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part)
2231 return elm_widget_item_text_part_get(it, part);
2235 elm_object_item_data_get(const Elm_Object_Item *it)
2237 return elm_widget_item_data_get(it);
2241 elm_object_item_data_set(Elm_Object_Item *it, void *data)
2243 elm_widget_item_data_set(it, data);
2247 elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source)
2249 elm_widget_item_signal_emit(it, emission, source);
2253 elm_object_access_info_set(Evas_Object *obj, const char *txt)
2255 elm_widget_access_info_set(obj, txt);
2259 elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
2261 _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt);
2264 EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
2266 _elm_widget_item_disabled_set((Elm_Widget_Item *) it, disabled);
2269 EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it)
2271 return _elm_widget_item_disabled_get((Elm_Widget_Item *) it);