Delete event callbacks when e_entry is deleted.

Allow apps/modules to trap a "key_down" event for e_widget_entry.


SVN revision: 31311
This commit is contained in:
Christopher Michael 2007-08-14 20:32:52 +00:00
parent 26478b961c
commit bd2cf1848b
2 changed files with 22 additions and 5 deletions

View File

@ -929,6 +929,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);
evas_object_del(sd->entry_object);

View File

@ -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,6 +56,7 @@ 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);
@ -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);
}