|
|
1.1 root 1: #include <X11/copyright.h>
2:
3: /* $Header: ChgSel.c,v 1.2 87/09/10 20:30:38 chris Exp $ */
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: int
19: XMenuChangeSelection(display, menu, p_num, s_num, data, data_sw, label, label_sw)
20: Display *display; /* previously opened display. */
21: register XMenu *menu; /* Menu object to be modified. */
22: register int p_num; /* Pane number to be modified. */
23: register int s_num; /* Selection number to modified. */
24: char *data; /* Data value. */
25: int data_sw; /* Change to new data value? */
26: char *label; /* Selection label. */
27: int label_sw; /* Change to new label? */
28: {
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(display, menu, p_num);
47: if (p_ptr == NULL) return(XM_FAILURE);
48:
49: /*
50: * Find the right selection.
51: */
52: s_ptr = _XMGetSelectionPtr(display, 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 = XTextWidth(menu->s_fnt_info, label, label_length);
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.