Dan Espen wrote:
... 
> In my opinion, the functionality requested is reasonable.  I might
> apply a patch if it was submitted.  (Hacks won't do.)
> 
> I think this is better described as "icons automatically remember 
> their place".
Attached is a unified diff against fvwm-2.2.2. Basically, it enhances
the symantics of StickIcons to also mean "FixedIcons" (or
"IconsThatRememberTheirPlace" or whatever is deemed the best way to
describe this :-) (StickyIconsAreReallySticky??)
With this patch, StickyIcons are AutoPlaced when first iconised, from
then on stay where they were placed, exactly as if they were manually
placed. Non-StickyIcons will shuffle aside when changing pages to avoid
landing on top of a StickyIcon.
Works a treat :-)
Regards,
Ben
--- fvwm-2.2.2.orig/fvwm/icons.c	Thu Jan 14 12:42:52 1999
+++ fvwm-2.2.2/fvwm/icons.c	Thu Sep  9 00:00:52 1999
_at_@ -418,7 +418,7 @@
       int end_at;                       /* ending edge */
       int base;                         /* base for screen */
       int icon_dimension;               /* height or width */
-      int nom_dimension;                /* nonminal height or width */
+      int nom_dimension;                /* nominal height or width */
       int screen_dimension;             /* screen height or width */
     } dimension;
     dimension dim[3];                   /* space for work, 1st, 2nd dimen */
_at_@ -532,7 +532,9 @@
           while((test_window != (FvwmWindow *)0)
                 &&(loc_ok == True)) { /* test overlap */
             if(test_window->Desk == t->Desk) {
-              if((test_window->flags&ICONIFIED) &&
+            if((test_window->flags&ICONIFIED || 
+                 /* include non-iconised StickyIcon windows in decision BDL */
+ 			     test_window->flags&StickyIcon) && 
                  (!(test_window->flags&TRANSIENT) ||
                   !test_window->tmpflags.IconifiedByParent) &&
                  (test_window->icon_w||test_window->icon_pixmap_w) &&
_at_@ -560,6 +562,12 @@
       return;                         /* just leave it */
     t->icon_x_loc = real_x;
     t->icon_y_loc = real_y;
+
+	if (t->flags&StickyIcon)
+	{
+		/* make StickyIcons icons stay where they've been placed BDL */
+		t->flags |= ICON_MOVED;
+	}
 
     if(t->icon_pixmap_w)
       XMoveWindow(dpy,t->icon_pixmap_w,t->icon_x_loc, t->icon_y_loc);
--- fvwm-2.2.2.orig/fvwm/virtual.c	Sat Feb 27 01:47:14 1999
+++ fvwm-2.2.2/fvwm/virtual.c	Wed Sep  8 23:30:28 1999
_at_@ -589,10 +589,10 @@
       for (t = Scr.FvwmRoot.next; t != NULL; t = t->next)
         {
           t->tmpflags.ViewportMoved = False; /* Clear double move blocker. */
-	  /* If its an icon, and its sticking, autoplace it so
+	  /* If its an icon, and is *not* sticking (BDL), autoplace it so
            * that it doesn't wind up on top a a stationary
            * icon */
-	  if(((t->flags & STICKY)||(t->flags & StickyIcon))&&
+	  if(((!(t->flags & STICKY)||(t->flags & StickyIcon)))&&
              (t->flags & ICONIFIED)&&(!(t->flags & ICON_MOVED))&&
              (!(t->flags & ICON_UNMAPPED)))
             AutoPlace(t);
--
Visit the official FVWM web page at <URL: http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to majordomo_at_fvwm.org.
To report problems, send mail to fvwm-owner_at_fvwm.org.
Received on Wed Sep 08 1999 - 09:40:15 BST