we were getting duplicate events for popups. fixed now! :)

SVN revision: 21893
This commit is contained in:
Carsten Haitzler 2006-04-06 07:26:11 +00:00
parent 8fed1be8a6
commit 227d31fbf5
6 changed files with 45 additions and 26 deletions

View File

@ -40,6 +40,7 @@ group {
part {
name: "base";
clip_to: "base_clip";
mouse_events: 0;
description {
state: "default" 0.0;
rel1 {

View File

@ -699,7 +699,7 @@ _e_gadcon_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_in
ev = event_info;
if (ev->button == 3)
{
printf("THREE!\n");
printf("THREE! %p\n", gcc);
}
}

View File

@ -272,7 +272,7 @@ main(int argc, char **argv)
_e_main_shutdown_push(ecore_shutdown);
_e_cacheburst++;
// eet_cacheburst(_e_cacheburst);
/* eet_cacheburst(_e_cacheburst); */
ecore_timer_add(5.0, _e_main_cb_eet_cacheburst_end, NULL);
/* init the file system */
@ -327,7 +327,7 @@ main(int argc, char **argv)
}
_e_main_shutdown_push(e_xinerama_shutdown);
// ecore_x_grab();
/* ecore_x_grab(); */
ecore_x_io_error_handler_set(_e_main_cb_x_fatal, NULL);
@ -635,7 +635,7 @@ main(int argc, char **argv)
e_error_message_show(_("Enlightenment cannot set up its desk locking system."));
_e_main_shutdown(-1);
}
//_e_main_shutdown_push(e_desklock_shutdown);
/* _e_main_shutdown_push(e_desklock_shutdown); */
if (ipc_failed)
e_error_dialog_show(_("Enlightenment IPC setup error!"),
@ -653,7 +653,7 @@ main(int argc, char **argv)
e_managers_keys_grab();
// ecore_x_ungrab();
/* ecore_x_ungrab(); */
e_init_title_set(_("Enlightenment"));
e_init_version_set(VERSION);
@ -777,7 +777,7 @@ _e_main_shutdown(int errorcode)
static int
_e_main_x_shutdown(void)
{
// ecore_x_ungrab();
/* ecore_x_ungrab(); */
ecore_x_focus_reset();
ecore_x_events_allow_all();
@ -1210,19 +1210,17 @@ _e_main_cb_idler_before(void *data __UNUSED__)
}
}
_e_cacheburst--;
// eet_cacheburst(_e_cacheburst);
/* eet_cacheburst(_e_cacheburst); */
edje_thaw();
// printf("IN to idle... %3.3f\n", ecore_time_get());
return 1;
}
static int
_e_main_cb_idler_after(void *data __UNUSED__)
{
// printf("OUT of idle... %3.3f\n", ecore_time_get());
edje_freeze();
_e_cacheburst++;
// eet_cacheburst(_e_cacheburst);
/* eet_cacheburst(_e_cacheburst); */
return 1;
}
@ -1230,7 +1228,7 @@ static int
_e_main_cb_eet_cacheburst_end(void *data __UNUSED__)
{
_e_cacheburst--;
// eet_cacheburst(_e_cacheburst);
/* eet_cacheburst(_e_cacheburst); */
return 0;
}

View File

@ -308,6 +308,7 @@ _e_popup_cb_mouse_down(void *data, int type, void *event)
if (ev->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
if (ev->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
evas_event_feed_mouse_down(pop->evas, ev->button, flags, ev->time, NULL);
return 0;
}
return 1;
}
@ -325,6 +326,7 @@ _e_popup_cb_mouse_up(void *data, int type, void *event)
evas_event_feed_mouse_up(pop->evas, ev->button, EVAS_BUTTON_NONE, ev->time, NULL);
e_bindings_mouse_up_event_handle(E_BINDING_CONTEXT_POPUP,
E_OBJECT(pop), ev);
return 0;
}
return 1;
}
@ -342,6 +344,7 @@ _e_popup_cb_mouse_wheel(void *data, int type, void *event)
e_bindings_wheel_event_handle(E_BINDING_CONTEXT_POPUP,
E_OBJECT(pop), ev);
evas_event_feed_mouse_wheel(pop->evas, ev->direction, ev->z, ev->time, NULL);
return 0;
}
return 1;
}

