1: #include <X/mit-copyright.h>
2:
3: /* $Header: XMenuChgSel.c,v 10.9 86/02/01 16:14:32 tony Rel $ */
4: /* Copyright Massachusetts Institute of Technology 1985 */
5:
6: /*
7: * XMenu: MIT Project Athena, X Window system menu package
8: *
9: * XMenuChangeSelection - Change a menu selection.
10: *
11: * Author: Tony Della Fera, DEC
12: * December 19, 1985
13: *
14: */
15:
16: #include "XMenuInternal.h"
17:
18:
19: XMenuChangeSelection(menu, p_num, s_num, data, data_sw, label, label_sw)
20: register XMenu *menu; /* Menu object to be modified. */
21: register int p_num; /* Pane number to be modified. */
22: register int s_num; /* Selection number to modified. */
23: char *data; /* Data value. */
24: int data_sw; /* Change to new data value? */
25: char *label; /* Selection label. */
26: int label_sw; /* Change to new label? */
27: {
28: register int i; /* Loop counter. */
29: register XMPane *p_ptr; /* XMPane pointer. */
30: register XMSelect *s_ptr; /* XMSelect pointer. */
31:
32: int label_length; /* Label lenght in characters. */
33: int label_width; /* Label width in pixels. */
34:
35: /*
36: * Check for NULL pointers!
37: */
38: if (label == NULL) {
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: if (s_ptr == NULL) return(XM_FAILURE);
54:
55: /*
56: * Reset the label?
57: */
58: if (label_sw) {
59: /*
60: * Determine label size.
61: */
62: label_length = strlen(label);
63: label_width = XQueryWidth(label, menu->s_fnt_info->id);
64:
65: /*
66: * Change the selection data.
67: */
68: s_ptr->label = label;
69: s_ptr->label_width = label_width;
70: s_ptr->label_length = label_length;
71:
72: /*
73: * Schedule a recompute.
74: */
75: menu->recompute = 1;
76: }
77:
78: /*
79: * Reset the data?
80: */
81: if (data_sw) s_ptr->data = data;
82:
83: /*
84: * Return successfully.
85: */
86: _XMErrorCode = XME_NO_ERROR;
87: return(s_num);
88: }
Defined functions
defined in line
18; used 7 times