]> git.decadent.org.uk Git - ion3.git/blobdiff - ioncore/mplex.c
Merge commit '20070902' into HEAD
[ion3.git] / ioncore / mplex.c
index 71943a4595ca6829fe6da5ea8b267669eb3fe320..1d5109f9958449f11ad278ef5bffe5da3fb5e140 100644 (file)
@@ -231,8 +231,8 @@ WRegion *mplex_mx_current(WMPlex *mplex)
 
 
 /*EXTL_DOC
- * Returns the \var{n}:th object managed by \var{mplex} on the
- * \var{l}:th layer.
+ * Returns the \var{n}:th object on the mutually exclusive
+ * list of \var{mplex}.
  */
 EXTL_SAFE
 EXTL_EXPORT_MEMBER
@@ -505,6 +505,27 @@ static void mplex_managed_rqgeom(WMPlex *mplex, WRegion *sub,
 }
 
 
+void mplex_set_szplcy(WMPlex *mplex, WRegion *sub, WSizePolicy szplcy)
+{
+    WStacking *node;
+
+    node=mplex_find_stacking(mplex, sub);
+    
+    if(node!=NULL)
+        node->szplcy=szplcy;
+}
+
+
+WSizePolicy mplex_get_szplcy(WMPlex *mplex, WRegion *sub)
+{
+    WStacking *node;
+
+    node=mplex_find_stacking(mplex, sub);
+    
+    return (node==NULL ? SIZEPOLICY_DEFAULT : node->szplcy);
+}
+
+
 /*}}}*/
 
 
@@ -1280,6 +1301,9 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph)
     
     region_set_manager(reg, (WRegion*)mplex);
     
+    if(param->flags&MPLEX_ATTACH_PASSIVE)
+        reg->flags|=REGION_SKIP_FOCUS;
+    
     if(!(param->flags&MPLEX_ATTACH_WHATEVER)){
         WFitParams fp;
         
@@ -1382,7 +1406,6 @@ WRegion *mplex_attach_simple(WMPlex *mplex, WRegion *reg, int flags)
 static void get_params(WMPlex *mplex, ExtlTab tab, int mask,
                        WMPlexAttachParams *par)
 {
-    int layer=1;
     int tmp;
     char *tmpstr;
     int ok=~mask;
@@ -1408,6 +1431,9 @@ static void get_params(WMPlex *mplex, ExtlTab tab, int mask,
     if(extl_table_is_bool_set(tab, "hidden"))
         par->flags|=MPLEX_ATTACH_HIDDEN&ok;
         
+    if(extl_table_is_bool_set(tab, "passive"))
+        par->flags|=MPLEX_ATTACH_PASSIVE&ok;
+        
     if(extl_table_is_bool_set(tab, "pseudomodal"))
         par->flags|=MPLEX_ATTACH_PSEUDOMODAL&ok;
 
@@ -1489,6 +1515,7 @@ WRegion *mplex_attach_new_(WMPlex *mplex, WMPlexAttachParams *par,
  *  \var{hidden} & (boolean) Attach hidden, if not prevented
  *                  by e.g. the mutually exclusive list being empty.
  *                  This option overrides \var{switchto}. \\
+ *  \var{passive} & (boolean) Skip in certain focusing operations. \\
  *  \var{pseudomodal} & (boolean) The attached region is ``pseudomodal''
  *                      if the stacking level dictates it to be modal.
  *                      This means that the region may be hidden to display
@@ -1772,11 +1799,12 @@ static bool do_attach_stdisp(WRegion *mplex, WRegion *reg, void *unused)
  * 
  * \begin{tabularx}{\linewidth}{lX}
  *   \tabhead{Field & Description}
- *   \var{pos} & The corner of the screen to place the status display
- *               in: one of \codestr{tl}, \codestr{tr}, \codestr{bl} 
+ *   \var{pos} & (string) The corner of the screen to place the status 
+ *               display in: one of \codestr{tl}, \codestr{tr}, \codestr{bl} 
  *               or \codestr{br}. \\
- *   \var{action} & If this field is set to \codestr{keep}, \var{corner}
- *                  and \var{orientation} are changed for the existing
+ *   \var{fullsize} & (boolean) Waste all available space. \\
+ *   \var{action} & (string) If this field is set to \codestr{keep}, 
+ *                  \var{pos} and \var{fullsize} are changed for the existing
  *                  status display. If this field is set to \codestr{remove},
  *                  the existing status display is removed. If this
  *                  field is not set or is set to \codestr{replace}, a