Enlightenment CVS committal Author : jlzapata Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_fileman_smart.c Log Message: efm: correct icon movement =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman_smart.c,v retrieving revision 1.124 retrieving revision 1.125 diff -u -3 -r1.124 -r1.125 --- e_fileman_smart.c 8 Feb 2006 23:06:12 -0000 1.124 +++ e_fileman_smart.c 9 Feb 2006 04:04:53 -0000 1.125 @@ -128,7 +128,7 @@ static void _e_fm_icon_mouse_out_cb (void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_fm_icon_mouse_move_cb (void *data, Evas *e, Evas_Object *obj, void *event_info); static int _e_fm_win_mouse_up_cb (void *data, int type, void *event); -static int _e_fm_win_mouse_move_cb (void *data, int type, void *event); +static int _e_fm_win_mouse_move_cb (void *data, int type, void *event); static void _e_fm_string_replace(const char *src, const char *key, const char *replacement, char *result, size_t resultsize); @@ -2430,6 +2430,7 @@ { Evas_Object *o = NULL; Evas_Coord x, y, w, h; + int rx,ry,rw,rh; int cx, cy; char *data; char **drop_types; @@ -2443,20 +2444,19 @@ ecore_evas_geometry_get(sd->win->ecore_evas, &cx, &cy, NULL, NULL); evas_object_geometry_get(icon->icon_obj, &x, &y, &w, &h); - sd->drag.dx = cx + 5; - sd->drag.dy = cy + 5; - + if(!sd->drag.ecore_evas) sd->drag.ecore_evas = ecore_evas_software_x11_new(NULL, 0, cx + x, cy + y, w, h); - + sd->drag.dx = ev->cur.canvas.x; + sd->drag.dy = ev->cur.canvas.y; sd->drag.evas = ecore_evas_get(sd->drag.ecore_evas); sd->drag.win = ecore_evas_software_x11_window_get(sd->drag.ecore_evas); - ecore_x_dnd_aware_set(sd->drag.win, 1); ecore_evas_shaped_set(sd->drag.ecore_evas, 1); ecore_evas_borderless_set(sd->drag.ecore_evas, 1); ecore_evas_name_class_set(sd->drag.ecore_evas, "E", "_e_drag_window"); ecore_evas_title_set(sd->drag.ecore_evas, "E Drag"); + ecore_evas_ignore_events_set(sd->drag.ecore_evas, 1); sd->drag.image_object = e_fm_icon_add(sd->drag.evas); e_fm_icon_file_set(sd->drag.image_object, icon->file); @@ -2470,16 +2470,20 @@ evas_object_move(sd->drag.image_object, 0, 0); evas_object_show(sd->drag.image_object); - ecore_x_dnd_types_set(sd->drag.win, drop_types, 1); - ecore_x_dnd_begin(sd->drag.win, data, PATH_MAX * sizeof(char)); + evas_event_feed_mouse_up(sd->evas, 1, EVAS_BUTTON_NONE, ev->timestamp, NULL); e_fm_mouse_move_handler = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, _e_fm_win_mouse_move_cb, sd); - + e_fm_mouse_up_handler = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, _e_fm_win_mouse_up_cb, sd); + + ecore_x_dnd_aware_set(sd->drag.win, 1); + ecore_x_dnd_types_set(sd->drag.win, drop_types, 1); + ecore_x_dnd_begin(sd->drag.win, data, PATH_MAX * sizeof(char)); + sd->drag.start = 0; } } @@ -2491,11 +2495,16 @@ { Ecore_X_Event_Mouse_Move *ev; E_Fm_Smart_Data *sd; + int cx,cy,x,y; sd = data; ev = event; - ecore_evas_move(sd->drag.ecore_evas, ev->x + sd->drag.dx, ev->y + sd->drag.dy); + + ecore_evas_geometry_get(sd->win->ecore_evas, &cx, &cy, NULL, NULL); + evas_object_geometry_get(sd->drag.icon_obj->icon_obj, &x, &y, NULL, NULL); + + ecore_evas_move(sd->drag.ecore_evas, cx + x + ev->x - sd->drag.dx, cy + y + ev->y - sd->drag.dy); if(!ecore_evas_visibility_get(sd->drag.ecore_evas)) ecore_evas_show(sd->drag.ecore_evas); @@ -2509,18 +2518,20 @@ E_Fm_Smart_Data *sd; sd = data; - + ecore_x_dnd_drop(); - + ecore_event_handler_del(e_fm_mouse_up_handler); e_fm_mouse_up_handler = NULL; ecore_event_handler_del(e_fm_mouse_move_handler); e_fm_mouse_move_handler = NULL; + ecore_evas_free(sd->drag.ecore_evas); + sd->drag.ecore_evas = NULL; + sd->drag.start = 0; - ecore_evas_hide(sd->drag.ecore_evas); return 1; } @@ -3217,6 +3228,10 @@ if (ev->win != sd->win->evas_win) return 1; + printf("enter\n"); + if(evas_object_visible_get(sd->drag.icon_obj->icon_obj)) + evas_object_hide(sd->drag.icon_obj->icon_obj); + return 1; } @@ -3228,6 +3243,7 @@ ev = event; sd = data; + printf("leave\n"); if (ev->win != sd->win->evas_win) return 1; return 1; @@ -3255,6 +3271,7 @@ ev = event; sd = data; + printf("pos\n"); if (ev->win != sd->win->evas_win) return 1; rect.x = 0; @@ -3276,16 +3293,20 @@ ev = event; sd = data; - + + evas_object_show(sd->drag.icon_obj->icon_obj); + if (ev->win != sd->win->evas_win) return 1; + + printf("drop same\n"); + evas_object_geometry_get(sd->drag.icon_obj->icon_obj, &x, &y, NULL, NULL); ecore_evas_geometry_get(sd->win->ecore_evas, &ax, &ay, NULL, NULL); - x = ev->position.x - ax - 5; /* 5 because we already shift 5 pixels creating the window */ - y = ev->position.y - ay - 5; - e_icon_canvas_child_move(sd->drag.icon_obj->icon_obj,x,y); - - + x = (ev->position.x - ax) - (sd->drag.dx - x); + y = (ev->position.y - ay) - (sd->drag.dy - y); + e_icon_canvas_child_move(sd->drag.icon_obj->icon_obj,x,y); + /* update the metadata for the new coords */ if(sd->meta) { @@ -3464,7 +3485,7 @@ E_Fm_Icon_Metadata *im; im = l->data; - printf("Loading meta: %d %d for file %s\n", im->x, im->y, im->name); + //printf("Loading meta: %d %d for file %s\n", im->x, im->y, im->name); m->files_hash = evas_hash_add(m->files_hash, im->name, im); } } @@ -3536,7 +3557,7 @@ E_Fm_Icon_Metadata *m; m = l->data; - printf("Saving meta: %d %d for file %s\n", m->x, m->y, m->name); + //printf("Saving meta: %d %d for file %s\n", m->x, m->y, m->name); } } ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs