----------------
Index: move.c
*** old//move.c	Fri Oct 29 12:13:17 1993
--- new//move.c	Fri Oct 29 12:13:24 1993
***************
*** 23,28 ****
--- 23,30 ----
  #include "parse.h"
  #include "screen.h"
  
+ int abortOp;
+ 
  extern XEvent Event;
  extern int menuFromFrameOrWindowOrTitlebar;
  /****************************************************************************
***************
*** 49,54 ****
--- 51,57 ----
        XFlush(dpy);
      }
  
+  
  
    DragX = eventp->xbutton.x_root;
    DragY = eventp->xbutton.y_root;
***************
*** 96,101 ****
--- 99,108 ----
    YOffset = origDragY - DragY;
    moveLoop(tmp_win, XOffset,YOffset,DragWidth,DragHeight, &FinalX,&FinalY,
  	   opaque_move);
+   if (abortOp) {
+     FinalX = origDragX;
+     FinalY = origDragY;
+   }
    if (w == tmp_win->lead_w)
      SetupFrame (tmp_win, FinalX, FinalY,
  		tmp_win->frame_width, tmp_win->frame_height,FALSE);
***************
*** 138,143 ****
--- 145,152 ----
    Bool done;
    int xl,yt,delta_x,delta_y;
  
+   abortOp = 0;
+ 
    XQueryPointer(dpy, Scr.Root, &JunkRoot, &JunkChild,&xl, &yt,
  		&JunkX, &JunkY, &JunkMask);
    xl += XOffset;
***************
*** 303,308 ****
--- 312,321 ----
      case XK_Return:
      case XK_space:
        /* beat up the event */
+       Event->type = ReturnEvent;
+       break;
+     case XK_Escape:
+       abortOp = 1;
        Event->type = ReturnEvent;
        break;
      default:
Index: resize.c
*** old//resize.c	Fri Oct 29 12:13:14 1993
--- new//resize.c	Fri Oct 29 12:13:21 1993
***************
*** 55,60 ****
--- 55,61 ----
  static int last_width,last_height;
  extern int menuFromFrameOrWindowOrTitlebar;
  
+ extern int abortOp;
  
  /****************************************************************************
   *
***************
*** 67,73 ****
--- 68,77 ----
    int x,y,delta_x,delta_y;
    Window ResizeWindow;
    extern int Stashed_X, Stashed_Y;
+   int startX, startY;
  
+   abortOp = 0;
+ 
    /* can't resize icons */
    if(tmp_win->flags & ICON)
      return;
***************
*** 97,104 ****
  
    dragx += tmp_win->frame_bw;
    dragy += tmp_win->frame_bw;
!   origx = dragx;
!   origy = dragy;
    origWidth = dragWidth;
    origHeight = dragHeight;
    ymotion=xmotion=0;
--- 101,108 ----
  
    dragx += tmp_win->frame_bw;
    dragy += tmp_win->frame_bw;
!   startX = origx = dragx;
!   startY = origy = dragy;
    origWidth = dragWidth;
    origHeight = dragHeight;
    ymotion=xmotion=0;
***************
*** 168,173 ****
--- 172,184 ----
  #endif
    /* pop down the size window */
    XUnmapWindow(dpy, Scr.SizeWindow);
+ 
+   if (abortOp) {
+     dragWidth = origWidth;
+     dragHeight = origHeight;
+     dragx = startX;
+     dragy = startY;
+   }
  
    ConstrainSize (tmp_win, &dragWidth, &dragHeight);
    SetupFrame (tmp_win, dragx - tmp_win->frame_bw, 

----------------
Index: move.c
*** old//move.c	Fri Oct 29 12:13:17 1993
--- new//move.c	Fri Oct 29 12:13:24 1993
***************
*** 23,28 ****
--- 23,30 ----
  #include "parse.h"
  #include "screen.h"
  
+ int abortOp;
+ 
  extern XEvent Event;
  extern int menuFromFrameOrWindowOrTitlebar;
  /****************************************************************************
***************
*** 49,54 ****
--- 51,57 ----
        XFlush(dpy);
      }
  
+  
  
    DragX = eventp->xbutton.x_root;
    DragY = eventp->xbutton.y_root;
***************
*** 96,101 ****
--- 99,108 ----
    YOffset = origDragY - DragY;
    moveLoop(tmp_win, XOffset,YOffset,DragWidth,DragHeight, &FinalX,&FinalY,
  	   opaque_move);
+   if (abortOp) {
+     FinalX = origDragX;
+     FinalY = origDragY;
+   }
    if (w == tmp_win->lead_w)
      SetupFrame (tmp_win, FinalX, FinalY,
  		tmp_win->frame_width, tmp_win->frame_height,FALSE);
***************
*** 138,143 ****
--- 145,152 ----
    Bool done;
    int xl,yt,delta_x,delta_y;
  
+   abortOp = 0;
+ 
    XQueryPointer(dpy, Scr.Root, &JunkRoot, &JunkChild,&xl, &yt,
  		&JunkX, &JunkY, &JunkMask);
    xl += XOffset;
***************
*** 303,308 ****
--- 312,321 ----
      case XK_Return:
      case XK_space:
        /* beat up the event */
+       Event->type = ReturnEvent;
+       break;
+     case XK_Escape:
+       abortOp = 1;
        Event->type = ReturnEvent;
        break;
      default:
Index: resize.c
*** old//resize.c	Fri Oct 29 12:13:14 1993
--- new//resize.c	Fri Oct 29 12:13:21 1993
***************
*** 55,60 ****
--- 55,61 ----
  static int last_width,last_height;
  extern int menuFromFrameOrWindowOrTitlebar;
  
+ extern int abortOp;
  
  /****************************************************************************
   *
***************
*** 67,73 ****
--- 68,77 ----
    int x,y,delta_x,delta_y;
    Window ResizeWindow;
    extern int Stashed_X, Stashed_Y;
+   int startX, startY;
  
+   abortOp = 0;
+ 
    /* can't resize icons */
    if(tmp_win->flags & ICON)
      return;
***************
*** 97,104 ****
  
    dragx += tmp_win->frame_bw;
    dragy += tmp_win->frame_bw;
!   origx = dragx;
!   origy = dragy;
    origWidth = dragWidth;
    origHeight = dragHeight;
    ymotion=xmotion=0;
--- 101,108 ----
  
    dragx += tmp_win->frame_bw;
    dragy += tmp_win->frame_bw;
!   startX = origx = dragx;
!   startY = origy = dragy;
    origWidth = dragWidth;
    origHeight = dragHeight;
    ymotion=xmotion=0;
***************
*** 168,173 ****
--- 172,184 ----
  #endif
    /* pop down the size window */
    XUnmapWindow(dpy, Scr.SizeWindow);
+ 
+   if (abortOp) {
+     dragWidth = origWidth;
+     dragHeight = origHeight;
+     dragx = startX;
+     dragy = startY;
+   }
  
    ConstrainSize (tmp_win, &dragWidth, &dragHeight);
    SetupFrame (tmp_win, dragx - tmp_win->frame_bw, 


