home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 328_01 / wdrag.c < prev    next >
C/C++ Source or Header  |  1991-03-17  |  1KB  |  99 lines

  1. /*! WDRAG.C ()
  2.  *
  3.  *    drag the current window around the screen
  4.  *    accepts a key (ARROW, PAGE UP/DN, END or HOME)
  5.  *    and moves window as indicated
  6.  *
  7.  *    RETURN 0 if unsuccessful move.
  8.  *
  9.  */
  10. #include "wsys.h"
  11.  
  12.  
  13.  
  14.  
  15. int wdrag (int keystroke)
  16.     {
  17.     int extra, extra2;
  18.  
  19.     int l,t;
  20.  
  21.     if ( w0-> winsave == NULL )
  22.         {
  23.         return (0);
  24.         }
  25.  
  26.     /* need extra margin for borders ?
  27.      */
  28.     extra = (w0-> winbox)? 1: 0;
  29.     extra2 = extra *2;
  30.  
  31.  
  32.  
  33.     l = w0-> winleft ;
  34.     t = w0-> wintop  ;
  35.  
  36.     switch (keystroke)
  37.         {
  38.  
  39.     case (LT_ARROW):
  40.         if (l >6)
  41.             l -= 5;
  42.         else
  43.             keystroke=0;
  44.         break;
  45.  
  46.     case (RT_ARROW):
  47.         if (l +6 <= wxabsmax )
  48.             l += 5;
  49.         else
  50.             keystroke=0;
  51.         break;
  52.  
  53.     case (DN_ARROW):
  54.         if (t +6 <= wyabsmax )
  55.             t += 5;
  56.         else
  57.             keystroke=0;
  58.         break;
  59.  
  60.     case (UP_ARROW):
  61.         if (t>6)
  62.             t -= 5;
  63.         else
  64.             keystroke=0;
  65.         break;
  66.  
  67.     case (HOME):
  68.         l= 1+extra;
  69.         break;
  70.  
  71.     case (END):
  72.         l = wxabsmax -( w0->winxmax ) -extra2;
  73.         break;
  74.  
  75.     case (PAGE_UP):
  76.         t = 2+extra;
  77.         break;
  78.  
  79.     case (PAGE_DN):
  80.         t = wyabsmax -( w0->winymax ) -extra2;
  81.         break;
  82.  
  83.     default:
  84.         keystroke =0;
  85.  
  86.         }    /* end swtich */
  87.  
  88.     if ( keystroke != 0 )
  89.         {
  90.         wrelocate(l,t);
  91.         }
  92.  
  93.  
  94.     return (keystroke);    /* wdrag */
  95.     }
  96.  
  97.  
  98.         
  99.