|
|
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.