home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Enlightenment / enl14.tgz / enl14.tar / enl14 / events.c < prev    next >
C/C++ Source or Header  |  1997-11-21  |  3KB  |  189 lines

  1. #include "enl.h"
  2.  
  3. void HandleEvent(XEvent *ev)
  4. {
  5.     int type;
  6.     
  7.     type=ev->type;
  8.    switch (ev->type)
  9.      {
  10.       case KeyPress:
  11.          break;
  12.       case KeyRelease:
  13.          break;
  14.       case ButtonPress:
  15.          HandlePress(ev);
  16.          break;
  17.       case ButtonRelease:
  18.          HandleRelease(ev);
  19.          break;
  20.       case MotionNotify:
  21.          while (XCheckTypedEvent(disp,type,ev));
  22.          HandleMotion(ev);
  23.          break;
  24.       case EnterNotify:
  25.          HandleIn(ev);
  26.          break;
  27.       case LeaveNotify:
  28.          HandleOut(ev);
  29.          break;
  30.       case FocusIn:
  31.          break;
  32.       case FocusOut:
  33.          break;
  34.       case DestroyNotify:
  35.          break;
  36.       case UnmapNotify:
  37.          break;
  38.       case MapRequest:
  39.          break;
  40.       case ConfigureRequest:
  41.          break;
  42.       case ResizeRequest:
  43.          break;
  44.       case CirculateRequest:
  45.          break;
  46.       case PropertyNotify:
  47.          break;
  48.       case ClientMessage:
  49.          break;
  50.       default:
  51.          break;
  52.      }
  53. }
  54.  
  55. void HandlePress(XEvent *ev)
  56. {
  57.    Button *b;
  58.    Slider *s;
  59.    int type;
  60.    
  61.    b=FindWindowID(ev->xbutton.window,LIST_TYPE_BUTTON,&type);
  62.    if (b)
  63.      {
  64.     if (b->state==STATE_DISABLED) return;
  65.     ButtonClick(b,1);
  66.     mode.mode=MODE_NONE;
  67.     mode.strip=b->strip;
  68.     mode.button=b;
  69.     mode.px=ev->xbutton.x_root;
  70.     mode.py=ev->xbutton.y_root;
  71.     DoAction(ev,b->actions,b->num);
  72.      }
  73.    s=FindWindowID(ev->xbutton.window,LIST_TYPE_SLIDER,&type);
  74.    if (s)
  75.      {
  76.     SliderClick(s,1);
  77.     mode.mode=MODE_MOVE_SLIDER;
  78.     mode.slider=s;
  79.     mode.px=ev->xbutton.x_root;
  80.     mode.py=ev->xbutton.y_root;
  81.     return;
  82.      }
  83. }
  84.  
  85. void HandleRelease(XEvent *ev)
  86. {
  87.    Button *b;
  88.    Slider *s;
  89.    int type;
  90.    
  91.    b=FindWindowID(ev->xbutton.window,LIST_TYPE_BUTTON,&type);
  92.    if (b)
  93.      {
  94.     if (b->state==STATE_DISABLED) return;
  95.     ButtonClick(b,0);
  96.     mode.mode=MODE_NONE;
  97.     mode.strip=b->strip;
  98.     mode.button=b;
  99.     DoAction(ev,b->actions,b->num);
  100.     return;
  101.      }
  102.    s=FindWindowID(ev->xbutton.window,LIST_TYPE_SLIDER,&type);
  103.    if (s)
  104.      {
  105.     SetSliderValue(s,GetSliderValue(s));
  106.     SliderClick(s,0);
  107.     mode.mode=MODE_NONE;
  108.     mode.slider=NULL;
  109.     return;
  110.      }
  111. }
  112.  
  113. void HandleIn(XEvent *ev)
  114. {
  115.    Button *b;
  116.    Slider *s;
  117.    int type;
  118.    
  119.    b=FindWindowID(ev->xcrossing.window,LIST_TYPE_BUTTON,&type);
  120.    if (b)
  121.      {
  122.     if (b->state==STATE_DISABLED) return;
  123.     ButtonHilite(b,1);
  124.     mode.strip=b->strip;
  125.     mode.button=b;
  126.     DoAction(ev,b->actions,b->num);
  127.      }
  128.    s=FindWindowID(ev->xbutton.window,LIST_TYPE_SLIDER,&type);
  129.    if (s)
  130.      {
  131.     SliderHilite(s,1);
  132.     return;
  133.      }
  134. }
  135.  
  136. void HandleOut(XEvent *ev)
  137. {
  138.    Button *b;
  139.    Slider *s;
  140.    int type;
  141.  
  142.    b=FindWindowID(ev->xcrossing.window,LIST_TYPE_BUTTON,&type);
  143.    if (b)
  144.      {
  145.     if (b->state==STATE_DISABLED) return;
  146.     ButtonHilite(b,0);
  147.     mode.strip=b->strip;
  148.     mode.button=b;
  149.     DoAction(ev,b->actions,b->num);
  150.      }
  151.    s=FindWindowID(ev->xbutton.window,LIST_TYPE_SLIDER,&type);
  152.    if (s)
  153.      {
  154.     SliderHilite(s,0);
  155.     return;
  156.      }
  157. }
  158.  
  159. void HandleMotion(XEvent *ev)
  160. {
  161.    int dx,dy;
  162.    
  163.    if (mode.mode==MODE_MOVE_STRIP)
  164.      {
  165.     dx=ev->xmotion.x_root-mode.px;
  166.     dy=ev->xmotion.y_root-mode.py;
  167.     MoveStripBy(mode.strip,dx,dy);
  168.     mode.px+=dx;
  169.     mode.py+=dy;
  170.      }
  171.    else if (mode.mode==MODE_MOVE_BUTTON)
  172.      {
  173.     dx=ev->xmotion.x_root-mode.px;
  174.     dy=ev->xmotion.y_root-mode.py;
  175.     MoveButtonBy(mode.button,dx,dy);
  176.     mode.px+=dx;
  177.     mode.py+=dy;
  178.      }
  179.    else if (mode.mode==MODE_MOVE_SLIDER)
  180.      {
  181.     dx=ev->xmotion.x_root-mode.px;
  182.     dy=ev->xmotion.y_root-mode.py;
  183.     HandleSliderMouse(mode.slider,dx,dy);
  184.     mode.px+=dx;
  185.     mode.py+=dy;
  186.     DoSimpleAction(&mode.slider->action);
  187.      }
  188. }
  189.