View File

@ -85,6 +85,10 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
es->layer = layer;
es->zone = zone;
es->style = evas_stringshare_add(style);
es->o_event = evas_object_rectangle_add(es->evas);
evas_object_color_set(es->o_event, 0, 0, 0, 0);
evas_object_resize(es->o_event, es->w, es->h);
es->o_base = edje_object_add(es->evas);
es->name = evas_stringshare_add(name);
@ -95,12 +99,15 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
"shelf/default/base");
if (es->popup)
{
evas_object_show(es->o_event);
evas_object_show(es->o_base);
e_popup_edje_bg_object_set(es->popup, es->o_base);
}
else
{
evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
evas_object_layer_set(es->o_event, layer);
evas_object_layer_set(es->o_base, layer);
}
@ -139,7 +146,10 @@ e_shelf_show(E_Shelf *es)
if (es->popup)
e_popup_show(es->popup);
else
evas_object_show(es->o_base);
{
evas_object_show(es->o_event);
evas_object_show(es->o_base);
}
}
EAPI void
@ -150,7 +160,10 @@ e_shelf_hide(E_Shelf *es)
if (es->popup)
e_popup_hide(es->popup);
else
evas_object_hide(es->o_base);
{
evas_object_hide(es->o_event);
evas_object_hide(es->o_base);
}
}
EAPI void
@ -163,7 +176,10 @@ e_shelf_move(E_Shelf *es, int x, int y)
if (es->popup)
e_popup_move(es->popup, es->x, es->y);
else
evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
{
evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
}
}
EAPI void
@ -174,12 +190,9 @@ e_shelf_resize(E_Shelf *es, int w, int h)
es->w = w;
es->h = h;
if (es->popup)
{
e_popup_resize(es->popup, es->w, es->h);
evas_object_resize(es->o_base, es->w, es->h);
}
else
evas_object_resize(es->o_base, es->w, es->h);
e_popup_resize(es->popup, es->w, es->h);
evas_object_resize(es->o_event, es->w, es->h);
evas_object_resize(es->o_base, es->w, es->h);
}
EAPI void
@ -192,15 +205,14 @@ e_shelf_move_resize(E_Shelf *es, int x, int y, int w, int h)
es->w = w;
es->h = h;
if (es->popup)
{
e_popup_move_resize(es->popup, es->x, es->y, es->w, es->h);
evas_object_resize(es->o_base, es->w, es->h);
}
e_popup_move_resize(es->popup, es->x, es->y, es->w, es->h);
else
{
evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
evas_object_resize(es->o_base, es->w, es->h);
}
evas_object_resize(es->o_event, es->w, es->h);
evas_object_resize(es->o_base, es->w, es->h);
}
EAPI void
@ -212,7 +224,10 @@ e_shelf_layer_set(E_Shelf *es, int layer)
if (es->popup)
e_popup_layer_set(es->popup, es->layer);
else
evas_object_layer_set(es->o_base, es->layer);
{
evas_object_layer_set(es->o_event, es->layer);
evas_object_layer_set(es->o_base, es->layer);
}
}
EAPI void
@ -279,6 +294,7 @@ _e_shelf_free(E_Shelf *es)
e_object_del(E_OBJECT(es->gadcon));
evas_stringshare_del(es->name);
evas_stringshare_del(es->style);
evas_object_del(es->o_event);
evas_object_del(es->o_base);
if (es->popup) e_object_del(E_OBJECT(es->popup));
free(es);

View File

@ -19,6 +19,7 @@ struct _E_Shelf
E_Popup *popup; /* NULL if its within an existing canvas */
E_Zone *zone;
Evas_Object *o_base;
Evas_Object *o_event;
Ecore_Evas *ee;
Evas *evas;
E_Gadcon *gadcon;