home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / devcon / sanfrancisco_1989 / sf-devcon89.1 / commodities / aztec / examples / apt2vudu.c < prev    next >
C/C++ Source or Header  |  1992-08-27  |  2KB  |  79 lines

  1. /* av.c -- autopoint2 voodoo    */
  2.  
  3. /*
  4. Copyright (c) 1987, 1988, 1989 Jim Mackraz and I&I Computing.
  5.  
  6. Executables based on this information may be used in software
  7. for Commodore Amiga computers.  All other rights reserved.
  8. This information is provided "as is"; no warranties are made.
  9. All use is at your own risk, and no liability or responsibility
  10. is assumed.
  11. */
  12.  
  13. #include "sysall.h"
  14.  
  15. #define D(x)    ;
  16.  
  17. struct IntuitionBase *IntuitionBase = NULL;
  18. APTR    LayersBase = NULL;
  19.  
  20. apt2_init()
  21. {
  22.     IntuitionBase=(struct IntuitionBase *) OpenLibrary("intuition.library",33L);
  23.     if (!IntuitionBase) return (0);
  24.     LayersBase= (APTR) OpenLibrary("layers.library",33L);
  25.     if (!LayersBase) return (0);
  26.     return (1);
  27. }
  28.  
  29. apt2_shutdown()
  30. {
  31.     if (IntuitionBase) CloseLibrary(IntuitionBase);
  32.     if (LayersBase) CloseLibrary(LayersBase);
  33. }
  34.  
  35. autopoint2()
  36. {
  37.     LONG                     ilock;
  38.     struct Screen            *screen;
  39.     struct Window            *mousewindow = NULL;
  40.     static struct Window    *lasttry = NULL;
  41.     struct Layer            *layer;
  42.  
  43.  
  44.     ilock = LockIBase(0L);
  45.  
  46.     /* figure out which window mouse is over    */
  47.     for (screen = IntuitionBase->FirstScreen; screen; screen=screen->NextScreen)
  48.     {
  49.         if (screen->MouseY > 0)        /* this is the ticket    */
  50.             break;
  51.     }
  52.  
  53.     if (screen)
  54.     {
  55.         layer = WhichLayer(&screen->LayerInfo,
  56.             (LONG) screen->MouseX, (LONG) screen->MouseY);
  57.  
  58.         if (layer && (layer != screen->BarLayer) )
  59.         {
  60.             mousewindow = (struct Window *) layer->Window;
  61.         }
  62.     }
  63.  
  64.  
  65.     /* a number of conditions cause us to wimp out    */
  66.     if (!mousewindow ||
  67.         (mousewindow == lasttry) ||
  68.         (mousewindow == IntuitionBase->ActiveWindow))
  69.     {
  70.         goto OUT;
  71.     }
  72.  
  73.     lasttry = mousewindow;
  74.     ActivateWindow(mousewindow);
  75.  
  76. OUT:
  77.     UnlockIBase(ilock);
  78. }
  79.