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