summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunsuChoi <jsuya.choi@samsung.com>2020-03-19 15:16:32 +0900
committerJunsuChoi <jsuya.choi@samsung.com>2020-03-19 17:28:03 +0900
commit0f83f2bf4a9f4818f659c8ceeccbaed4a47cac84 (patch)
tree96e560e376b982694420af42f1a0dc79265d1c81
parente8ea9741ec8db10089c8fa3fd3cc74c7009af258 (diff)
downloadefl-devs/jsuya/mi_controller.tar.gz
+ rule_value_provider_overridedevs/jsuya/mi_controller
-rw-r--r--src/lib/elementary/efl_ui_mi_controller.c7
-rw-r--r--src/lib/elementary/efl_ui_mi_controller.eo6
-rw-r--r--src/lib/elementary/efl_ui_mi_rule.c30
-rw-r--r--src/lib/elementary/efl_ui_mi_rule.eo8
-rw-r--r--src/lib/elementary/efl_ui_mi_rule_private.h1
5 files changed, 48 insertions, 4 deletions
diff --git a/src/lib/elementary/efl_ui_mi_controller.c b/src/lib/elementary/efl_ui_mi_controller.c
index 690babeee1..4745ff6751 100644
--- a/src/lib/elementary/efl_ui_mi_controller.c
+++ b/src/lib/elementary/efl_ui_mi_controller.c
@@ -255,6 +255,13 @@ _animation_playback_progress_changed_cb(void *data, const Efl_Event *event)
}
EOLIAN static void
+_efl_ui_mi_controller_value_provider_override(Eo *obj EINA_UNUSED, Efl_Ui_Mi_Controller_Data *pd, Efl_Gfx_Vg_Value_Provider *value_provider)
+{
+ if (!value_provider) return;
+ efl_ui_vg_animation_value_provider_override(pd->anim, value_provider);
+}
+
+EOLIAN static void
_efl_ui_mi_controller_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Mi_Controller_Data *pd)
{
efl_canvas_group_add(efl_super(obj, MY_CLASS));
diff --git a/src/lib/elementary/efl_ui_mi_controller.eo b/src/lib/elementary/efl_ui_mi_controller.eo
index a428e6ba4e..8afae44434 100644
--- a/src/lib/elementary/efl_ui_mi_controller.eo
+++ b/src/lib/elementary/efl_ui_mi_controller.eo
@@ -67,6 +67,12 @@ class @beta Efl.Ui.Mi_Controller extends Efl.Ui.Widget implements Efl.File, Efl.
}
return: bool; [[$true when it's successful. $false otherwise.]]
}
+ value_provider_override @beta {
+ [[ ]]
+ params {
+ value_provider: Efl.Gfx.Vg.Value_Provider;
+ }
+ }
}
implements {
Efl.Object.constructor;
diff --git a/src/lib/elementary/efl_ui_mi_rule.c b/src/lib/elementary/efl_ui_mi_rule.c
index 92497fbd96..125b1761c0 100644
--- a/src/lib/elementary/efl_ui_mi_rule.c
+++ b/src/lib/elementary/efl_ui_mi_rule.c
@@ -40,7 +40,7 @@ tap_gesture_cb(void *data , const Efl_Event *ev)
case EFL_GESTURE_STATE_CANCELED:
break;*/
case EFL_GESTURE_STATE_FINISHED:
- efl_event_callback_call(obj, EFL_EVENT_GESTURE_TAP, &ev);
+ efl_event_callback_call(obj, EFL_EVENT_GESTURE_TAP, g);
break;
default:
break;
@@ -48,8 +48,9 @@ tap_gesture_cb(void *data , const Efl_Event *ev)
}
EOLIAN static void
-_efl_ui_mi_rule_keypath_set(Eo *obj EINA_UNUSED, Efl_Ui_Mi_Rule_Data *pd, const char* keypath)
+_efl_ui_mi_rule_keypath_set(Eo *obj EINA_UNUSED, Efl_Ui_Mi_Rule_Data *pd, Eina_Stringshare *keypath)
{
+ if (!keypath) return;
Eo *parent;
Eo *object = obj;
Evas *e = NULL;
@@ -73,6 +74,8 @@ _efl_ui_mi_rule_keypath_set(Eo *obj EINA_UNUSED, Efl_Ui_Mi_Rule_Data *pd, const
printf("%s (%p)\n", efl_class_name_get(efl_class_get(parent)), parent);
#endif
+ eina_stringshare_replace(&pd->keypath, keypath);
+
evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, _tb_resize, pd->event_rect);
if (!strcmp(keypath, "*"))
{
@@ -86,12 +89,32 @@ _efl_ui_mi_rule_keypath_set(Eo *obj EINA_UNUSED, Efl_Ui_Mi_Rule_Data *pd, const
}
-EOLIAN const char*
+EOLIAN const Eina_Stringshare*
_efl_ui_mi_rule_keypath_get(const Eo *obj EINA_UNUSED, Efl_Ui_Mi_Rule_Data *pd)
{
return NULL;
}
+EOLIAN static void
+_efl_ui_mi_rule_value_provider_override(Eo *obj EINA_UNUSED, Efl_Ui_Mi_Rule_Data *pd, Efl_Gfx_Vg_Value_Provider *value_provider)
+{
+ if (!value_provider) return;
+ Eo *parent;
+ Eo *object = obj;
+ Evas *e = NULL;
+ do
+ {
+ parent = efl_parent_get(object);
+ if (!parent) continue;
+
+ if (efl_class_get(parent) == EFL_UI_MI_CONTROLLER_CLASS) break;
+ object = parent;
+ } while(!e);
+
+ if (!efl_gfx_vg_value_provider_keypath_get(value_provider))
+ efl_gfx_vg_value_provider_keypath_set(value_provider, pd->keypath);
+ efl_ui_mi_controller_value_provider_override(parent, value_provider);
+}
EOLIAN static void
_efl_ui_mi_rule_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Mi_Rule_Data *priv)
@@ -112,6 +135,7 @@ EOLIAN static void
_efl_ui_mi_rule_efl_object_destructor(Eo *obj,
Efl_Ui_Mi_Rule_Data *pd EINA_UNUSED)
{
+ if (pd->keypath) eina_stringshare_del(pd->keypath);
efl_destructor(efl_super(obj, MY_CLASS));
}
diff --git a/src/lib/elementary/efl_ui_mi_rule.eo b/src/lib/elementary/efl_ui_mi_rule.eo
index 339dc52c05..be5f1ac082 100644
--- a/src/lib/elementary/efl_ui_mi_rule.eo
+++ b/src/lib/elementary/efl_ui_mi_rule.eo
@@ -14,7 +14,13 @@ class @beta Efl.Ui.Mi_Rule extends Efl.Object implements Efl.Canvas.Gesture_Even
get {
}
values {
- keypath: string; [[ ]]
+ keypath: stringshare; [[ ]]
+ }
+ }
+ value_provider_override @beta {
+ [[ ]]
+ params {
+ value_provider: Efl.Gfx.Vg.Value_Provider;
}
}
}
diff --git a/src/lib/elementary/efl_ui_mi_rule_private.h b/src/lib/elementary/efl_ui_mi_rule_private.h
index 18de373c36..b417887994 100644
--- a/src/lib/elementary/efl_ui_mi_rule_private.h
+++ b/src/lib/elementary/efl_ui_mi_rule_private.h
@@ -9,6 +9,7 @@ typedef struct _Efl_Ui_Mi_Rule_Data Efl_Ui_Mi_Rule_Data;
struct _Efl_Ui_Mi_Rule_Data
{
Evas_Object *event_rect;
+ Eina_Stringshare *keypath;
};
#define EFL_UI_MI_RULE_DATA_GET(o, sd) \