|
|
1.1 ! root 1: #include <X/mit-copyright.h> ! 2: ! 3: /* $Header: XMenuChgSel.c,v 10.9 86/02/12 16:18:42 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: int ! 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.