summaryrefslogtreecommitdiff
path: root/src/lib/elementary/elm_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/elementary/elm_config.c')
-rw-r--r--src/lib/elementary/elm_config.c238
1 files changed, 124 insertions, 114 deletions
diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c
index 8d83a5686a..a2dfa2ef41 100644
--- a/src/lib/elementary/elm_config.c
+++ b/src/lib/elementary/elm_config.c
@@ -86,6 +86,9 @@ static const Elm_Text_Class _elm_text_classes[] = {
{"multibuttonentry_item_text", "Multibuttonentry Items"},
{"multibuttonentry_item_text_pressed", "Multibuttonentry Pressed Items"},
{"multibuttonentry_item_text_disabled", "Multibuttonentry Disabled Items"},
+ {"tags_item_text", "Tags Items"},
+ {"tags_item_text_pressed", "Tags Pressed Items"},
+ {"tags_item_text_disabled", "Tags Disabled Items"},
{"title_bar", "Title Bar"},
{"list_item", "List Items"},
{"grid_item", "Grid Items"},
@@ -112,6 +115,8 @@ static const Elm_Color_Class _elm_color_classes[] = {
{"calendar_day_highlighted", "Highlighted Day Effect"},
{"calendar_day_checked", "Checked Day Effect"},
{"datetime_bg", "Datetime Background"},
+ {"datepicker_bg", "Datepicker Background"},
+ {"timepicker_bg", "Timepicker Background"},
{"datetime_separator_text", "Datetime Separator Text"},
{"datetime_separator_text_disabled", "Datetime Separator Disabled Text"},
{"hoversel_item_active", "Hoversel Item Text"},
@@ -160,10 +165,18 @@ static const Elm_Color_Class _elm_color_classes[] = {
{"multibuttonentry_item_text", "Multibuttonentry Item Text"},
{"multibuttonentry_item_text_pressed", "Multibuttonentry Item Pressed Text"},
{"multibuttonentry_item_text_disabled", "Multibuttonentry Item Disabled Text"},
+ {"tags_bg", "Tags Background"},
+ {"tags_item_bg", "Tags Item Background"},
+ {"tags_item_bg_selected", "Tags Item Selected Background"},
+ {"tags_item_text", "Tags Item Text"},
+ {"tags_item_text_pressed", "Tags Item Pressed Text"},
+ {"tags_item_text_disabled", "Tags Item Disabled Text"},
{"border_title", "Border Title Text"},
{"border_title_active", "Border Title Active Text"},
{"datetime_text", "Datetime Text"},
{"multibuttonentry_label", "Multibuttonentry Text"},
+ {"tags_label", "Tags Text"},
+ {"tags_number", "Tags Number Text"},
{"spinner", "Spinner Text"},
{"spinner_disabled", "Spinner Disabled Text"},
{NULL, NULL}
@@ -461,6 +474,7 @@ _desc_init(void)
ELM_CONFIG_VAL(D, T, glayer_flick_time_limit_ms, T_INT);
ELM_CONFIG_VAL(D, T, glayer_long_tap_start_timeout, T_DOUBLE);
ELM_CONFIG_VAL(D, T, glayer_double_tap_timeout, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_tap_finger_size, T_INT);
ELM_CONFIG_VAL(D, T, access_mode, T_UCHAR);
ELM_CONFIG_VAL(D, T, selection_clear_enable, T_UCHAR);
ELM_CONFIG_VAL(D, T, glayer_continues_enable, T_UCHAR);
@@ -508,6 +522,7 @@ _desc_init(void)
ELM_CONFIG_VAL(D, T, entry_select_allow, T_UCHAR);
ELM_CONFIG_VAL(D, T, offline, T_UCHAR);
ELM_CONFIG_VAL(D, T, powersave, T_INT);
+ ELM_CONFIG_VAL(D, T, drag_anim_duration, T_DOUBLE);
#undef T
#undef D
#undef T_INT
@@ -614,7 +629,7 @@ _elm_config_user_dir_snprintf(char *dst,
{
size_t user_dir_len = 0, off = 0;
va_list ap;
- Efl_Vpath_File *file_obj;
+ char *tmp;
static int use_xdg_config = -1;
if (use_xdg_config == -1)
@@ -623,13 +638,12 @@ _elm_config_user_dir_snprintf(char *dst,
else use_xdg_config = 0;
}
if (use_xdg_config)
- file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS,
- "(:config:)/elementary");
+ tmp = eina_vpath_resolve("(:usr.config:)/elementary");
else
- file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS,
- "(:home:)/.elementary");
- eina_strlcpy(dst, efl_vpath_file_result_get(file_obj), size);
- efl_del(file_obj);
+ tmp = eina_vpath_resolve("(:home:)/" ELEMENTARY_BASE_DIR);
+
+ eina_strlcpy(dst, tmp, size);
+ free(tmp);
user_dir_len = strlen(dst);
off = user_dir_len + 1;
@@ -1430,7 +1444,7 @@ _profile_fetch_from_conf(void)
}
}
- for (i = 0; i < 2; i++)
+ for (i = 0; i < 2 && !_use_build_config; i++)
{
// user profile
if (i == 0)
@@ -1642,6 +1656,12 @@ _config_system_load(void)
_elm_profile);
ef = eet_open(buf, EET_FILE_MODE_READ);
+ if (!ef)
+ {
+ _elm_data_dir_snprintf(buf, sizeof(buf), "config/default/base.cfg");
+
+ ef = eet_open(buf, EET_FILE_MODE_READ);
+ }
if (ef)
{
cfg = eet_data_read(ef, _config_edd, "config");
@@ -1659,25 +1679,39 @@ _efl_config_obj_del(Eo *obj EINA_UNUSED)
static void
_config_load(void)
{
- _efl_config_obj = efl_add(EFL_CONFIG_GLOBAL_CLASS, NULL);
+ if (_efl_config_obj)
+ {
+ efl_del_intercept_set(_efl_config_obj, NULL);
+ efl_loop_unregister(efl_main_loop_get(), EFL_CONFIG_INTERFACE, _efl_config_obj);
+ efl_loop_unregister(efl_main_loop_get(), EFL_CONFIG_GLOBAL_CLASS, _efl_config_obj);
+ ELM_SAFE_FREE(_efl_config_obj, efl_del);
+ ELM_SAFE_FREE(_elm_config, _config_free);
+ _elm_font_overlays_del_free();
+
+ ELM_SAFE_FREE(_elm_key_bindings, eina_hash_free);
+ }
+ _efl_config_obj = efl_add(EFL_CONFIG_GLOBAL_CLASS, efl_main_loop_get());
efl_loop_register(efl_main_loop_get(), EFL_CONFIG_INTERFACE, _efl_config_obj);
efl_loop_register(efl_main_loop_get(), EFL_CONFIG_GLOBAL_CLASS, _efl_config_obj);
efl_del_intercept_set(_efl_config_obj, _efl_config_obj_del);
- _elm_config = _config_user_load();
- if (_elm_config)
+ if (!_use_build_config)
{
- if ((_elm_config->config_version >> ELM_CONFIG_VERSION_EPOCH_OFFSET) < ELM_CONFIG_EPOCH)
- {
- WRN("User's elementary config seems outdated and unusable. Fallback to load system config.");
- _config_free(_elm_config);
- _elm_config = NULL;
- }
- else
+ _elm_config = _config_user_load();
+ if (_elm_config)
{
- if (_elm_config->config_version < ELM_CONFIG_VERSION)
- _config_update();
- _env_get();
- return;
+ if ((_elm_config->config_version >> ELM_CONFIG_VERSION_EPOCH_OFFSET) < ELM_CONFIG_EPOCH)
+ {
+ WRN("User's elementary config seems outdated and unusable. Fallback to load system config.");
+ _config_free(_elm_config);
+ _elm_config = NULL;
+ }
+ else
+ {
+ if (_elm_config->config_version < ELM_CONFIG_VERSION)
+ _config_update();
+ _env_get();
+ return;
+ }
}
}
@@ -1777,6 +1811,7 @@ _config_load(void)
_elm_config->glayer_long_tap_start_timeout = 1.2; /* 1.2 second to start long-tap */
_elm_config->glayer_double_tap_timeout = 0.25; /* 0.25 seconds between 2 mouse downs of a tap. */
_elm_config->glayer_continues_enable = EINA_TRUE; /* Continue gestures default */
+ _elm_config->glayer_tap_finger_size = 10;
_elm_config->access_mode = ELM_ACCESS_MODE_OFF;
_elm_config->selection_clear_enable = EINA_FALSE;
_elm_config->week_start = 1; /* monday */
@@ -1821,6 +1856,7 @@ _config_load(void)
_elm_config->icon_theme = eina_stringshare_add(ELM_CONFIG_ICON_THEME_ELEMENTARY);
_elm_config->popup_scrollable = EINA_FALSE;
_elm_config->entry_select_allow = EINA_TRUE;
+ _elm_config->drag_anim_duration = 0.0;
_env_get();
}
@@ -1935,6 +1971,7 @@ _elm_config_reload_do(void)
KEEP_VAL(glayer_flick_time_limit_ms);
KEEP_VAL(glayer_long_tap_start_timeout);
KEEP_VAL(glayer_double_tap_timeout);
+ KEEP_VAL(glayer_tap_finger_size);
KEEP_VAL(access_mode);
KEEP_VAL(glayer_continues_enable);
KEEP_VAL(week_start);
@@ -2021,6 +2058,7 @@ _elm_config_reload_do(void)
KEEP_VAL(gl_msaa);
KEEP_STR(icon_theme);
KEEP_VAL(entry_select_allow);
+ KEEP_VAL(drag_anim_duration);
_elm_config->priv = prev_config->priv;
_config_free(prev_config);
@@ -2056,7 +2094,7 @@ _config_flush_get(void)
if (pre_scale != _elm_config->scale)
_elm_rescale();
_elm_recache();
- _elm_clouseau_reload();
+ _elm_old_clouseau_reload();
_elm_config_key_binding_hash();
_elm_win_access(_elm_config->access_mode);
ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
@@ -2791,6 +2829,12 @@ _env_get(void)
if (s) _elm_config->popup_vertical_align = _elm_atof(s);
s = getenv("ELM_POPUP_SCROLLABLE");
if (s) _elm_config->popup_scrollable = atoi(s);
+
+ s = getenv("ELM_GLAYER_TAP_FINGER_SIZE");
+ if (s) _elm_config->glayer_tap_finger_size = atoi(s);
+
+ s = getenv("EFL_UI_DND_DRAG_ANIM_DURATION");
+ if (s) _elm_config->drag_anim_duration = _elm_atof(s);
}
static void
@@ -3434,6 +3478,40 @@ elm_config_focus_move_policy_get(void)
return _elm_config->focus_move_policy;
}
+static void
+_efl_ui_widget_config_reload(Efl_Ui_Widget *obj)
+{
+ Elm_Focus_Move_Policy focus_move_policy = elm_config_focus_move_policy_get();
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, sd);
+ Efl_Ui_Widget *w;
+ Eina_List *n;
+
+ //reload focus move policy
+ if (efl_ui_widget_focus_move_policy_automatic_get(obj) &&
+ (sd->focus_move_policy != focus_move_policy))
+ {
+ sd->focus_move_policy = focus_move_policy;
+ }
+
+ EINA_LIST_FOREACH(sd->subobjs, n, w)
+ {
+ if (efl_isa(w, EFL_UI_WIDGET_CLASS))
+ _efl_ui_widget_config_reload(w);
+ }
+}
+
+void
+_elm_win_focus_reconfigure(void)
+{
+ const Eina_List *l;
+ Evas_Object *obj;
+
+ EINA_LIST_FOREACH(_elm_win_list, l, obj)
+ {
+ _efl_ui_widget_config_reload(obj);
+ }
+}
+
EAPI void
elm_config_focus_move_policy_set(Elm_Focus_Move_Policy policy)
{
@@ -3865,7 +3943,7 @@ elm_config_clouseau_enabled_set(Eina_Bool enable)
{
_elm_config->priv.clouseau_enable = EINA_TRUE;
_elm_config->clouseau_enable = !!enable;
- _elm_clouseau_reload();
+ _elm_old_clouseau_reload();
}
EAPI double
@@ -4128,7 +4206,7 @@ _elm_config_init(void)
_elm_config_font_overlay_apply();
_elm_config_color_overlay_apply();
_elm_recache();
- _elm_clouseau_reload();
+ _elm_old_clouseau_reload();
_elm_config_key_binding_hash();
}
@@ -4137,17 +4215,6 @@ _elm_config_sub_shutdown(void)
{
ecore_event_type_flush(ELM_EVENT_CONFIG_ALL_CHANGED);
-#ifdef HAVE_ELEMENTARY_X
- if (ecore_x_display_get()) ecore_x_shutdown();
-#endif
-#ifdef HAVE_ELEMENTARY_WL2
- if (_elm_wl_display)
- {
- ecore_wl2_display_disconnect(_elm_wl_display);
- _elm_wl_display = NULL;
- ecore_wl2_shutdown();
- }
-#endif
#ifdef HAVE_ELEMENTARY_WIN32
ecore_win32_shutdown();
#endif
@@ -4238,78 +4305,6 @@ _elm_config_file_monitor_cb(void *data EINA_UNUSED,
void
_elm_config_sub_init(void)
{
-#if defined(HAVE_ELEMENTARY_X) || defined(HAVE_ELEMENTARY_WL2) || defined(HAVE_ELEMENTARY_WIN32)
- const char *ev = getenv("ELM_DISPLAY");
-#endif
-
-#ifdef HAVE_ELEMENTARY_X
- Eina_Bool init_x = EINA_FALSE;
- Eina_Bool have_display = !!getenv("DISPLAY");
-
- if (ev) /* If ELM_DISPLAY is specified */
- {
- if (!strcmp(ev, "x11")) /* and it is X11 */
- {
- if (!have_display) /* if there is no $DISPLAY */
- {
- ERR("$ELM_DISPLAY is set to x11 but $DISPLAY is not set");
- init_x = EINA_FALSE;
- }
- else /* if there is */
- init_x = EINA_TRUE;
- }
- else /* not X11 */
- init_x = EINA_FALSE;
- }
- else /* ELM_DISPLAY not specified */
- {
- if (have_display) /* If there is a $DISPLAY */
- init_x = EINA_TRUE;
- else /* No $DISPLAY */
- init_x = EINA_FALSE;
- }
- if (init_x)
- {
- ecore_x_init(NULL);
- }
-#endif
-#ifdef HAVE_ELEMENTARY_WL2
- Eina_Bool init_wl = EINA_FALSE;
- Eina_Bool have_wl_display = !!getenv("WAYLAND_DISPLAY");
-
- if (ev) /* If ELM_DISPLAY is specified */
- {
- if (!strcmp(ev, "wl")) /* and it is WL */
- {
- /* always try to connect to wl when it is enforced */
- init_wl = EINA_TRUE;
- }
- else /* not wl */
- init_wl = EINA_FALSE;
- }
- else /* ELM_DISPLAY not specified */
- {
- /* If there is a $WAYLAND_DISPLAY */
- if ((have_wl_display) && (!getenv("DISPLAY")))
- init_wl = EINA_TRUE;
- else /* No $WAYLAND_DISPLAY */
- init_wl = EINA_FALSE;
- }
- if (init_wl)
- {
- if (!ecore_wl2_init())
- {
- ERR("Could not initialize Ecore_Wl2");
- goto end;
- }
- _elm_wl_display = ecore_wl2_display_connect(NULL);
- if (!_elm_wl_display)
- {
- ERR("Could not connect to Wayland Display");
- goto end;
- }
- }
-#endif
#ifdef HAVE_ELEMENTARY_COCOA
ecore_cocoa_init();
#endif
@@ -4403,7 +4398,7 @@ _elm_config_reload(void)
_elm_rescale();
#undef CMP
_elm_recache();
- _elm_clouseau_reload();
+ _elm_old_clouseau_reload();
_elm_config_key_binding_hash();
ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
if (ptheme) eina_stringshare_del(ptheme);
@@ -4599,7 +4594,7 @@ elm_config_web_backend_set(const char *backend)
{
_elm_config->priv.web_backend = EINA_TRUE;
if (_elm_web_init(backend))
- _elm_config->web_backend = backend;
+ eina_stringshare_replace(&_elm_config->web_backend, backend);
}
EAPI const char *
@@ -4637,6 +4632,20 @@ elm_config_powersave_set(int set)
_elm_config->powersave = set;
}
+EAPI double
+elm_config_drag_anim_duration_get(void)
+{
+ if (!_elm_config) return 0.0;
+ return _elm_config->drag_anim_duration;
+}
+
+EAPI void
+elm_config_drag_anim_duration_set(double set)
+{
+ if (!_elm_config) return;
+ _elm_config->drag_anim_duration = set;
+}
+
void
_elm_config_profile_set(const char *profile)
{
@@ -4670,7 +4679,7 @@ _elm_config_profile_set(const char *profile)
_elm_config_color_overlay_apply();
_elm_rescale();
_elm_recache();
- _elm_clouseau_reload();
+ _elm_old_clouseau_reload();
_elm_config_key_binding_hash();
}
@@ -4967,7 +4976,7 @@ _efl_config_global_efl_config_config_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNU
}
EOLIAN static Eina_Value *
-_efl_config_global_efl_config_config_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED,
+_efl_config_global_efl_config_config_get(const Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED,
const char *name)
{
Eina_Value *val = NULL;
@@ -5074,6 +5083,7 @@ _efl_config_global_efl_config_config_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNU
CONFIG_GETS(web_backend);
CONFIG_GETB(offline);
CONFIG_GETI(powersave);
+ CONFIG_GETD(drag_anim_duration);
const size_t len = sizeof("audio_mute") - 1;
if (!strncmp(name, "audio_mute", len))
@@ -5103,7 +5113,7 @@ _efl_config_global_profile_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, const
}
EOLIAN static const char *
-_efl_config_global_profile_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
+_efl_config_global_profile_get(const Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
{
return elm_config_profile_get();
}
@@ -5125,7 +5135,7 @@ typedef struct
static Eina_Bool
_profile_iterator_next(Profile_Iterator *it, void **data)
{
- Efl_Gfx *sub;
+ Efl_Gfx_Entity *sub;
if (!it->object) return EINA_FALSE;
if (!eina_iterator_next(it->real_iterator, (void **) &sub))