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

Reply via email to