root/branches/2.1/oldXMenu/Locate.c

Revision 3207, 2.2 kB (checked in by miyoshi, 5 years ago)

Sync up with Emacs-21.2.

  • Property svn:eol-style set to native
Line 
1 #include "copyright.h"
2
3 /* $Header: /cvsroot/emacs/emacs/oldXMenu/Locate.c,v 1.1 1999/10/03 19:35:09 fx Exp $ */
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 "XMenuInt.h"
18
19 int
20 XMenuLocate(display, menu, p_num, s_num, x_pos, y_pos, ul_x, ul_y, width, height)
21     register Display *display;  /* Previously opened display. */
22     register XMenu *menu;       /* Menu object being located. */
23     int p_num;                  /* Active pane number. */
24     int s_num;                  /* Active selection number. */
25     int x_pos;                  /* X coordinate of mouse active position. */
26     int y_pos;                  /* Y coordinate of mouse active position. */
27     int *ul_x;                  /* Returned upper left menu X coordinate. */
28     int *ul_y;                  /* Returned upper left menu Y coordinate. */
29     int *width;                 /* Returned menu width. */
30     int *height;                /* Returned menu height. */
31 {
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(display, 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(display, 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 }
Note: See TracBrowser for help on using the browser.