Fix mouse,in being sent multiple times by using edje signals, not

evas_callbacks. Thanks rephorm :)


SVN revision: 28343
This commit is contained in:
Christopher Michael 2007-02-13 08:37:13 +00:00
parent 747be7eb46
commit 9fc831fc96
4 changed files with 63 additions and 33 deletions

54
net.edc
View File

@ -25,6 +25,7 @@ collections
{ {
name: "rx"; name: "rx";
type: IMAGE; type: IMAGE;
mouse_events: 0;
description description
{ {
state: "default" 0.0; state: "default" 0.0;
@ -44,22 +45,11 @@ collections
color: 255 255 255 255; color: 255 255 255 255;
} }
} }
part
{
name: "base";
type: IMAGE;
description
{
state: "default" 0.0;
aspect: 1.0 1.0;
aspect_preference: BOTH;
image.normal: "idle.png";
}
}
part part
{ {
name: "tx"; name: "tx";
type: IMAGE; type: IMAGE;
mouse_events: 0;
description description
{ {
state: "default" 0.0; state: "default" 0.0;
@ -79,9 +69,49 @@ collections
color: 255 255 255 255; color: 255 255 255 255;
} }
} }
part
{
name: "base";
type: IMAGE;
mouse_events: 0;
description
{
state: "default" 0.0;
aspect: 1.0 1.0;
aspect_preference: BOTH;
image.normal: "idle.png";
}
}
part
{
name: "overlay";
type: RECT;
repeat_events: 0;
mouse_events: 1;
description
{
state: "default" 0.0;
color: 0 0 0 0;
visible: 1;
}
}
} }
programs programs
{ {
program
{
name: "in";
signal: "mouse,in";
source: "overlay";
action: SIGNAL_EMIT "e,action,mouse,in" "";
}
program
{
name: "out";
signal: "mouse,out";
source: "overlay";
action: SIGNAL_EMIT "e,action,mouse,out" "";
}
program program
{ {
name: "recv"; name: "recv";

View File

@ -29,19 +29,19 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
if (!e_theme_edje_object_set(inst->o_net, "base/theme/modules/net", if (!e_theme_edje_object_set(inst->o_net, "base/theme/modules/net",
"modules/net/main")) "modules/net/main"))
edje_object_file_set(inst->o_net, buf, "modules/net/main"); edje_object_file_set(inst->o_net, buf, "modules/net/main");
edje_object_signal_callback_add(inst->o_net, "e,action,mouse,in", "",
_cb_mouse_in, inst);
edje_object_signal_callback_add(inst->o_net, "e,action,mouse,out", "",
_cb_mouse_out, inst);
evas_object_show(inst->o_net); evas_object_show(inst->o_net);
gcc = e_gadcon_client_new(gc, name, id, style, inst->o_net); gcc = e_gadcon_client_new(gc, name, id, style, inst->o_net);
gcc->data = inst; gcc->data = inst;
inst->gcc = gcc; inst->gcc = gcc;
inst->timer = ecore_timer_add(0.5, _cb_poll, inst); inst->timer = ecore_timer_add(0.5, _cb_poll, inst);
evas_object_event_callback_add(inst->o_net, EVAS_CALLBACK_MOUSE_DOWN, evas_object_event_callback_add(inst->o_net, EVAS_CALLBACK_MOUSE_DOWN,
_cb_mouse_down, inst); _cb_mouse_down, inst);
evas_object_event_callback_add(inst->o_net, EVAS_CALLBACK_MOUSE_IN,
_cb_mouse_in, inst);
evas_object_event_callback_add(inst->o_net, EVAS_CALLBACK_MOUSE_OUT,
_cb_mouse_out, inst);
cfg->instances = evas_list_append(cfg->instances, inst); cfg->instances = evas_list_append(cfg->instances, inst);
return gcc; return gcc;
@ -59,10 +59,10 @@ _gc_shutdown(E_Gadcon_Client *gcc)
{ {
evas_object_event_callback_del(inst->o_net, EVAS_CALLBACK_MOUSE_DOWN, evas_object_event_callback_del(inst->o_net, EVAS_CALLBACK_MOUSE_DOWN,
_cb_mouse_down); _cb_mouse_down);
evas_object_event_callback_del(inst->o_net, EVAS_CALLBACK_MOUSE_IN, edje_object_signal_callback_del(inst->o_net, "e,action,mouse,in", "",
_cb_mouse_in); _cb_mouse_in);
evas_object_event_callback_del(inst->o_net, EVAS_CALLBACK_MOUSE_OUT, edje_object_signal_callback_del(inst->o_net, "e,action,mouse,out", "",
_cb_mouse_out); _cb_mouse_out);
evas_object_del(inst->o_net); evas_object_del(inst->o_net);
} }
E_FREE(inst); E_FREE(inst);

View File

@ -90,12 +90,12 @@ _cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event)
ev = event; ev = event;
if ((ev->button == 1) && (!cfg->menu)) if ((ev->button == 1) && (!cfg->menu))
{ {
if (inst->popup_locked) if (inst->popup_locked)
inst->popup_locked=0; inst->popup_locked=0;
else else
inst->popup_locked=1; inst->popup_locked=1;
} }
if ((ev->button == 3) && (!cfg->menu)) else if ((ev->button == 3) && (!cfg->menu))
{ {
E_Menu *mn; E_Menu *mn;
E_Menu_Item *mi; E_Menu_Item *mi;
@ -125,7 +125,7 @@ _cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event)
} }
EAPI void EAPI void
_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event) _cb_mouse_in(void *data, Evas_Object *obj, const char *emission, const char *source)
{ {
Instance *inst; Instance *inst;
Config_Item *ci; Config_Item *ci;
@ -137,10 +137,10 @@ _cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event)
int layer = -1; int layer = -1;
int top, wx, wy, ww, wh; int top, wx, wy, ww, wh;
char buf[PATH_MAX]; char buf[PATH_MAX];
inst = data; inst = data;
if (inst->popup) return; if (inst->popup != NULL) return;
inst->popup = E_NEW(Popup, 1); inst->popup = E_NEW(Popup, 1);
ci = _config_item_get(inst->gcc->id); ci = _config_item_get(inst->gcc->id);
@ -250,7 +250,7 @@ _cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event)
} }
EAPI void EAPI void
_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event) _cb_mouse_out(void *data, Evas_Object *obj, const char *emission, const char *source)
{ {
Instance *inst; Instance *inst;

View File

@ -3,7 +3,7 @@
EAPI int _cb_poll(void *data); EAPI int _cb_poll(void *data);
EAPI void _cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event); EAPI void _cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event);
EAPI void _cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event); EAPI void _cb_mouse_in(void *data, Evas_Object *obj, const char *emission, const char *source);
EAPI void _cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event); EAPI void _cb_mouse_out(void *data, Evas_Object *obj, const char *emission, const char *source);
#endif #endif