More info about this patch: http://www.cis.upenn.edu/~bjornk/ctwm/

To apply this patch:

1) cd to your CTWM source directory and
2) Run 'patch -l -p3 < path_to_this_file'
3) Run 'make install'

DontMoveOff patch:
------------------
I did however change the behavior of DontMoveOff/MoveOffResistance.
Currently the behavior of CTWM if you have set DontMoveOff and set a
MoveOffResistance is to prevent the window from being moved off until
you have moved the window #MoveOffResistance pixels outside the
screen, at which time the window snaps to the position it "should" be
in had DontMoveOff not been defined. What this means is that if you
have set a MoveOffResistance to 25, no part of the window can be moved
off the screen less than 25 pixels.

I find that often when I want to move a window partially off-screen, I
only want to move it a little bit off the screen, but to accomplish
this I often end up using force move.

My patch below changes the behavior of DontMoveOff/MoveOffResistance
so that when you attempt to move a window off screen, it will not move
at all until it's been moved #MoveOffResistance pixels (as before),
but at this time it will no longer "snap", but instead it will start
moving off screen. This means that you still have the old behavior of
DontMoveOff, but now with the ability to move a window off screen less
that #MoveOffResistance pixels.

If I find the time over the holidays I'll try to implement similar
functionality for MovePack.

(I noticed some code in workmgr.c that also seemed to make use of the
MoveOffResistance, but I didn't change that. I assume that this code
is for moving windows from within the workspacemanager. I didn't touch
this code.)

-------------------
Bjorn Knutsson  http://www.cis.upenn.edu/~bjornk/

Patch against CTWM 3.6:

diff -rwc /tmp/ctwm-3.6/util.c /usr/local/src/ctwm-3.6/util.c
*** /tmp/ctwm-3.6/util.c        2001-12-11 10:38:52.000000000 -0500
--- /usr/local/src/ctwm-3.6/util.c      2002-12-15 16:33:13.000000000 -0500
***************
*** 64,69 ****
--- 64,76 ----
   *
   * 22-April-92 Claude Lecommandeur.
   *
+  * Changed behavior of DontMoveOff/MoveOffResistance to allow
+  * moving a window off screen less than #MoveOffResistance pixels.
+  * New code will no longer "snap" windows to #MoveOffResistance
+  * pixels off screen and instead movements will just be stopped and
+  * then resume once movement of #MoveOffResistance have been attempted.
+  *
+  * 15-December-02 Bjorn Knutsson 
   *
   ***********************************************************************/
  
***************
*** 3972,3982 ****
  int *value;
  int border;
  {
!     if (*value < border &&
!         (Scr->MoveOffResistance < 0 ||
!          *value > border - Scr->MoveOffResistance))
      {
          *value = border;
      }
  }
  
--- 3979,3994 ----
  int *value;
  int border;
  {
!   if (*value < border) {
!     if (Scr->MoveOffResistance < 0 ||
!       *value > border - Scr->MoveOffResistance)
      {
          *value = border;
+     } else if (Scr->MoveOffResistance > 0 &&
+              *value <= border - Scr->MoveOffResistance)
+     {
+       *value = *value + Scr->MoveOffResistance;
+     }
    }
  }
  
***************
*** 3986,3996 ****
  int border;
  int size2;
  {
!     if (*value + size1 > size2 - border &&
!         (Scr->MoveOffResistance < 0 ||
!          *value + size1 < size2 - border + Scr->MoveOffResistance))
      {
          *value = size2 - size1 - border;
      }
  }
  
--- 3998,4012 ----
  int border;
  int size2;
  {
!     if (*value + size1 > size2 - border) {
!       if (Scr->MoveOffResistance < 0 ||
!          *value + size1 < size2 - border + Scr->MoveOffResistance)
        {
          *value = size2 - size1 - border;
+       } else if (Scr->MoveOffResistance > 0 &&
+                  *value + size1 >= size2 - border + Scr->MoveOffResistance) {
+         *value = *value - Scr->MoveOffResistance;
+       }
      }
  }
  

Reply via email to