Enlightenment CVS committal Author : sebastid Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.h e_border.c Log Message: Can't generally unparent on e_border_del, messes up shaded windows. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.50 retrieving revision 1.51 diff -u -3 -r1.50 -r1.51 --- e_border.h 13 May 2005 17:32:37 -0000 1.50 +++ e_border.h 13 May 2005 20:06:10 -0000 1.51 @@ -189,6 +189,7 @@ unsigned char need_shape_merge : 1; unsigned char need_shape_export : 1; unsigned char fullscreen : 1; + unsigned char already_unparented : 1; unsigned char changed : 1; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.199 retrieving revision 1.200 diff -u -3 -r1.199 -r1.200 --- e_border.c 13 May 2005 17:32:37 -0000 1.199 +++ e_border.c 13 May 2005 20:06:10 -0000 1.200 @@ -1417,6 +1417,12 @@ bd->handlers = evas_list_remove_list(bd->handlers, bd->handlers); ecore_event_handler_del(h); } + if (!bd->already_unparented) + { + ecore_x_window_reparent(bd->client.win, bd->zone->container->manager->root, + bd->x + bd->client_inset.l, bd->y + bd->client_inset.t); + ecore_x_window_save_set_del(bd->client.win); + } if (bd->client.border.name) free(bd->client.border.name); if (bd->client.icccm.title) free(bd->client.icccm.title); if (bd->client.icccm.name) free(bd->client.icccm.name); @@ -1443,12 +1449,6 @@ { E_Event_Border_Remove *ev; - ecore_x_window_reparent(bd->client.win, - bd->zone->container->manager->root, - bd->x + bd->client_inset.l, - bd->y + bd->client_inset.t); - ecore_x_window_save_set_del(bd->client.win); - ev = calloc(1, sizeof(E_Event_Border_Remove)); ev->border = bd; /* FIXME Don't ref this during shutdown. And the event is pointless @@ -1508,6 +1508,12 @@ else { e_border_hide(bd, 0); + ecore_x_window_reparent(bd->client.win, + bd->zone->container->manager->root, + bd->x + bd->client_inset.l, + bd->y + bd->client_inset.t); + ecore_x_window_save_set_del(bd->client.win); + bd->already_unparented = 1; e_object_del(E_OBJECT(bd)); } return 1; @@ -2517,31 +2523,26 @@ if (dist > 10) { /* start drag! */ - if ((bd->client.icccm.name) && (bd->client.icccm.class)) + if (bd->icon_object) { - E_App *a; - - a = e_app_window_name_class_find(bd->client.icccm.name, - bd->client.icccm.class); - if (a) - { - E_Drag *drag; - Evas_Object *o; - Evas_Coord w, h; - - drag = e_drag_new(bd->zone->container, - "enlightenment/border", bd, NULL); - o = edje_object_add(drag->evas); - edje_object_file_set(o, a->path, "icon"); - e_drag_object_set(drag, o); - - edje_object_part_geometry_get(bd->bg_object, "icon", - NULL, NULL, &w, &h); - e_drag_resize(drag, w, h); - e_drag_start(drag); - evas_event_feed_mouse_up(bd->bg_evas, 1, - EVAS_BUTTON_NONE, NULL); - } + E_Drag *drag; + Evas_Object *o; + Evas_Coord w, h; + const char *file, *part; + + drag = e_drag_new(bd->zone->container, + "enlightenment/border", bd, NULL); + o = edje_object_add(drag->evas); + edje_object_file_get(bd->icon_object, &file, &part); + edje_object_file_set(o, file, part); + e_drag_object_set(drag, o); + + evas_object_geometry_get(bd->icon_object, + NULL, NULL, &w, &h); + e_drag_resize(drag, w, h); + e_drag_start(drag); + evas_event_feed_mouse_up(bd->bg_evas, 1, + EVAS_BUTTON_NONE, NULL); } bd->drag.start = 0; } ------------------------------------------------------- This SF.Net email is sponsored by Oracle Space Sweepstakes Want to be the first software developer in space? Enter now for the Oracle Space Sweepstakes! http://ads.osdn.com/?ad_id=7393&alloc_id=16281&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs