Subject: FVWM: FvwmPager window sizing bug + patch

From: [email-masked] (Greg Klanderman)
Date: Tue, 25 Nov 1997 16:05:26 -0500

Hi,

I just recently switched to fvwm 2.0.46 after about 10 years with twm,
and I must say it's excellent.  One problem I had was that when using
FvwmPager, I had set the size spec via the option
*FvwmPagerDeskTopScale.  Using a DeskTopSize of 2x1 it is very
apparent that the pager window is not properly sized based on the
virtual desktop size.  After grovelling through the code, I found that
the variables Scr.V[xy]Max are basically hardcoded in the ParseOptions
function for a 3x3 desktop.  Then initialize_pager is run, which sets
the window size.  Later, as messages from fvwm arrive and are parsed,
these variables get set correctly.  But the window is not resized and
you end up with very non-proportionally spaced windows in the pager.

Rather than delaying the creation of the pager window until after the
desktop sizes are known (the right solution, but this looked more
difficult), I fixed this bug by adding two additional (optional)
command line arguments, the desktop width and height.  Ie, in my case
you would pass "2" and "1", the same as in DeskTopSize.  Without the
arguments, the old behavior remains.  I have appended a patch below.

If you accept this patch I could send a manpage update.  Let me know.

thank you,
Greg

(I'm not on the list so please copy me on replies)

--- /local/mstar/.backups/!local!mstar!software!fvwm!fvwm-2.0.46!modules!FvwmPager!FvwmPager.c.~1~	Wed Aug  6 16:18:01 1997
+++ FvwmPager.c	Tue Nov 25 15:45:09 1997
@@ -82,6 +82,7 @@
 Pixel win_fore_pix = -1;
 Pixel win_hi_back_pix = -1;
 Pixel win_hi_fore_pix = -1;
+int desktop_size_w=0, desktop_size_h=0;
 /***********************************************************************
  *
  *  Procedure:
@@ -130,6 +131,16 @@
   desk1 = atoi(argv[6]);
   desk2 = atoi(argv[7]);
 
+  desktop_size_w = 0;
+  desktop_size_h = 0;
+  if (argc >= 10) {
+    desktop_size_w = atoi(argv[8]);
+    desktop_size_h = atoi(argv[9]);
+  }
+  if (desktop_size_w <= 0  ||  desktop_size_h <= 0) {
+    desktop_size_w = desktop_size_h = 3;
+  }
+
   if(desk2 < desk1)
     {
       itemp = desk1;
@@ -859,8 +870,8 @@
   Scr.MyDisplayWidth = DisplayWidth(dpy, Scr.screen);
   Scr.MyDisplayHeight = DisplayHeight(dpy, Scr.screen);
   
-  Scr.VxMax = 3*Scr.MyDisplayWidth - Scr.MyDisplayWidth;
-  Scr.VyMax = 3*Scr.MyDisplayHeight - Scr.MyDisplayHeight;
+  Scr.VxMax = desktop_size_w*Scr.MyDisplayWidth  - Scr.MyDisplayWidth;
+  Scr.VyMax = desktop_size_h*Scr.MyDisplayHeight - Scr.MyDisplayHeight;
   if(Scr.VxMax <0)
     Scr.VxMax = 0;
   if(Scr.VyMax <0)
--
Visit the official FVWM web page at <URL:http://www.hpc.uh.edu/fvwm/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to [email-masked].
To report problems, send mail to [email-masked].