]> git.decadent.org.uk Git - ion3.git/blobdiff - ioncore/detach.c
Merge commit '20071220' into HEAD
[ion3.git] / ioncore / detach.c
index 2d24fee42c70d7fc31db0200e30a6e01c5cbb717..8a866401f6d9009dd5f07d13265478ccc060c337 100644 (file)
@@ -6,6 +6,8 @@
  * See the included file LICENSE for details.
  */
 
+#include <string.h>
+
 #include <libtu/objp.h>
 #include <libtu/setparam.h>
 #include <libtu/minmax.h>
@@ -85,10 +87,13 @@ static bool ioncore_do_detach(WRegion *reg, WGroup *grp, WFrameMode framemode,
             ap.szplcy=st->szplcy;
             ap.szplcy_set=TRUE;
             
-            ap.level_set=TRUE;
-            ap.level=maxof(st->level, STACKING_LEVEL_NORMAL);
+            /*ap.level_set=TRUE;
+            ap.level=maxof(st->level, STACKING_LEVEL_NORMAL);*/
         }
         
+        ap.level_set=TRUE;
+        ap.level=framelevel+1;
+        
         ap.geom_set=TRUE;
         get_relative_geom(&ap.geom, reg, (WRegion*)grp);
         
@@ -115,9 +120,10 @@ static WRegion *check_mplex(WRegion *reg, WFrameMode *mode)
         
     *mode=FRAME_MODE_FLOATING;
     
-    if(OBJ_IS(mplex, WFrame)
-       && frame_mode((WFrame*)mplex)==FRAME_MODE_TRANSIENT){
-        *mode=FRAME_MODE_TRANSIENT;
+    if(OBJ_IS(mplex, WFrame)){
+        WFrameMode mode2=frame_mode((WFrame*)mplex);
+        if(framemode_unalt(mode2)==FRAME_MODE_TRANSIENT)
+            *mode=mode2;
     }
     
     return (WRegion*)mplex;