Annotation of 43BSDTahoe/new/X/XMenu/XMenuChgSel.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.