forked from enlightenment/efl
informers & interceptors... meant to "inform" callbacks of when an object
has been show, hidden, moved, resized or restacked :) handy for making widgets (ie child widget got resized.. parent can adjust to fit child widget). also interceptors.. designed to allow callbacks to intercept move, resize, show, hide and restacking calls and modiy behavior (handy for widget sets too!) SVN revision: 6488
This commit is contained in:
parent
0471054d09
commit
72b9af03de
|
@ -225,6 +225,8 @@ extern "C" {
|
||||||
void evas_hash_foreach (Evas_Hash *hash, int (*func) (Evas_Hash *hash, const char *key, void *data, void *fdata), void *fdata);
|
void evas_hash_foreach (Evas_Hash *hash, int (*func) (Evas_Hash *hash, const char *key, void *data, void *fdata), void *fdata);
|
||||||
int evas_hash_alloc_error (void);
|
int evas_hash_alloc_error (void);
|
||||||
|
|
||||||
|
int evas_alloc_error (void);
|
||||||
|
|
||||||
Evas *evas_new (void);
|
Evas *evas_new (void);
|
||||||
void evas_free (Evas *e);
|
void evas_free (Evas *e);
|
||||||
|
|
||||||
|
@ -301,12 +303,6 @@ extern "C" {
|
||||||
void evas_object_image_cache_set (Evas *e, int size);
|
void evas_object_image_cache_set (Evas *e, int size);
|
||||||
int evas_object_image_cache_get (Evas *e);
|
int evas_object_image_cache_get (Evas *e);
|
||||||
|
|
||||||
/* FIXME: add:
|
|
||||||
* multiple image format handler code (clean internal api)
|
|
||||||
* image loader (provided by app) code (callbacks)
|
|
||||||
* loadable image loader module query etc. code
|
|
||||||
*/
|
|
||||||
|
|
||||||
Evas_Object *evas_object_text_add (Evas *e);
|
Evas_Object *evas_object_text_add (Evas *e);
|
||||||
void evas_object_text_font_set (Evas_Object *obj, char *font, double size);
|
void evas_object_text_font_set (Evas_Object *obj, char *font, double size);
|
||||||
void evas_object_text_font_get (Evas_Object *obj, char **font, double *size);
|
void evas_object_text_font_get (Evas_Object *obj, char **font, double *size);
|
||||||
|
@ -324,10 +320,6 @@ extern "C" {
|
||||||
int evas_object_text_char_pos_get (Evas_Object *obj, int pos, double *cx, double *cy, double *cw, double *ch);
|
int evas_object_text_char_pos_get (Evas_Object *obj, int pos, double *cx, double *cy, double *cw, double *ch);
|
||||||
int evas_object_text_char_coords_get (Evas_Object *obj, double x, double y, double *cx, double *cy, double *cw, double *ch);
|
int evas_object_text_char_coords_get (Evas_Object *obj, double x, double y, double *cx, double *cy, double *cw, double *ch);
|
||||||
|
|
||||||
/* FIXME: add:
|
|
||||||
* text outline & shadowing code
|
|
||||||
*/
|
|
||||||
|
|
||||||
void evas_object_font_path_clear (Evas *e);
|
void evas_object_font_path_clear (Evas *e);
|
||||||
void evas_object_font_path_append (Evas *e, char *path);
|
void evas_object_font_path_append (Evas *e, char *path);
|
||||||
void evas_object_font_path_prepend (Evas *e, char *path);
|
void evas_object_font_path_prepend (Evas *e, char *path);
|
||||||
|
@ -458,9 +450,39 @@ extern "C" {
|
||||||
|
|
||||||
void evas_object_event_callback_add (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), void *data);
|
void evas_object_event_callback_add (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), void *data);
|
||||||
void *evas_object_event_callback_del (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info));
|
void *evas_object_event_callback_del (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info));
|
||||||
|
|
||||||
|
void evas_object_inform_show_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_inform_show_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
void evas_object_inform_hide_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_inform_hide_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
void evas_object_inform_move_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_inform_move_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
void evas_object_inform_resize_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_inform_resize_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
void evas_object_inform_restack_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_inform_restack_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
|
||||||
|
/* FIXME: implement... */
|
||||||
|
void evas_object_intercept_show_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_intercept_show_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
void evas_object_intercept_hide_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_intercept_hide_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
void evas_object_intercept_move_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double x, double y), void *data);
|
||||||
|
void *evas_object_intercept_move_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double x, double y));
|
||||||
|
void evas_object_intercept_resize_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double w, double h), void *data);
|
||||||
|
void *evas_object_intercept_resize_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double w, double h));
|
||||||
|
void evas_object_intercept_raise_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_intercept_raise_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
void evas_object_intercept_lower_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
void *evas_object_intercept_lower_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
void evas_object_intercept_stack_above_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above), void *data);
|
||||||
|
void *evas_object_intercept_stack_above_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above));
|
||||||
|
void evas_object_intercept_stack_below_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below), void *data);
|
||||||
|
void *evas_object_intercept_stack_below_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below));
|
||||||
|
void evas_object_intercept_layer_set_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l), void *data);
|
||||||
|
void *evas_object_intercept_layer_set_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l));
|
||||||
|
/* ...end implement */
|
||||||
|
|
||||||
int evas_alloc_error (void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,6 +26,8 @@ evas_name.c \
|
||||||
evas_object_gradient.c \
|
evas_object_gradient.c \
|
||||||
evas_object_image.c \
|
evas_object_image.c \
|
||||||
evas_object_main.c \
|
evas_object_main.c \
|
||||||
|
evas_object_inform.c \
|
||||||
|
evas_object_intercept.c \
|
||||||
evas_object_line.c \
|
evas_object_line.c \
|
||||||
evas_object_polygon.c \
|
evas_object_polygon.c \
|
||||||
evas_object_rectangle.c \
|
evas_object_rectangle.c \
|
||||||
|
|
|
@ -223,6 +223,7 @@ evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void (
|
||||||
if (!evas_mem_degrade(sizeof(Evas_List)))
|
if (!evas_mem_degrade(sizeof(Evas_List)))
|
||||||
{
|
{
|
||||||
MERR_FATAL();
|
MERR_FATAL();
|
||||||
|
free(fn);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,7 +128,11 @@ evas_object_layer_set(Evas_Object *obj, int l)
|
||||||
obj->cur.layer = l;
|
obj->cur.layer = l;
|
||||||
evas_object_inject(obj, e);
|
evas_object_inject(obj, e);
|
||||||
obj->restack = 1;
|
obj->restack = 1;
|
||||||
if (obj->clip.clipees) return;
|
if (obj->clip.clipees)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!obj->smart.smart)
|
if (!obj->smart.smart)
|
||||||
{
|
{
|
||||||
evas_object_change(obj);
|
evas_object_change(obj);
|
||||||
|
@ -139,6 +143,7 @@ evas_object_layer_set(Evas_Object *obj, int l)
|
||||||
if (evas_list_find(obj->layer->evas->pointer.object.in, obj))
|
if (evas_list_find(obj->layer->evas->pointer.object.in, obj))
|
||||||
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
||||||
}
|
}
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -0,0 +1,285 @@
|
||||||
|
#include "evas_common.h"
|
||||||
|
#include "evas_private.h"
|
||||||
|
#include "Evas.h"
|
||||||
|
|
||||||
|
typedef struct _Evas_Inform_Func_Node Evas_Inform_Func_Node;
|
||||||
|
|
||||||
|
struct _Evas_Inform_Func_Node
|
||||||
|
{
|
||||||
|
void (*func) (void *data, Evas_Object *obj);
|
||||||
|
void *data;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* local calls */
|
||||||
|
|
||||||
|
static void evas_object_inform_init(Evas_Object *obj);
|
||||||
|
static void evas_object_inform_deinit(Evas_Object *obj);
|
||||||
|
static void evas_object_inform_list_add(Evas_Object *obj, Evas_List **l, void (*func) (void *data, Evas_Object *obj), void *data);
|
||||||
|
static void *evas_object_inform_list_del(Evas_Object *obj, Evas_List **list, void (*func) (void *data, Evas_Object *obj));
|
||||||
|
static void evas_object_inform_call(Evas_Object *obj, Evas_List *list);
|
||||||
|
|
||||||
|
static void
|
||||||
|
evas_object_inform_init(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (!obj->informers)
|
||||||
|
obj->informers = evas_mem_calloc(sizeof(Evas_Inform_Func));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
evas_object_inform_deinit(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (!obj->informers) return;
|
||||||
|
if ((obj->informers->show) ||
|
||||||
|
(obj->informers->hide) ||
|
||||||
|
(obj->informers->move) ||
|
||||||
|
(obj->informers->resize) ||
|
||||||
|
(obj->informers->restack)) return;
|
||||||
|
free(obj->informers);
|
||||||
|
obj->informers = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
evas_object_inform_list_add(Evas_Object *obj, Evas_List **l, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
Evas_Inform_Func_Node *fn;
|
||||||
|
|
||||||
|
fn = evas_mem_calloc(sizeof(Evas_Inform_Func_Node));
|
||||||
|
if (!fn) return;
|
||||||
|
fn->func = func;
|
||||||
|
fn->data = data;
|
||||||
|
evas_object_inform_init(obj);
|
||||||
|
if (!obj->informers)
|
||||||
|
{
|
||||||
|
free(fn);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
do
|
||||||
|
{
|
||||||
|
*l = evas_list_append(*l, fn);
|
||||||
|
if (!evas_list_alloc_error()) return;
|
||||||
|
MERR_BAD();
|
||||||
|
if (!evas_mem_free(sizeof(Evas_List)))
|
||||||
|
{
|
||||||
|
if (!evas_mem_degrade(sizeof(Evas_List)))
|
||||||
|
{
|
||||||
|
evas_object_inform_deinit(obj);
|
||||||
|
MERR_FATAL();
|
||||||
|
free(fn);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (evas_list_alloc_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
evas_object_inform_list_del(Evas_Object *obj, Evas_List **list, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
if (!obj->informers) return NULL;
|
||||||
|
{
|
||||||
|
Evas_List *l;
|
||||||
|
|
||||||
|
for (l = (*list); l; l = l->next)
|
||||||
|
{
|
||||||
|
Evas_Inform_Func_Node *fn;
|
||||||
|
|
||||||
|
fn = l->data;
|
||||||
|
if (fn->func == func)
|
||||||
|
{
|
||||||
|
void *data;
|
||||||
|
|
||||||
|
data = fn->data;
|
||||||
|
free(fn);
|
||||||
|
(*list) = evas_list_remove_list((*list), l);
|
||||||
|
evas_object_inform_deinit(obj);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
evas_object_inform_call(Evas_Object *obj, Evas_List *list)
|
||||||
|
{
|
||||||
|
Evas_List *l;
|
||||||
|
|
||||||
|
for (l = list; l; l = l->next)
|
||||||
|
{
|
||||||
|
Evas_Inform_Func_Node *fn;
|
||||||
|
|
||||||
|
fn = l->data;
|
||||||
|
fn->func(fn->data, obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* private calls */
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_cleanup(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (!obj->informers) return;
|
||||||
|
while (obj->informers->show)
|
||||||
|
{
|
||||||
|
free(obj->informers->show->data);
|
||||||
|
obj->informers->show = evas_list_remove(obj->informers->show, obj->informers->show->data);
|
||||||
|
}
|
||||||
|
while (obj->informers->hide)
|
||||||
|
{
|
||||||
|
free(obj->informers->hide->data);
|
||||||
|
obj->informers->hide = evas_list_remove(obj->informers->hide, obj->informers->hide->data);
|
||||||
|
}
|
||||||
|
while (obj->informers->move)
|
||||||
|
{
|
||||||
|
free(obj->informers->move->data);
|
||||||
|
obj->informers->move = evas_list_remove(obj->informers->move, obj->informers->move->data);
|
||||||
|
}
|
||||||
|
while (obj->informers->resize)
|
||||||
|
{
|
||||||
|
free(obj->informers->resize->data);
|
||||||
|
obj->informers->resize = evas_list_remove(obj->informers->resize, obj->informers->resize->data);
|
||||||
|
}
|
||||||
|
while (obj->informers->restack)
|
||||||
|
{
|
||||||
|
free(obj->informers->restack->data);
|
||||||
|
obj->informers->restack = evas_list_remove(obj->informers->restack, obj->informers->restack->data);
|
||||||
|
}
|
||||||
|
free(obj->informers);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_call_show(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (!obj->informers) return;
|
||||||
|
evas_object_inform_call(obj, obj->informers->show);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_call_hide(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (!obj->informers) return;
|
||||||
|
evas_object_inform_call(obj, obj->informers->hide);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_call_move(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (!obj->informers) return;
|
||||||
|
evas_object_inform_call(obj, obj->informers->move);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_call_resize(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (!obj->informers) return;
|
||||||
|
evas_object_inform_call(obj, obj->informers->resize);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_call_restack(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (!obj->informers) return;
|
||||||
|
evas_object_inform_call(obj, obj->informers->restack);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* public calls */
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_show_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
evas_object_inform_list_add(obj, &(obj->informers->show), func, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_inform_show_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return evas_object_inform_list_del(obj, &(obj->informers->show), func);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_hide_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
evas_object_inform_list_add(obj, &(obj->informers->hide), func, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_inform_hide_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
return evas_object_inform_list_del(obj, &(obj->informers->hide), func);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_move_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
evas_object_inform_list_add(obj, &(obj->informers->move), func, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_inform_move_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return evas_object_inform_list_del(obj, &(obj->informers->move), func);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_resize_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
evas_object_inform_list_add(obj, &(obj->informers->resize), func, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_inform_resize_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return evas_object_inform_list_del(obj, &(obj->informers->resize), func);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_inform_restack_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
evas_object_inform_list_add(obj, &(obj->informers->restack), func, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_inform_restack_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return evas_object_inform_list_del(obj, &(obj->informers->restack), func);
|
||||||
|
}
|
|
@ -0,0 +1,174 @@
|
||||||
|
#include "evas_common.h"
|
||||||
|
#include "evas_private.h"
|
||||||
|
#include "Evas.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_show_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_show_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_hide_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_hide_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_move_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double x, double y), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_move_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double x, double y))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_resize_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double w, double h), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_resize_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double w, double h))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_raise_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_raise_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_lower_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_lower_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_stack_above_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_stack_above_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_stack_below_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_stack_below_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_intercept_layer_set_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l), void *data)
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
evas_object_intercept_layer_set_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l))
|
||||||
|
{
|
||||||
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
|
return NULL;
|
||||||
|
MAGIC_CHECK_END();
|
||||||
|
if (!func) return NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
|
@ -131,6 +131,8 @@ evas_object_line_xy_set(Evas_Object *obj, double x1, double y1, double x2, doubl
|
||||||
evas_event_feed_mouse_move(obj->layer->evas,
|
evas_event_feed_mouse_move(obj->layer->evas,
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y);
|
obj->layer->evas->pointer.y);
|
||||||
|
evas_object_inform_call_move(obj);
|
||||||
|
evas_object_inform_call_resize(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -20,6 +20,7 @@ void
|
||||||
evas_object_free(Evas_Object *obj, int clean_layer)
|
evas_object_free(Evas_Object *obj, int clean_layer)
|
||||||
{
|
{
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL);
|
||||||
|
evas_object_inform_cleanup(obj);
|
||||||
evas_object_smart_cleanup(obj);
|
evas_object_smart_cleanup(obj);
|
||||||
obj->func->free(obj);
|
obj->func->free(obj);
|
||||||
if (obj->name)
|
if (obj->name)
|
||||||
|
@ -476,7 +477,11 @@ evas_object_move(Evas_Object *obj, double x, double y)
|
||||||
obj->smart.smart->func_move(obj, x, y);
|
obj->smart.smart->func_move(obj, x, y);
|
||||||
}
|
}
|
||||||
if ((obj->cur.geometry.x == x) &&
|
if ((obj->cur.geometry.x == x) &&
|
||||||
(obj->cur.geometry.y == y)) return;
|
(obj->cur.geometry.y == y))
|
||||||
|
{
|
||||||
|
evas_object_inform_call_move(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
was = evas_object_is_in_output_rect(obj,
|
was = evas_object_is_in_output_rect(obj,
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y, 1, 1);
|
obj->layer->evas->pointer.y, 1, 1);
|
||||||
|
@ -495,6 +500,7 @@ evas_object_move(Evas_Object *obj, double x, double y)
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y);
|
obj->layer->evas->pointer.y);
|
||||||
}
|
}
|
||||||
|
evas_object_inform_call_move(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -512,7 +518,11 @@ evas_object_resize(Evas_Object *obj, double w, double h)
|
||||||
obj->smart.smart->func_resize(obj, w, h);
|
obj->smart.smart->func_resize(obj, w, h);
|
||||||
}
|
}
|
||||||
if ((obj->cur.geometry.w == w) &&
|
if ((obj->cur.geometry.w == w) &&
|
||||||
(obj->cur.geometry.h == h)) return;
|
(obj->cur.geometry.h == h))
|
||||||
|
{
|
||||||
|
evas_object_inform_call_resize(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
was = evas_object_is_in_output_rect(obj,
|
was = evas_object_is_in_output_rect(obj,
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y, 1, 1);
|
obj->layer->evas->pointer.y, 1, 1);
|
||||||
|
@ -557,7 +567,11 @@ evas_object_show(Evas_Object *obj)
|
||||||
if (obj->smart.smart->func_show)
|
if (obj->smart.smart->func_show)
|
||||||
obj->smart.smart->func_show(obj);
|
obj->smart.smart->func_show(obj);
|
||||||
}
|
}
|
||||||
if (obj->cur.visible) return;
|
if (obj->cur.visible)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_show(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->cur.visible = 1;
|
obj->cur.visible = 1;
|
||||||
evas_object_change(obj);
|
evas_object_change(obj);
|
||||||
evas_object_recalc_clippees(obj);
|
evas_object_recalc_clippees(obj);
|
||||||
|
@ -570,6 +584,7 @@ evas_object_show(Evas_Object *obj)
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y);
|
obj->layer->evas->pointer.y);
|
||||||
}
|
}
|
||||||
|
evas_object_inform_call_show(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -583,7 +598,11 @@ evas_object_hide(Evas_Object *obj)
|
||||||
if (obj->smart.smart->func_hide)
|
if (obj->smart.smart->func_hide)
|
||||||
obj->smart.smart->func_hide(obj);
|
obj->smart.smart->func_hide(obj);
|
||||||
}
|
}
|
||||||
if (!obj->cur.visible) return;
|
if (!obj->cur.visible)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_hide(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->cur.visible = 0;
|
obj->cur.visible = 0;
|
||||||
evas_object_change(obj);
|
evas_object_change(obj);
|
||||||
evas_object_recalc_clippees(obj);
|
evas_object_recalc_clippees(obj);
|
||||||
|
@ -615,6 +634,7 @@ evas_object_hide(Evas_Object *obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
evas_object_inform_call_hide(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -129,6 +129,8 @@ evas_object_polygon_point_add(Evas_Object *obj, double x, double y)
|
||||||
evas_event_feed_mouse_move(obj->layer->evas,
|
evas_event_feed_mouse_move(obj->layer->evas,
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y);
|
obj->layer->evas->pointer.y);
|
||||||
|
evas_object_inform_call_move(obj);
|
||||||
|
evas_object_inform_call_resize(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -165,6 +167,8 @@ evas_object_polygon_points_clear(Evas_Object *obj)
|
||||||
evas_event_feed_mouse_move(obj->layer->evas,
|
evas_event_feed_mouse_move(obj->layer->evas,
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y);
|
obj->layer->evas->pointer.y);
|
||||||
|
evas_object_inform_call_move(obj);
|
||||||
|
evas_object_inform_call_resize(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -265,6 +265,7 @@ evas_object_text_font_set(Evas_Object *obj, char *font, double size)
|
||||||
evas_event_feed_mouse_move(obj->layer->evas,
|
evas_event_feed_mouse_move(obj->layer->evas,
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y);
|
obj->layer->evas->pointer.y);
|
||||||
|
evas_object_inform_call_resize(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -338,6 +339,7 @@ evas_object_text_text_set(Evas_Object *obj, char *text)
|
||||||
evas_event_feed_mouse_move(obj->layer->evas,
|
evas_event_feed_mouse_move(obj->layer->evas,
|
||||||
obj->layer->evas->pointer.x,
|
obj->layer->evas->pointer.x,
|
||||||
obj->layer->evas->pointer.y);
|
obj->layer->evas->pointer.y);
|
||||||
|
evas_object_inform_call_resize(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
|
|
@ -52,10 +52,18 @@ evas_object_raise(Evas_Object *obj)
|
||||||
if (obj->smart.smart->func_raise)
|
if (obj->smart.smart->func_raise)
|
||||||
obj->smart.smart->func_raise(obj);
|
obj->smart.smart->func_raise(obj);
|
||||||
}
|
}
|
||||||
if (!(((Evas_Object_List *)obj)->next)) return;
|
if (!(((Evas_Object_List *)obj)->next))
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
|
obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
|
||||||
obj->layer->objects = evas_object_list_append(obj->layer->objects, obj);
|
obj->layer->objects = evas_object_list_append(obj->layer->objects, obj);
|
||||||
if (obj->clip.clipees) return;
|
if (obj->clip.clipees)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->restack = 1;
|
obj->restack = 1;
|
||||||
evas_object_change(obj);
|
evas_object_change(obj);
|
||||||
if (!obj->smart.smart)
|
if (!obj->smart.smart)
|
||||||
|
@ -66,6 +74,7 @@ evas_object_raise(Evas_Object *obj)
|
||||||
obj->cur.visible)
|
obj->cur.visible)
|
||||||
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
||||||
}
|
}
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -79,10 +88,18 @@ evas_object_lower(Evas_Object *obj)
|
||||||
if (obj->smart.smart->func_lower)
|
if (obj->smart.smart->func_lower)
|
||||||
obj->smart.smart->func_lower(obj);
|
obj->smart.smart->func_lower(obj);
|
||||||
}
|
}
|
||||||
if (!(((Evas_Object_List *)obj)->prev)) return;
|
if (!(((Evas_Object_List *)obj)->prev))
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
|
obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
|
||||||
obj->layer->objects = evas_object_list_prepend(obj->layer->objects, obj);
|
obj->layer->objects = evas_object_list_prepend(obj->layer->objects, obj);
|
||||||
if (obj->clip.clipees) return;
|
if (obj->clip.clipees)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->restack = 1;
|
obj->restack = 1;
|
||||||
evas_object_change(obj);
|
evas_object_change(obj);
|
||||||
if (!obj->smart.smart)
|
if (!obj->smart.smart)
|
||||||
|
@ -93,6 +110,7 @@ evas_object_lower(Evas_Object *obj)
|
||||||
obj->cur.visible)
|
obj->cur.visible)
|
||||||
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
||||||
}
|
}
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -109,11 +127,23 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
|
||||||
if (obj->smart.smart->func_stack_above)
|
if (obj->smart.smart->func_stack_above)
|
||||||
obj->smart.smart->func_stack_above(obj, above);
|
obj->smart.smart->func_stack_above(obj, above);
|
||||||
}
|
}
|
||||||
if (above->layer != obj->layer) return;
|
if (above->layer != obj->layer)
|
||||||
if (((Evas_Object_List *)obj)->prev == (Evas_Object_List *)above) return;
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (((Evas_Object_List *)obj)->prev == (Evas_Object_List *)above)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
|
obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
|
||||||
obj->layer->objects = evas_object_list_append_relative(obj->layer->objects, obj, above);
|
obj->layer->objects = evas_object_list_append_relative(obj->layer->objects, obj, above);
|
||||||
if (obj->clip.clipees) return;
|
if (obj->clip.clipees)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->restack = 1;
|
obj->restack = 1;
|
||||||
evas_object_change(obj);
|
evas_object_change(obj);
|
||||||
if (!obj->smart.smart)
|
if (!obj->smart.smart)
|
||||||
|
@ -124,6 +154,7 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
|
||||||
obj->cur.visible)
|
obj->cur.visible)
|
||||||
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
||||||
}
|
}
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -140,11 +171,23 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
|
||||||
if (obj->smart.smart->func_stack_below)
|
if (obj->smart.smart->func_stack_below)
|
||||||
obj->smart.smart->func_stack_below(obj, below);
|
obj->smart.smart->func_stack_below(obj, below);
|
||||||
}
|
}
|
||||||
if (below->layer != obj->layer) return;
|
if (below->layer != obj->layer)
|
||||||
if (((Evas_Object_List *)obj)->next == (Evas_Object_List *)below) return;
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (((Evas_Object_List *)obj)->next == (Evas_Object_List *)below)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
|
obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
|
||||||
obj->layer->objects = evas_object_list_prepend_relative(obj->layer->objects, obj, below);
|
obj->layer->objects = evas_object_list_prepend_relative(obj->layer->objects, obj, below);
|
||||||
if (obj->clip.clipees) return;
|
if (obj->clip.clipees)
|
||||||
|
{
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
obj->restack = 1;
|
obj->restack = 1;
|
||||||
evas_object_change(obj);
|
evas_object_change(obj);
|
||||||
if (!obj->smart.smart)
|
if (!obj->smart.smart)
|
||||||
|
@ -155,6 +198,7 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
|
||||||
obj->cur.visible)
|
obj->cur.visible)
|
||||||
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
|
||||||
}
|
}
|
||||||
|
evas_object_inform_call_restack(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
|
|
|
@ -89,6 +89,17 @@ if (_r) \
|
||||||
#define MEM_TRY_CALLOC(_ptr, _size)
|
#define MEM_TRY_CALLOC(_ptr, _size)
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _Evas_Inform_Func Evas_Inform_Func;
|
||||||
|
|
||||||
|
struct _Evas_Inform_Func
|
||||||
|
{
|
||||||
|
Evas_List *show;
|
||||||
|
Evas_List *hide;
|
||||||
|
Evas_List *move;
|
||||||
|
Evas_List *resize;
|
||||||
|
Evas_List *restack;
|
||||||
|
};
|
||||||
|
|
||||||
struct _Evas_Smart
|
struct _Evas_Smart
|
||||||
{
|
{
|
||||||
DATA32 magic;
|
DATA32 magic;
|
||||||
|
@ -258,9 +269,12 @@ struct _Evas_Object
|
||||||
int mouse_in : 1;
|
int mouse_in : 1;
|
||||||
int mouse_grabbed : 1;
|
int mouse_grabbed : 1;
|
||||||
int pre_render_done : 1;
|
int pre_render_done : 1;
|
||||||
|
int intercepted : 1;
|
||||||
|
|
||||||
int delete_me;
|
int delete_me;
|
||||||
|
|
||||||
|
Evas_Inform_Func *informers;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
Evas_List *elements;
|
Evas_List *elements;
|
||||||
} data;
|
} data;
|
||||||
|
@ -462,6 +476,12 @@ void evas_object_smart_unuse(Evas_Smart *s);
|
||||||
void evas_object_smart_del(Evas_Object *obj);
|
void evas_object_smart_del(Evas_Object *obj);
|
||||||
void evas_object_smart_cleanup(Evas_Object *obj);
|
void evas_object_smart_cleanup(Evas_Object *obj);
|
||||||
void *evas_mem_calloc(int size);
|
void *evas_mem_calloc(int size);
|
||||||
|
void evas_object_inform_cleanup(Evas_Object *obj);
|
||||||
|
void evas_object_inform_call_show(Evas_Object *obj);
|
||||||
|
void evas_object_inform_call_hide(Evas_Object *obj);
|
||||||
|
void evas_object_inform_call_move(Evas_Object *obj);
|
||||||
|
void evas_object_inform_call_resize(Evas_Object *obj);
|
||||||
|
void evas_object_inform_call_restack(Evas_Object *obj);
|
||||||
|
|
||||||
extern int _evas_alloc_error;
|
extern int _evas_alloc_error;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue