Annotation of 43BSDTahoe/new/X/XMenu/XMenuLocate.c, revision 1.1.1.1

1.1       root        1: #include <X/mit-copyright.h>
                      2: 
                      3: /* $Header: XMenuLocate.c,v 10.5 86/07/11 16:49:17 tony Rel $ */
                      4: /* Copyright    Massachusetts Institute of Technology    1985  */
                      5: 
                      6: /*
                      7:  * XMenu:      MIT Project Athena, X Window system menu package
                      8:  *
                      9:  *     XMenuLocate - Return data necessary to position and locate
                     10:  *                   a menu on the screen.
                     11:  *
                     12:  *     Author:         Tony Della Fera, DEC
                     13:  *                     January 11, 1985
                     14:  *
                     15:  */
                     16: 
                     17: #include "XMenuInternal.h"
                     18: 
                     19: int
                     20: XMenuLocate(menu, p_num, s_num, x_pos, y_pos, ul_x, ul_y, width, height)
                     21:     register XMenu *menu;      /* Menu object being located. */
                     22:     int p_num;                 /* Active pane number. */
                     23:     int s_num;                 /* Active selection number. */
                     24:     int x_pos;                 /* X coordinate of mouse active position. */
                     25:     int y_pos;                 /* Y coordinate of mouse active position. */
                     26:     int *ul_x;                 /* Returned upper left menu X coordinate. */
                     27:     int *ul_y;                 /* Returned upper left menu Y coordinate. */
                     28:     int *width;                        /* Returned menu width. */
                     29:     int *height;               /* Returned menu height. */
                     30: {
                     31:     register int i;            /* Loop counter. */
                     32:     register XMPane *p_ptr;    /* XMPane pointer. */
                     33:     register XMSelect *s_ptr;  /* XMSelect pointer. */
                     34:     
                     35:     /*
                     36:      * Are the position arguments positive?
                     37:      */
                     38:     if ((x_pos <= 0) || (y_pos <= 0)) {
                     39:        _XMErrorCode = XME_ARG_BOUNDS;
                     40:        return(XM_FAILURE);
                     41:     }
                     42: 
                     43:     /*
                     44:      * Find the right pane.
                     45:      */
                     46:     p_ptr = _XMGetPanePtr(menu, p_num);
                     47:     if (p_ptr == NULL) return(XM_FAILURE);
                     48: 
                     49:     /*
                     50:      * Find the right selection.
                     51:      */
                     52:     s_ptr = _XMGetSelectionPtr(p_ptr, s_num);
                     53: 
                     54:     /*
                     55:      * Check to see that the menu's dependencies have been
                     56:      * recomputed and are up to date.  If not, do it now.
                     57:      */
                     58:     if (menu->recompute) XMenuRecompute(menu);
                     59: 
                     60:     /*
                     61:      * Compute the new menu origin such that the active point lies
                     62:      * in the center of the desired active pane and selection.
                     63:      * This sets the values of ul_x and ul_y.
                     64:      */
                     65:     _XMTransToOrigin(menu, p_ptr, s_ptr, x_pos, y_pos, ul_x, ul_y);
                     66: 
                     67:     /*
                     68:      * Set remaining return argument values.
                     69:      */
                     70:     *width = menu->width;
                     71:     *height = menu->height;
                     72: 
                     73:     /*
                     74:      * Return successfully.
                     75:      */
                     76:     _XMErrorCode = XME_NO_ERROR;
                     77:     return(XM_SUCCESS);
                     78: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.