diff --git a/legacy/evas/src/lib/Evas.h b/legacy/evas/src/lib/Evas.h index df061e88a0..e1076a5f6a 100644 --- a/legacy/evas/src/lib/Evas.h +++ b/legacy/evas/src/lib/Evas.h @@ -60,8 +60,6 @@ typedef void Evas; typedef void Evas_Object; /** An Evas Performance handle */ typedef void Evas_Performance; -/** An Evas Key */ -typedef void Evas_Key; /** An Evas Modifier */ typedef void Evas_Modifier; /** An Evas Lock */ @@ -179,7 +177,7 @@ struct _Evas_Event_Mouse_Move struct _Evas_Event_Key_Down { - Evas_Key *key; + char *keyname; void *data; Evas_Modifier *modifiers; Evas_Lock *locks; @@ -187,7 +185,7 @@ struct _Evas_Event_Key_Down struct _Evas_Event_Key_Up { - Evas_Key *key; + char *keyname; void *data; Evas_Modifier *modifiers; Evas_Lock *locks; @@ -383,7 +381,7 @@ extern "C" { Evas_List *evas_objects_at_xy_get (Evas *e, double x, double y, int include_pass_events_objects, int include_hidden_objects); Evas_List *evas_objects_in_rectangle_get (Evas *e, double x, double y, double w, double h, int include_pass_events_objects, int include_hidden_objects); - Evas_Smart *evas_smart_new (char *name, void (*func_add) (Evas_Object *o), void (*func_del) (Evas_Object *o), void (*func_layer_set) (Evas_Object *o, int l), void (*func_raise) (Evas_Object *o), void (*func_lower) (Evas_Object *o), void (*func_stack_above) (Evas_Object *o, Evas_Object *above), void (*func_stack_below) (Evas_Object *o, Evas_Object *below), void (*func_move) (Evas_Object *o, double x, double y), void (*func_resize) (Evas_Object *o, double w, double h), void (*func_show) (Evas_Object *o), void (*func_hide) (Evas_Object *o), void (*func_color_set) (Evas_Object *o, int r, int g, int b, int a), void (*func_clip_set) (Evas_Object *o, Evas_Object *clip), void (*func_clip_unset) (Evas_Object *o), void *data); + Evas_Smart *evas_smart_new (char *name, void (*func_add) (Evas_Object *obj), void (*func_del) (Evas_Object *obj), void (*func_layer_set) (Evas_Object *obj, int l), void (*func_raise) (Evas_Object *obj), void (*func_lower) (Evas_Object *obj), void (*func_stack_above) (Evas_Object *obj, Evas_Object *above), void (*func_stack_below) (Evas_Object *obj, Evas_Object *below), void (*func_move) (Evas_Object *obj, double x, double y), void (*func_resize) (Evas_Object *obj, double w, double h), void (*func_show) (Evas_Object *obj), void (*func_hide) (Evas_Object *obj), void (*func_color_set) (Evas_Object *obj, int r, int g, int b, int a), void (*func_clip_set) (Evas_Object *obj, Evas_Object *clip), void (*func_clip_unset) (Evas_Object *obj), void *data); void evas_smart_free (Evas_Smart *s); void *evas_smart_data_get (Evas_Smart *s); @@ -405,29 +403,24 @@ extern "C" { void evas_event_feed_mouse_move_data (Evas *e, int x, int y, void *data); void evas_event_feed_mouse_in_data (Evas *e, void *data); void evas_event_feed_mouse_out_data (Evas *e, void *data); -/* FIXME: implement... void evas_event_feed_key_down_data (Evas *e, char *keyname, void *data); void evas_event_feed_key_up_data (Evas *e, char *keyname, void *data); -...end implement */ void evas_event_feed_mouse_down (Evas *e, int b); void evas_event_feed_mouse_up (Evas *e, int b); void evas_event_feed_mouse_move (Evas *e, int x, int y); void evas_event_feed_mouse_in (Evas *e); void evas_event_feed_mouse_out (Evas *e); -/* FIXME: implement... void evas_event_feed_key_down (Evas *e, char *keyname); void evas_event_feed_key_up (Evas *e, char *keyname); - void evas_object_focus_set (Evas_Object *o, int focus); - int evas_object_focus_get (Evas_Object *o); + void evas_object_focus_set (Evas_Object *obj, int focus); + int evas_object_focus_get (Evas_Object *obj); Evas_Object *evas_focus_get (Evas *e); Evas_Modifier *evas_key_modifier_get (Evas *e); Evas_Lock *evas_key_lock_get (Evas *e); - char *evas_key_name_get (Evas_Key *k); - int evas_key_modifier_is_set_get (Evas_Modifier *m, char *keyname); int evas_key_lock_is_set_get (Evas_Lock *l, char *keyname); @@ -442,12 +435,8 @@ extern "C" { void evas_key_lock_on (Evas *e, char *keyname); void evas_key_lock_off (Evas *e, char *keyname); - int evas_object_key_grab (Evas_Object *o, char *keyname, int exclusive); - void evas_object_key_ungrab (Evas_Object *o, char *keyname); - - * errr need to add key grabbing/ungrabbing calls. - -...end implement */ + int evas_object_key_grab (Evas_Object *obj, char *keyname, int exclusive); + void evas_object_key_ungrab (Evas_Object *obj, char *keyname); void evas_object_pass_events_set (Evas_Object *obj, int pass); int evas_object_pass_events_get (Evas_Object *obj); diff --git a/legacy/evas/src/lib/canvas/Makefile.am b/legacy/evas/src/lib/canvas/Makefile.am index ad213ce59f..b9521560ee 100644 --- a/legacy/evas/src/lib/canvas/Makefile.am +++ b/legacy/evas/src/lib/canvas/Makefile.am @@ -20,6 +20,8 @@ evas_callbacks.c \ evas_clip.c \ evas_data.c \ evas_events.c \ +evas_focus.c \ +evas_key.c \ evas_layer.c \ evas_main.c \ evas_name.c \ diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c index d67dd51e3b..9a665ad62b 100644 --- a/legacy/evas/src/lib/canvas/evas_events.c +++ b/legacy/evas/src/lib/canvas/evas_events.c @@ -110,6 +110,8 @@ evas_event_feed_mouse_down_data(Evas *e, int b, void *data) ev.canvas.x = e->pointer.canvas_x; ev.canvas.y = e->pointer.canvas_y; ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev); } if (copy) copy = evas_list_free(copy); @@ -143,6 +145,9 @@ evas_event_feed_mouse_up_data(Evas *e, int b, void *data) ev.output.y = e->pointer.y; ev.canvas.x = e->pointer.canvas_x; ev.canvas.y = e->pointer.canvas_y; + ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev); } if (copy) copy = evas_list_free(copy); @@ -173,6 +178,8 @@ evas_event_feed_mouse_up_data(Evas *e, int b, void *data) ev.canvas.x = e->pointer.canvas_x; ev.canvas.y = e->pointer.canvas_y; ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); } } @@ -194,6 +201,8 @@ evas_event_feed_mouse_up_data(Evas *e, int b, void *data) ev.canvas.x = e->pointer.canvas_x; ev.canvas.y = e->pointer.canvas_y; ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev); } } @@ -259,6 +268,8 @@ evas_event_feed_mouse_move_data(Evas *e, int x, int y, void *data) ev.prev.canvas.x = pcx; ev.prev.canvas.y = pcy; ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev); } } @@ -283,6 +294,8 @@ evas_event_feed_mouse_move_data(Evas *e, int x, int y, void *data) ev.canvas.x = e->pointer.canvas_x; ev.canvas.y = e->pointer.canvas_y; ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); } } @@ -326,6 +339,8 @@ evas_event_feed_mouse_move_data(Evas *e, int x, int y, void *data) ev.prev.canvas.x = pcx; ev.prev.canvas.y = pcy; ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev); } } @@ -341,6 +356,8 @@ evas_event_feed_mouse_move_data(Evas *e, int x, int y, void *data) ev.canvas.x = e->pointer.canvas_x; ev.canvas.y = e->pointer.canvas_y; ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); } } @@ -363,6 +380,8 @@ evas_event_feed_mouse_move_data(Evas *e, int x, int y, void *data) ev.canvas.x = e->pointer.canvas_x; ev.canvas.y = e->pointer.canvas_y; ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev); } } @@ -391,6 +410,49 @@ evas_event_feed_mouse_out_data(Evas *e, void *data) e->pointer.inside = 0; } +void +evas_event_feed_key_down_data(Evas *e, char *keyname, void *data) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + if (!keyname) return; + if (e->events_frozen > 0) return; + /* FIXME: handle grabs */ + if (e->focused) + { + Evas_Event_Key_Down ev; + + ev.keyname = keyname; + ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); + evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_DOWN, &ev); + } +} + +void +evas_event_feed_key_up_data(Evas *e, char *keyname, void *data) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + if (!keyname) return; + if (e->events_frozen > 0) return; + if (!e->focused) return; + /* FIXME: handle grabs */ + if (e->focused) + { + Evas_Event_Key_Up ev; + + ev.keyname = keyname; + ev.data = data; + ev.modifiers = &(e->modifiers); + ev.locks = &(e->locks); + evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_UP, &ev); + } +} + void evas_event_feed_mouse_down(Evas *e, int b) { @@ -421,6 +483,19 @@ evas_event_feed_mouse_out(Evas *e) evas_event_feed_mouse_out_data(e, NULL); } +void +evas_event_feed_key_down(Evas *e, char *keyname) +{ + evas_event_feed_key_down_data(e, keyname, NULL); +} + +void +evas_event_feed_key_up(Evas *e, char *keyname) +{ + evas_event_feed_key_up_data(e, keyname, NULL); +} + + void evas_object_pass_events_set(Evas_Object *obj, int pass) { diff --git a/legacy/evas/src/lib/canvas/evas_focus.c b/legacy/evas/src/lib/canvas/evas_focus.c new file mode 100644 index 0000000000..2b6c7d9712 --- /dev/null +++ b/legacy/evas/src/lib/canvas/evas_focus.c @@ -0,0 +1,52 @@ +#include "evas_common.h" +#include "evas_private.h" +#include "Evas.h" + +/* private calls */ + +/* local calls */ + +/* public calls */ + +void +evas_object_focus_set(Evas_Object *obj, int focus) +{ + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); + return; + MAGIC_CHECK_END(); + + if (focus) + { + if (obj->focused) return; + if (obj->layer->evas->focused) + evas_object_focus_set(obj->layer->evas->focused, 0); + obj->focused = 1; + obj->layer->evas->focused = obj; + evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL); + } + else + { + if (!obj->focused) return; + obj->focused = 0; + obj->layer->evas->focused = NULL; + evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL); + } +} + +int +evas_object_focus_get(Evas_Object *obj) +{ + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); + return 0; + MAGIC_CHECK_END(); + return obj->focused; +} + +Evas_Object * +evas_focus_get(Evas *e) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return NULL; + MAGIC_CHECK_END(); + return e->focused; +} diff --git a/legacy/evas/src/lib/canvas/evas_key.c b/legacy/evas/src/lib/canvas/evas_key.c new file mode 100644 index 0000000000..8ee82acc58 --- /dev/null +++ b/legacy/evas/src/lib/canvas/evas_key.c @@ -0,0 +1,230 @@ +#include "evas_common.h" +#include "evas_private.h" +#include "Evas.h" + +/* private calls */ + +static int evas_key_modifier_number(Evas_Modifier *m, char *keyname); +static int evas_key_lock_number(Evas_Lock *l, char *keyname); + +static int +evas_key_modifier_number(Evas_Modifier *m, char *keyname) +{ + int i; + + for (i = 0; i < m->mod.count; i++) + { + if (!strcmp(m->mod.list[i], keyname)) return i; + } + return -1; +} + +static int +evas_key_lock_number(Evas_Lock *l, char *keyname) +{ + int i; + + for (i = 0; i < l->lock.count; i++) + { + if (!strcmp(l->lock.list[i], keyname)) return i; + } + return -1; +} + +/* local calls */ + +/* public calls */ + +Evas_Modifier * +evas_key_modifier_get(Evas *e) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return NULL; + MAGIC_CHECK_END(); + return &(e->modifiers); +} + +Evas_Lock * +evas_key_lock_get(Evas *e) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return NULL; + MAGIC_CHECK_END(); + return &(e->locks); +} + +int +evas_key_modifier_is_set_get(Evas_Modifier *m, char *keyname) +{ + unsigned long long num; + + if (!m) return 0; + if (!keyname) return 0; + num = (unsigned long long)evas_key_modifier_number(m, keyname); + if (num < 0) return 0; + num = 1 << num; + if (m->mask & num) return 1; + return 0; +} + +int +evas_key_lock_is_set_get(Evas_Lock *l, char *keyname) +{ + unsigned long long num; + + if (!l) return 0; + if (!keyname) return 0; + num = (unsigned long long)evas_key_lock_number(l, keyname); + if (num < 0) return 0; + num = 1 << num; + if (l->mask & num) return 1; + return 0; +} + +void +evas_key_modifier_add(Evas *e, char *keyname) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + if (!keyname) return; + if (e->modifiers.mod.count >= 64) return; + evas_key_modifier_del(e, keyname); + e->modifiers.mod.count++; + e->modifiers.mod.list = realloc(e->modifiers.mod.list, e->modifiers.mod.count * sizeof(char *)); + e->modifiers.mod.list[e->modifiers.mod.count - 1] = strdup(keyname); + e->modifiers.mask = 0; +} + +void +evas_key_modifier_del(Evas *e, char *keyname) +{ + int i; + + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + if (!keyname) return; + for (i = 0; i < e->modifiers.mod.count; i++) + { + if (!strcmp(e->modifiers.mod.list[i], keyname)) + { + int j; + + free(e->modifiers.mod.list[i]); + e->modifiers.mod.count--; + for (j = i; j < e->modifiers.mod.count; j++) + e->modifiers.mod.list[j] = e->modifiers.mod.list[j + 1]; + e->modifiers.mask = 0; + return; + } + } +} + +void +evas_key_lock_add(Evas *e, char *keyname) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + if (!keyname) return; + if (e->locks.lock.count >= 64) return; + evas_key_lock_del(e, keyname); + e->locks.lock.count++; + e->locks.lock.list = realloc(e->locks.lock.list, e->locks.lock.count * sizeof(char *)); + e->locks.lock.list[e->locks.lock.count - 1] = strdup(keyname); + e->locks.mask = 0; +} + +void +evas_key_lock_del(Evas *e, char *keyname) +{ + int i; + + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + if (!keyname) return; + e->locks.mask = 0; + for (i = 0; i < e->locks.lock.count; i++) + { + if (!strcmp(e->locks.lock.list[i], keyname)) + { + int j; + + free(e->locks.lock.list[i]); + e->locks.lock.count--; + for (j = i; j < e->locks.lock.count; j++) + e->locks.lock.list[j] = e->locks.lock.list[j + 1]; + e->locks.mask = 0; + return; + } + } +} + +void +evas_key_modifier_on(Evas *e, char *keyname) +{ + unsigned long long num; + + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + num = (unsigned long long)evas_key_modifier_number(&(e->modifiers), keyname); + if (num < 0) return; + num = 1 << num; + e->modifiers.mask |= num; +} + +void +evas_key_modifier_off(Evas *e, char *keyname) +{ + unsigned long long num; + + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + num = (unsigned long long)evas_key_modifier_number(&(e->modifiers), keyname); + if (num < 0) return; + num = 1 << num; + e->modifiers.mask &= ~num; +} + +void +evas_key_lock_on(Evas *e, char *keyname) +{ + unsigned long long num; + + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + num = (unsigned long long)evas_key_lock_number(&(e->locks), keyname); + if (num < 0) return; + num = 1 << num; + e->locks.mask |= num; +} + +void +evas_key_lock_off(Evas *e, char *keyname) +{ + unsigned long long num; + + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + num = (unsigned long long)evas_key_lock_number(&(e->locks), keyname); + if (num < 0) return; + num = 1 << num; + e->locks.mask &= ~num; +} + +/* errr need to add key grabbing/ungrabbing calls - missing modifier stuff. */ +int +evas_object_key_grab(Evas_Object *obj, char *keyname, int exclusive) +{ +} + +void +evas_object_key_ungrab(Evas_Object *obj, char *keyname) +{ +} diff --git a/legacy/evas/src/lib/canvas/evas_object_intercept.c b/legacy/evas/src/lib/canvas/evas_object_intercept.c index 2166b4d722..ca4befa0b4 100644 --- a/legacy/evas/src/lib/canvas/evas_object_intercept.c +++ b/legacy/evas/src/lib/canvas/evas_object_intercept.c @@ -52,7 +52,7 @@ evas_object_intercept_call_show(Evas_Object *obj) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->show.func; + ret = (int)obj->interceptors->show.func; if (obj->interceptors->show.func) obj->interceptors->show.func(obj->interceptors->show.data, obj); obj->intercepted = 0; @@ -68,7 +68,7 @@ evas_object_intercept_call_hide(Evas_Object *obj) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->hide.func; + ret = (int)obj->interceptors->hide.func; if (obj->interceptors->hide.func) obj->interceptors->hide.func(obj->interceptors->hide.data, obj); obj->intercepted = 0; @@ -84,7 +84,7 @@ evas_object_intercept_call_move(Evas_Object *obj, double x, double y) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->move.func; + ret = (int)obj->interceptors->move.func; if (obj->interceptors->move.func) obj->interceptors->move.func(obj->interceptors->move.data, obj, x, y); obj->intercepted = 0; @@ -100,7 +100,7 @@ evas_object_intercept_call_resize(Evas_Object *obj, double w, double h) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->resize.func; + ret = (int)obj->interceptors->resize.func; if (obj->interceptors->resize.func) obj->interceptors->resize.func(obj->interceptors->resize.data, obj, w, h); obj->intercepted = 0; @@ -116,7 +116,7 @@ evas_object_intercept_call_raise(Evas_Object *obj) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->raise.func; + ret = (int)obj->interceptors->raise.func; if (obj->interceptors->raise.func) obj->interceptors->raise.func(obj->interceptors->raise.data, obj); obj->intercepted = 0; @@ -132,7 +132,7 @@ evas_object_intercept_call_lower(Evas_Object *obj) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->lower.func; + ret = (int)obj->interceptors->lower.func; if (obj->interceptors->lower.func) obj->interceptors->lower.func(obj->interceptors->lower.data, obj); obj->intercepted = 0; @@ -148,7 +148,7 @@ evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->stack_above.func; + ret = (int)obj->interceptors->stack_above.func; if (obj->interceptors->stack_above.func) obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, obj, above); obj->intercepted = 0; @@ -164,7 +164,7 @@ evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->stack_below.func; + ret = (int)obj->interceptors->stack_below.func; if (obj->interceptors->stack_below.func) obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, obj, below); obj->intercepted = 0; @@ -180,7 +180,7 @@ evas_object_intercept_call_layer_set(Evas_Object *obj, int l) if (!obj->interceptors) return 0; if (obj->intercepted) return 0; obj->intercepted = 1; - ret = obj->interceptors->layer_set.func; + ret = (int)obj->interceptors->layer_set.func; if (obj->interceptors->layer_set.func) obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, obj, l); obj->intercepted = 0; diff --git a/legacy/evas/src/lib/canvas/evas_object_main.c b/legacy/evas/src/lib/canvas/evas_object_main.c index 909f0196d0..35babdfa38 100644 --- a/legacy/evas/src/lib/canvas/evas_object_main.c +++ b/legacy/evas/src/lib/canvas/evas_object_main.c @@ -408,6 +408,12 @@ evas_object_del(Evas_Object *obj) evas_object_free(obj, 1); return; } + if (obj->focused) + { + obj->focused = 0; + obj->layer->evas->focused = NULL; + evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL); + } evas_object_hide(obj); while (obj->clip.clipees) evas_object_clip_unset(obj->clip.clipees->data); if (obj->cur.clipper) evas_object_clip_unset(obj); @@ -587,6 +593,8 @@ evas_object_hide(Evas_Object *obj) ev.canvas.x = obj->layer->evas->pointer.canvas_x; ev.canvas.y = obj->layer->evas->pointer.canvas_y; ev.data = NULL; + ev.modifiers = &(obj->layer->evas->modifiers); + ev.locks = &(obj->layer->evas->locks); evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); } } diff --git a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c b/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c index cc18718643..d1db60d89d 100644 --- a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c +++ b/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c @@ -237,7 +237,7 @@ evas_engine_directfb_output_resize(void *data, int w, int h) re->backbuf = new_surf; re->rgba_image->image->w = w; re->rgba_image->image->h = h; - re->rgba_image->image->data = new_surf; + re->rgba_image->image->data = (void *)new_surf; } } diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 527cba740c..0ed13b0dcd 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -42,7 +42,6 @@ typedef struct _Evas_Data_Node Evas_Data_Node; typedef struct _Evas_Func_Node Evas_Func_Node; typedef struct _Evas_Func Evas_Func; typedef struct _Evas_Object_Func Evas_Object_Func; -typedef struct _Evas_Key Evas_Key; typedef struct _Evas_Modifier Evas_Modifier; typedef struct _Evas_Lock Evas_Lock; typedef struct _Evas_Smart Evas_Smart; @@ -162,16 +161,11 @@ struct _Evas_Smart void (*func_clip_unset) (Evas_Object *o); }; -struct _Evas_Key -{ - char *name; /* string version of key code enum */ -}; - struct _Evas_Modifier { struct { int count; - Evas_Key *list; + char **list; } mod; unsigned long long mask; /* ok we have a max of 64 modifiers */ }; @@ -180,7 +174,7 @@ struct _Evas_Lock { struct { int count; - Evas_Key *list; + char **list; } lock; unsigned long long mask; /* we have a max of 64 locks */ }; @@ -241,7 +235,11 @@ struct _Evas int info_magic; } engine; - Evas_List *font_path; + Evas_List *font_path; + + Evas_Object *focused; + Evas_Modifier modifiers; + Evas_Lock locks; }; struct _Evas_Layer @@ -306,6 +304,7 @@ struct _Evas_Object int mouse_grabbed : 1; int pre_render_done : 1; int intercepted : 1; + int focused : 1; int delete_me;