1/* Copyright Massachusetts Institute of Technology 1985 */ 2 3#include "copyright.h" 4 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 "XMenuInt.h" 17 18int 19XMenuChangeSelection(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 length 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 = 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} 89 90/* arch-tag: 229732a6-46bf-4a3a-ad90-3d8ed65c0841 91 (do not change this comment) */ 92