From 7f157be59a24009c09fd8ac53cf6df00aa50af33 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 30 Jan 2020 11:46:59 -0500 Subject: [PATCH] efl/config: merge all gesture manager config code into efl.config this is all just duplicated code, so we can deduplicate it with minimal effort to clean up the api --- src/lib/efl/interfaces/efl_config.eo | 3 +++ src/lib/elementary/efl_ui_win.c | 22 +++++++++---------- src/lib/elementary/elm_config.c | 5 +++++ .../evas/gesture/efl_canvas_gesture_manager.c | 15 ++++++++++++- .../gesture/efl_canvas_gesture_manager.eo | 3 --- .../gesture/efl_canvas_gesture_recognizer.c | 2 +- .../gesture/efl_canvas_gesture_recognizer.eo | 4 ++-- src/tests/elementary/efl_ui_test_gesture.c | 2 +- 8 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/lib/efl/interfaces/efl_config.eo b/src/lib/efl/interfaces/efl_config.eo index afbe38ec89..449456468c 100644 --- a/src/lib/efl/interfaces/efl_config.eo +++ b/src/lib/efl/interfaces/efl_config.eo @@ -27,6 +27,9 @@ interface @beta Efl.Config } } } + events { + config,changed: string; [[Called when a config value has been changed for the manager object. Passed string is the name of the value or NULL if all values were changed.]] + } } /* NOTES: diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index a926bdcd33..d7a6439ddb 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -5148,43 +5148,43 @@ static void _gesture_manager_config_load(Eo *obj) { Eina_Value val; - Efl_Canvas_Gesture_Manager *gm = efl_provider_find(obj, EFL_CANVAS_GESTURE_MANAGER_CLASS); + Eo *gm = efl_provider_find(obj, EFL_CONFIG_INTERFACE); eina_value_setup(&val, EINA_VALUE_TYPE_DOUBLE); eina_value_set(&val, _elm_config->glayer_long_tap_start_timeout); - efl_gesture_manager_config_set(gm, "glayer_long_tap_start_timeout", &val); + efl_config_set(gm, "glayer_long_tap_start_timeout", &val); eina_value_set(&val, _elm_config->glayer_double_tap_timeout); - efl_gesture_manager_config_set(gm, "glayer_double_tap_timeout", &val); + efl_config_set(gm, "glayer_double_tap_timeout", &val); elm_config_scroll_thumbscroll_friction_set(_elm_config->thumbscroll_friction); elm_config_scroll_thumbscroll_momentum_threshold_set(_elm_config->thumbscroll_momentum_threshold); eina_value_set(&val, _elm_config->glayer_line_min_length); - efl_gesture_manager_config_set(gm, "glayer_line_min_length", &val); + efl_config_set(gm, "glayer_line_min_length", &val); eina_value_set(&val, _elm_config->glayer_line_distance_tolerance); - efl_gesture_manager_config_set(gm, "glayer_line_distance_tolerance", &val); + efl_config_set(gm, "glayer_line_distance_tolerance", &val); eina_value_set(&val, _elm_config->glayer_line_angular_tolerance); - efl_gesture_manager_config_set(gm, "glayer_line_angular_tolerance", &val); + efl_config_set(gm, "glayer_line_angular_tolerance", &val); eina_value_set(&val, _elm_config->glayer_zoom_finger_factor); - efl_gesture_manager_config_set(gm, "glayer_zoom_finger_factor", &val); + efl_config_set(gm, "glayer_zoom_finger_factor", &val); eina_value_set(&val, _elm_config->glayer_zoom_distance_tolerance); - efl_gesture_manager_config_set(gm, "glayer_zoom_distance_tolerance", &val); + efl_config_set(gm, "glayer_zoom_distance_tolerance", &val); eina_value_setup(&val, EINA_VALUE_TYPE_UINT); eina_value_set(&val, _elm_config->glayer_flick_time_limit_ms); - efl_gesture_manager_config_set(gm, "glayer_flick_time_limit_ms", &val); + efl_config_set(gm, "glayer_flick_time_limit_ms", &val); eina_value_setup(&val, EINA_VALUE_TYPE_UCHAR); eina_value_set(&val, _elm_config->glayer_continues_enable); - efl_gesture_manager_config_set(gm, "glayer_continues_enable", &val); + efl_config_set(gm, "glayer_continues_enable", &val); eina_value_set(&val, _elm_config->glayer_zoom_finger_enable); - efl_gesture_manager_config_set(gm, "glayer_zoom_finger_enable", &val); + efl_config_set(gm, "glayer_zoom_finger_enable", &val); } static Eo * diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c index c4d2854495..02a31a552e 100644 --- a/src/lib/elementary/elm_config.c +++ b/src/lib/elementary/elm_config.c @@ -2053,6 +2053,7 @@ _config_flush_get(void) _elm_config_key_binding_hash(); _elm_win_access(_elm_config->access_mode); ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL); + efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, NULL); } static const char * @@ -4509,6 +4510,7 @@ _elm_config_reload(void) _elm_old_clouseau_reload(); _elm_config_key_binding_hash(); ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL); + efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, NULL); if (ptheme) eina_stringshare_del(ptheme); if (pmodules) eina_stringshare_del(pmodules); if (picon_theme) eina_stringshare_del(picon_theme); @@ -4936,6 +4938,7 @@ _efl_config_global_efl_config_config_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNU return EINA_FALSE; \ } \ elm_config_ ## opt ## _set(v); \ + efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, (void*)name); \ return EINA_TRUE; \ } \ } while (0) @@ -4973,6 +4976,7 @@ _efl_config_global_efl_config_config_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNU return EINA_FALSE; \ } \ elm_config_ ## opt ## _set(v); \ + efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, (void*)name); \ return EINA_TRUE; \ } \ } while (0) @@ -5119,6 +5123,7 @@ _efl_config_global_efl_config_config_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNU } elm_config_audio_mute_set(chan, !!v); #ifdef ENABLE_MULTISENSE + efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, (void*)name); return EINA_TRUE; #else return EINA_FALSE; diff --git a/src/lib/evas/gesture/efl_canvas_gesture_manager.c b/src/lib/evas/gesture/efl_canvas_gesture_manager.c index 6399227dc5..9bed44dd97 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_manager.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_manager.c @@ -97,6 +97,15 @@ _update_finger_sizes(Efl_Canvas_Gesture_Manager_Data *pd, int finger_size) zd->finger_size = finger_size; } +static void +_gesture_manager_config_changed(void *data, const Efl_Event *ev) +{ + Efl_Canvas_Gesture_Manager_Data *pd = data; + + if ((!ev->info) || eina_streq(ev->info, "glayer_tap_finger_size")) + _update_finger_sizes(pd, efl_config_int_get(ev->object, "glayer_tap_finger_size")); +} + EOLIAN static Efl_Object * _efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_Manager_Data *pd) { @@ -112,6 +121,7 @@ _efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_M /* this needs to always be present */ config = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE); efl_config_int_set(config, "glayer_tap_finger_size", EFL_GESTURE_RECOGNIZER_TYPE_TAP_FINGER_SIZE); + efl_event_callback_add(config, EFL_CONFIG_EVENT_CONFIG_CHANGED, _gesture_manager_config_changed, pd); //Register all types of recognizers at very first time. efl_gesture_manager_recognizer_register(obj, efl_add(EFL_CANVAS_GESTURE_RECOGNIZER_TAP_CLASS, obj)); @@ -127,10 +137,13 @@ _efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_M } EOLIAN static void -_efl_canvas_gesture_manager_efl_object_destructor(Eo *obj, Efl_Canvas_Gesture_Manager_Data *pd EINA_UNUSED) +_efl_canvas_gesture_manager_efl_object_destructor(Eo *obj, Efl_Canvas_Gesture_Manager_Data *pd) { Efl_Canvas_Gesture_Recognizer *recognizer; void *ptr; + Eo *config = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE); + if (config) + efl_event_callback_del(config, EFL_CONFIG_EVENT_CONFIG_CHANGED, _gesture_manager_config_changed, pd); eina_hash_free(pd->m_recognizers); EINA_LIST_FREE(pd->custom_recognizers, recognizer) diff --git a/src/lib/evas/gesture/efl_canvas_gesture_manager.eo b/src/lib/evas/gesture/efl_canvas_gesture_manager.eo index 04e08f2d50..2dad839a3d 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_manager.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture_manager.eo @@ -30,9 +30,6 @@ class @beta Efl.Canvas.Gesture_Manager extends Efl.Object } } } - events { - config,changed: string; [[Called when a config value has been changed for the manager object. Passed string is the name of the value.]] - } implements { Efl.Object.constructor; Efl.Object.destructor; diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer.c b/src/lib/evas/gesture/efl_canvas_gesture_recognizer.c index 995217ca85..8369295596 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer.c @@ -7,7 +7,7 @@ Eina_Value * _recognizer_config_get(const Eo *obj, const char *name) { - Eo *config = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE); + Eo *config = efl_provider_find(obj, EFL_CONFIG_INTERFACE); EINA_SAFETY_ON_NULL_RETURN_VAL(config, NULL); return efl_config_get(config, name); } diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer.eo b/src/lib/evas/gesture/efl_canvas_gesture_recognizer.eo index 17fb52a590..4f5ee45043 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer.eo @@ -7,8 +7,8 @@ abstract @beta Efl.Canvas.Gesture_Recognizer extends Efl.Object Gesture recognizers listen to events that occur on a target object to see if a particular gesture has occurred. - Recognizer-specific configuration values can be modified through @Efl.Canvas.Gesture_Manager.config, - and the recognizer's manager can be found using @Efl.Object.provider_find. + Recognizer-specific configuration values can be modified through @Efl.Config.config, + and the global config object can be found using @Efl.Object.provider_find. Default configuration values are taken from the system's configuration. ]] c_prefix: efl_gesture_recognizer; diff --git a/src/tests/elementary/efl_ui_test_gesture.c b/src/tests/elementary/efl_ui_test_gesture.c index fdd5f16a98..db730f7dab 100644 --- a/src/tests/elementary/efl_ui_test_gesture.c +++ b/src/tests/elementary/efl_ui_test_gesture.c @@ -202,7 +202,7 @@ EFL_START_TEST(test_efl_ui_gesture_long_tap) Eina_Value *val; Eo *e = efl_provider_find(rect, EVAS_CANVAS_CLASS); - val = efl_gesture_manager_config_get(efl_provider_find(rect, EFL_CANVAS_GESTURE_MANAGER_CLASS), "glayer_long_tap_start_timeout"); + val = efl_config_get(efl_provider_find(rect, EFL_CONFIG_INTERFACE), "glayer_long_tap_start_timeout"); eina_value_get(val, &timeout); /* press */