Subject: Re: FVWM: Opaque Resize?

From: Henrique Martins <[email-masked]>
Date: Wed, 01 May 1996 09:29:03 -0700

Barry> Did this go away?  I think it was there for 1.24r, but it seems like
Barry> rubberband resize is the only option for 2.0.42.

  It is actually quite easy to re enable this feature IF one doesn't mind
  having opaque resize ON for ALL windows, i.e. no per window/class/etc
  opaque resize.

  The patch below does it in its simplest form by defining a static
  variable within resize.c, setting this to 1 (opaque resize on) or 0
  (opaque resize off), and by recompiling, installing, etc, one would get
  opaque resize back.

  A more elegant way would be to add OpaqueResize to the Scr structure, add
  code to parse it out of the fvwmrc file, setting on the fly, etc, but
  this would imply changing a few more files, recompiling everything (as
  opposed to just resize.c with the patch above) and it will all go away
  with TGSFRW (The Great Style Flag Re-Write.)

  -- Henrique ([email-masked])

*** resize.c.orig	Wed May  1 08:46:34 1996
--- resize.c	Wed May  1 09:13:44 1996
***************
*** 37,42 ****
--- 37,44 ----
  extern int menuFromFrameOrWindowOrTitlebar;
  extern Window PressedW;
  
+ static int OpaqueResize = 1;
+ 
  /****************************************************************************
   *
   * Starts a window resize operation
***************
*** 108,114 ****
        return;
      }
  
!   XGrabServer(dpy);

    /* handle problems with edge-wrapping while resizing */
--- 110,117 ----
        return;
      }
  
!   if (!OpaqueResize)
!     XGrabServer(dpy);

    /* handle problems with edge-wrapping while resizing */
***************
*** 166,174 ****
  	}
      }
    /* draw the rubber-band window */
!   MoveOutline (Scr.Root, dragx - tmp_win->bw, dragy - tmp_win->bw, 
! 	       dragWidth + 2 * tmp_win->bw,
! 	       dragHeight + 2 * tmp_win->bw);
  
    /* loop to resize */
    while(!finished)
--- 169,178 ----
  	}
      }
    /* draw the rubber-band window */
!   if (!OpaqueResize)
!     MoveOutline (Scr.Root, dragx - tmp_win->bw, dragy - tmp_win->bw, 
!                  dragWidth + 2 * tmp_win->bw,
!                  dragHeight + 2 * tmp_win->bw);
  
    /* loop to resize */
    while(!finished)
***************
*** 229,239 ****
  	}
        if(!done)
  	{
! 	  MoveOutline(Scr.Root,0,0,0,0);
  
  	  DispatchEvent();
  
! 	  MoveOutline(Scr.Root, dragx - tmp_win->bw, dragy - tmp_win->bw,
  		      dragWidth + 2 * tmp_win->bw, dragHeight + 2 * tmp_win->bw);
  
  	}
--- 233,245 ----
  	}
        if(!done)
  	{
!           if (!OpaqueResize)
!             MoveOutline(Scr.Root,0,0,0,0);
  
  	  DispatchEvent();
  
!           if (!OpaqueResize)
!             MoveOutline (Scr.Root, dragx - tmp_win->bw, dragy - tmp_win->bw,
  		      dragWidth + 2 * tmp_win->bw, dragHeight + 2 * tmp_win->bw);
  
  	}
***************
*** 253,259 ****
      }
    UninstallRootColormap();
    ResizeWindow = None; 
!   XUngrabServer(dpy);
    UngrabEm();
    xmotion = 0;
    ymotion = 0;
--- 259,266 ----
      }
    UninstallRootColormap();
    ResizeWindow = None; 
!   if (!OpaqueResize)
!     XUngrabServer(dpy);
    UngrabEm();
    xmotion = 0;
    ymotion = 0;
***************
*** 321,328 ****
        if (ymotion == 1)
  	dragy = origy + origHeight - dragHeight;
        
!       MoveOutline(Scr.Root, dragx - tmp_win->bw,dragy - tmp_win->bw,
! 		  dragWidth + 2 * tmp_win->bw, dragHeight + 2 * tmp_win->bw);
      }
    DisplaySize(tmp_win, dragWidth, dragHeight,False);
  }
--- 328,342 ----
        if (ymotion == 1)
  	dragy = origy + origHeight - dragHeight;
        
!       if (!OpaqueResize)
!         MoveOutline(Scr.Root, dragx - tmp_win->bw,dragy - tmp_win->bw,
!                     dragWidth + 2 * tmp_win->bw, dragHeight + 2 * tmp_win->bw);
!       else {
!         ConstrainSize (tmp_win, &dragWidth, &dragHeight);
!         SetupFrame (tmp_win, dragx - tmp_win->bw, 
!                     dragy - tmp_win->bw, dragWidth, dragHeight,FALSE);
!       }
! 
      }
    DisplaySize(tmp_win, dragWidth, dragHeight,False);
  }
--
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].