From bd2cf1848b19011ccd19f16802e9bef2a21659c8 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Tue, 14 Aug 2007 20:32:52 +0000 Subject: [PATCH] Delete event callbacks when e_entry is deleted. Allow apps/modules to trap a "key_down" event for e_widget_entry. SVN revision: 31311 --- src/bin/e_entry.c | 13 +++++++++++-- src/bin/e_widget_entry.c | 14 +++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/bin/e_entry.c b/src/bin/e_entry.c index 9f6d62e80..f695e471f 100644 --- a/src/bin/e_entry.c +++ b/src/bin/e_entry.c @@ -188,8 +188,8 @@ e_entry_min_size_get(Evas_Object *entry, Evas_Coord *minw, Evas_Coord *minh) if ((!entry) || (!(sd = evas_object_smart_data_get(entry)))) return; - if (minw) *minw = sd->min_width; - if (minh) *minh = sd->height; + if (minw) *minw = sd->min_width; + if (minh) *minh = sd->height; } /** @@ -928,6 +928,15 @@ _e_entry_smart_del(Evas_Object *object) if ((!object) || !(sd = evas_object_smart_data_get(object))) return; + + evas_object_event_callback_del(object, EVAS_CALLBACK_KEY_DOWN, + _e_entry_key_down_cb); + evas_object_event_callback_del(object, EVAS_CALLBACK_MOUSE_DOWN, + _e_entry_mouse_down_cb); + evas_object_event_callback_del(object, EVAS_CALLBACK_MOUSE_UP, + _e_entry_mouse_up_cb); + evas_object_event_callback_del(object, EVAS_CALLBACK_MOUSE_MOVE, + _e_entry_mouse_move_cb); ecore_event_handler_del(sd->selection_handler); evas_object_del(sd->editable_object); diff --git a/src/bin/e_widget_entry.c b/src/bin/e_widget_entry.c index f40a8a926..382931f5e 100644 --- a/src/bin/e_widget_entry.c +++ b/src/bin/e_widget_entry.c @@ -18,7 +18,8 @@ static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *even static void _e_wid_in(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_out(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_changed_cb(void *data, Evas_Object *obj, void *event_info); - +static void _e_wid_key_down_cb(void *data, Evas_Object *obj, void *event_info); +static void _e_wid_keydown(void *data, Evas *e, Evas_Object *obj, void *event_info); /* externally accessible functions */ @@ -55,7 +56,8 @@ e_widget_entry_add(Evas *evas, char **text_location) evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN, _e_wid_in, obj); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_OUT, _e_wid_out, obj); - + evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, _e_wid_keydown, obj); + if ((text_location) && (*text_location)) e_entry_text_set(o, *text_location); @@ -63,7 +65,7 @@ e_widget_entry_add(Evas *evas, char **text_location) e_widget_min_size_set(obj, minw, minh); evas_object_smart_callback_add(o, "changed", _e_wid_changed_cb, obj); - + return obj; } @@ -254,3 +256,9 @@ _e_wid_changed_cb(void *data, Evas_Object *obj, void *event_info) e_widget_change(data); } + +static void +_e_wid_keydown(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + evas_object_smart_callback_call(data, "key_down", event_info); +}