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

@ -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);

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,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);
}