|
|
1.1 root 1: #include <X11/copyright.h>
2:
3: /* $Header: Post.c,v 1.2 87/08/04 10:29:42 toddb Exp $ */
4: /* Copyright Massachusetts Institute of Technology 1985 */
5:
6: /*
7: * XMenu: MIT Project Athena, X Window system menu package
8: *
9: * XMenuPost - Maps a given menu to the display and activates
10: * the menu for user selection. The user is allowed to
11: * specify the mouse button event mask that will be used
12: * to identify a selection request. When a selection
13: * request is recieved (i.e., when the specified mouse
14: * event occurs) the data returned will be either the
15: * data associated with the particular selection active
16: * at the time of the selection request or NULL if no
17: * selection was active. A menu selection is shown to
18: * be active by placing a highlight box around the
19: * selection as the mouse cursor enters its active
20: * region. Inactive selections will not be highlighted.
21: * As the mouse cursor moved from one menu pane
22: * to another menu pane the pane being entered is raised
23: * and activated and the pane being left is inactivated.
24: * If an error occurs NULL will be returned with the
25: * p_num set to POST_ERROR, s_num set to
26: * NO_SELECTION and _XMErrorCode set to an
27: * appropriate value.
28: * Every time the routine returns successfully the
29: * p_num and s_num indices will be set to indicate
30: * the currently active pane and/or selection. If the
31: * mouse was not in a selection window at the time
32: * s_num will be set to NO_SELECTION.
33: *
34: * Author: Tony Della Fera, DEC
35: * August, 1984
36: *
37: */
38:
39: #include "XMenuInternal.h"
40:
41: char *
42: XMenuPost(display, menu, p_num, s_num, x_pos, y_pos, event_mask)
43: register Display *display; /* Previously opened display. */
44: register XMenu *menu; /* Menu to post. */
45: register int *p_num; /* Pane number selected. */
46: register int *s_num; /* Selection number selected. */
47: register int x_pos; /* X coordinate of menu position. */
48: register int y_pos; /* Y coordinate of menu position. */
49: int event_mask; /* Mouse button event mask. */
50: {
51: register int stat; /* Routine call return status. */
52: char *data; /* Return data. */
53:
54: /*
55: * Set up initial pane and selection assumptions.
56: */
57:
58: /*
59: * Make the procedure call.
60: */
61: stat = XMenuActivate(
62: display,
63: menu,
64: p_num, s_num,
65: x_pos, y_pos,
66: event_mask,
67: &data);
68:
69: /*
70: * Check the return value and return accordingly.
71: */
72: switch (stat) {
73: case XM_FAILURE:
74: *p_num = POST_ERROR;
75: *s_num = NO_SELECTION;
76: return(NULL);
77: case XM_NO_SELECT:
78: case XM_IA_SELECT:
79: *s_num = NO_SELECTION;
80: return(NULL);
81: case XM_SUCCESS:
82: default:
83: return(data);
84: }
85: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.