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: 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: }

Defined functions

Last modified: 1986-02-01
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 965
Valid CSS Valid XHTML 1.0 Strict