From 9c7996bbd8c1ee854f4be4005b60e970f5d51743 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 1 Oct 2012 10:28:38 +0000 Subject: [PATCH] end gadman edit when shutting down (fixes crash), clean up legacy gadman dnd code, fix gadman dnd to remove client configs when drag starts, not when edit starts SVN revision: 77262 --- src/modules/gadman/e_mod_gadman.c | 66 ++----------------------------- 1 file changed, 4 insertions(+), 62 deletions(-) diff --git a/src/modules/gadman/e_mod_gadman.c b/src/modules/gadman/e_mod_gadman.c index 2ec775035..3694421bd 100644 --- a/src/modules/gadman/e_mod_gadman.c +++ b/src/modules/gadman/e_mod_gadman.c @@ -155,6 +155,7 @@ gadman_shutdown(void) e_gadcon_location_unregister(location); e_container_shape_change_callback_del(Man->container, on_shape_change, NULL); + gadman_gadget_edit_end(NULL, NULL, NULL, NULL); for (layer = 0; layer < GADMAN_LAYER_COUNT; layer++) { @@ -165,7 +166,7 @@ gadman_shutdown(void) Man->gadgets[layer] = eina_list_free(Man->gadgets[layer]); } - if (Man->icon_name) eina_stringshare_del(Man->icon_name); + eina_stringshare_del(Man->icon_name); /* free manager */ if (Man->top_ee) @@ -180,8 +181,7 @@ gadman_shutdown(void) } E_FREE_LIST(Man->drag_handlers, ecore_event_handler_del); _gadman_gadgets = NULL; - free(Man); - Man = NULL; + E_FREE(Man); } void @@ -410,7 +410,6 @@ gadman_gadget_edit_start(E_Gadcon_Client *gcc) evas_object_resize(mover, w, h); evas_object_raise(mover); evas_object_show(mover); - gcc->gadcon->cf->clients = eina_list_remove(gcc->gadcon->cf->clients, gcc->cf); evas_object_event_callback_del(mover, EVAS_CALLBACK_HIDE, gadman_edit); evas_object_event_callback_add(mover, EVAS_CALLBACK_HIDE, gadman_edit, gcc); e_gadcon_client_drag_set(gcc); @@ -752,10 +751,6 @@ _create_mover(E_Gadcon *gc) edje_object_signal_callback_add(mover, "e,action,move,start", "", on_move, (void *)DRAG_START); - edje_object_signal_callback_add(mover, "e,action,move,stop", "", - on_move, (void *)DRAG_STOP); - edje_object_signal_callback_add(mover, "e,action,move,go", "", - on_move, (void *)DRAG_MOVE); edje_object_signal_callback_add(mover, "mouse,down,3", "overlay", gadman_gadget_edit_end, NULL); @@ -1523,6 +1518,7 @@ on_move(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const gc->drag_gcc->moving = 1; e_object_ref(E_OBJECT(gc->drag_gcc)); + gc->cf->clients = eina_list_remove(gc->cf->clients, gc->drag_gcc->cf); evas_pointer_output_xy_get(gc->drag_gcc->gadcon->evas, &mx, &my); evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); @@ -1549,60 +1545,6 @@ on_move(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const e_drag_resize(drag, ow, oh); evas_object_hide(o); e_drag_start(drag, mx, my); - return; - } - - /* DRAG_STOP */ - if (action == DRAG_STOP) - { - E_Config_Gadcon_Client *cf; - E_Zone *dst_zone = NULL; - E_Gadcon *dst_gadcon; - int gx, gy; - - gc->drag_gcc->moving = 0; - gc->drag_gcc->dx = gc->drag_gcc->dy = 0; - - /* checking if zone was changed for dragged gadget */ - evas_object_geometry_get(gc->drag_gcc->o_frame, &gx, &gy, NULL, NULL); - dst_zone = e_container_zone_at_point_get(e_container_current_get(e_manager_current_get()), gx, gy); - if (dst_zone && (gc->drag_gcc->gadcon->zone != dst_zone)) - { - unsigned int layer = gc->drag_gcc->gadcon->id - ID_GADMAN_LAYER_BASE; - cf = gc->drag_gcc->cf; - - gc->drag_gcc->gadcon->cf->clients = eina_list_remove(gc->drag_gcc->gadcon->cf->clients, cf); - dst_gadcon = gadman_gadcon_get(dst_zone, layer); - if (dst_gadcon) - { - dst_gadcon->cf->clients = eina_list_append(dst_gadcon->cf->clients, cf); - e_config_save_queue(); - } - } - else - _save_widget_position(gc->drag_gcc); - return; - } - - /* DRAG_MOVE */ - if ((action == DRAG_MOVE) && gc->drag_gcc->moving) - { - int x, y; - - evas_pointer_output_xy_get(gc->drag_gcc->gadcon->evas, &mx, &my); - - x = mx - gc->drag_gcc->dx; - y = my - gc->drag_gcc->dy; - /* don't go out of the screen */ - if (x < 0) x = 0; - if (x > (Man->width - ow)) x = Man->width - ow; - if (y < 0) y = 0; - if (y > (Man->height - oh)) y = Man->height - oh; - - evas_object_move(gc->drag_gcc->o_frame, x, y); - evas_object_move(mover, x, y); - evas_object_raise(gc->drag_gcc->o_frame); - evas_object_raise(mover); } }