1. removed mosue_events 0 on swallows - as this now changes behavior. normalise

2. gustavo's patch.


SVN revision: 29352
This commit is contained in:
Carsten Haitzler 2007-04-04 12:51:51 +00:00
parent 7512a58ace
commit e0b17ee4ee
4 changed files with 77 additions and 43 deletions

View File

@ -364,3 +364,57 @@ _edje_pending_timer_cb(void *data)
free(pp);
return 0;
}
void
_edje_callbacks_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp)
{
evas_object_event_callback_add(obj,
EVAS_CALLBACK_MOUSE_IN,
_edje_mouse_in_cb,
ed);
evas_object_event_callback_add(obj,
EVAS_CALLBACK_MOUSE_OUT,
_edje_mouse_out_cb,
ed);
evas_object_event_callback_add(obj,
EVAS_CALLBACK_MOUSE_DOWN,
_edje_mouse_down_cb,
ed);
evas_object_event_callback_add(obj,
EVAS_CALLBACK_MOUSE_UP,
_edje_mouse_up_cb,
ed);
evas_object_event_callback_add(obj,
EVAS_CALLBACK_MOUSE_MOVE,
_edje_mouse_move_cb,
ed);
evas_object_event_callback_add(obj,
EVAS_CALLBACK_MOUSE_WHEEL,
_edje_mouse_wheel_cb,
ed);
evas_object_data_set(obj, "real_part", rp);
}
void
_edje_callbacks_del(Evas_Object *obj)
{
evas_object_event_callback_del(obj,
EVAS_CALLBACK_MOUSE_IN,
_edje_mouse_in_cb);
evas_object_event_callback_del(obj,
EVAS_CALLBACK_MOUSE_OUT,
_edje_mouse_out_cb);
evas_object_event_callback_del(obj,
EVAS_CALLBACK_MOUSE_DOWN,
_edje_mouse_down_cb);
evas_object_event_callback_del(obj,
EVAS_CALLBACK_MOUSE_UP,
_edje_mouse_up_cb);
evas_object_event_callback_del(obj,
EVAS_CALLBACK_MOUSE_MOVE,
_edje_mouse_move_cb);
evas_object_event_callback_del(obj,
EVAS_CALLBACK_MOUSE_WHEEL,
_edje_mouse_wheel_cb);
evas_object_data_del(obj, "real_part");
}

View File

@ -131,31 +131,7 @@ edje_object_file_set(Evas_Object *obj, const char *file, const char *part)
{
if (ep->mouse_events)
{
evas_object_event_callback_add(rp->object,
EVAS_CALLBACK_MOUSE_IN,
_edje_mouse_in_cb,
ed);
evas_object_event_callback_add(rp->object,
EVAS_CALLBACK_MOUSE_OUT,
_edje_mouse_out_cb,
ed);
evas_object_event_callback_add(rp->object,
EVAS_CALLBACK_MOUSE_DOWN,
_edje_mouse_down_cb,
ed);
evas_object_event_callback_add(rp->object,
EVAS_CALLBACK_MOUSE_UP,
_edje_mouse_up_cb,
ed);
evas_object_event_callback_add(rp->object,
EVAS_CALLBACK_MOUSE_MOVE,
_edje_mouse_move_cb,
ed);
evas_object_event_callback_add(rp->object,
EVAS_CALLBACK_MOUSE_WHEEL,
_edje_mouse_wheel_cb,
ed);
evas_object_data_set(rp->object, "real_part", rp);
_edje_callbacks_add(rp->object, ed, rp);
if (ep->repeat_events)
evas_object_repeat_events_set(rp->object, 1);
}
@ -537,25 +513,8 @@ _edje_file_del(Edje *ed)
ed->parts = evas_list_remove(ed->parts, rp);
if (rp->object)
{
evas_object_event_callback_del(rp->object,
EVAS_CALLBACK_MOUSE_IN,
_edje_mouse_in_cb);
evas_object_event_callback_del(rp->object,
EVAS_CALLBACK_MOUSE_OUT,
_edje_mouse_out_cb);
evas_object_event_callback_del(rp->object,
EVAS_CALLBACK_MOUSE_DOWN,
_edje_mouse_down_cb);
evas_object_event_callback_del(rp->object,
EVAS_CALLBACK_MOUSE_UP,
_edje_mouse_up_cb);
evas_object_event_callback_del(rp->object,
EVAS_CALLBACK_MOUSE_MOVE,
_edje_mouse_move_cb);
evas_object_event_callback_del(rp->object,
EVAS_CALLBACK_MOUSE_WHEEL,
_edje_mouse_wheel_cb);
_edje_text_real_part_on_del(ed, rp);
_edje_callbacks_del(rp->object);
evas_object_del(rp->object);
}
if (rp->swallowed_object)
@ -565,6 +524,8 @@ _edje_file_del(Edje *ed)
EVAS_CALLBACK_FREE,
_edje_object_part_swallow_free_cb);
evas_object_clip_unset(rp->swallowed_object);
if (rp->part->mouse_events)
_edje_callbacks_del(rp->swallowed_object);
rp->swallowed_object = NULL;
/* I think it would be better swallowed objects dont get deleted */
/* evas_object_del(rp->swallowed_object);*/

View File

@ -912,6 +912,8 @@ void _edje_mouse_move_cb(void *data, Evas * e, Evas_Object * obj, void *event_i
void _edje_mouse_wheel_cb(void *data, Evas * e, Evas_Object * obj, void *event_info);
int _edje_timer_cb(void *data);
int _edje_pending_timer_cb(void *data);
void _edje_callbacks_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp);
void _edje_callbacks_del(Evas_Object *obj);
void _edje_edd_setup(void);
void _edje_edd_free(void);

View File

@ -785,6 +785,8 @@ edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_sw
_edje_object_part_swallow_free_cb);
evas_object_clip_unset(rp->swallowed_object);
evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part");
if (rp->part->mouse_events)
_edje_callbacks_del(rp->swallowed_object);
rp->swallowed_object = NULL;
}
if (!obj_swallow) return;
@ -845,6 +847,17 @@ edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_sw
rp->swallow_params.aspect.h = ah;
evas_object_data_set(rp->swallowed_object, "\377 edje.swallowing_part", rp);
}
if (rp->part->mouse_events)
{
_edje_callbacks_add(obj_swallow, ed, rp);
if (rp->part->repeat_events)
evas_object_repeat_events_set(obj_swallow, 1);
}
else
evas_object_pass_events_set(obj_swallow, 1);
ed->dirty = 1;
_edje_recalc(ed);
}
@ -1004,6 +1017,10 @@ edje_object_part_unswallow(Evas_Object *obj, Evas_Object *obj_swallow)
_edje_object_part_swallow_free_cb);
evas_object_clip_unset(rp->swallowed_object);
evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part");
if (rp->part->mouse_events)
_edje_callbacks_del(rp->swallowed_object);
rp->swallowed_object = NULL;
rp->swallow_params.min.w = 0;
rp->swallow_params.min.h = 0;