Annotation of 43BSDTahoe/new/X/XMenu/XMenuRecomp.c, revision 1.1

1.1     ! root        1: #include <X/mit-copyright.h>
        !             2: 
        !             3: /* $Header: XMenuRecomp.c,v 10.7 86/02/12 16:19:51 tony Rel $ */
        !             4: /* Copyright    Massachusetts Institute of Technology    1985  */
        !             5: 
        !             6: /*
        !             7:  * XMenu:      MIT Project Athena, X Window system menu package
        !             8:  *
        !             9:  *     XMenuRecompute - Recompute XMenu object dependencies.
        !            10:  *
        !            11:  *     Author:         Tony Della Fera, DEC
        !            12:  *                     September, 1985
        !            13:  *
        !            14:  */
        !            15: 
        !            16: #include "XMenuInternal.h"
        !            17: 
        !            18: int
        !            19: XMenuRecompute(menu)
        !            20:     register XMenu *menu;      /* Menu object to be recomputed. */
        !            21: {
        !            22:     register XMPane *p_ptr;    /* Pane pointer. */
        !            23:     register XMSelect *s_ptr;  /* Selection pointer. */
        !            24: 
        !            25:     register int p_num;                /* Pane serial number. */
        !            26:     register int s_num;                /* Selection serial number. */
        !            27: 
        !            28:     /*
        !            29:      * If no recompute is necessary, return.
        !            30:      */
        !            31:     if (!menu->recompute) {
        !            32:        _XMErrorCode = XME_NO_ERROR;
        !            33:        return(XM_SUCCESS);
        !            34:     }
        !            35: 
        !            36:     /*
        !            37:      * If there are no panes in the menu then return failure
        !            38:      * beacuse the menu is not initialized.
        !            39:      */
        !            40:     if (menu->p_count == 0) {
        !            41:        _XMErrorCode = XME_NOT_INIT;
        !            42:        return(XM_FAILURE);
        !            43:     }
        !            44: 
        !            45:     /*
        !            46:      * Recompute menu wide global values: pane window size,
        !            47:      * selection size and maximum selection count.
        !            48:      */
        !            49:     _XMRecomputeGlobals(menu);
        !            50: 
        !            51:     /*
        !            52:      * For each pane in the menu...
        !            53:      */
        !            54:     p_num = 0;
        !            55:     for (
        !            56:        p_ptr = menu->p_list->next;
        !            57:        p_ptr != menu->p_list;
        !            58:        p_ptr = p_ptr->next
        !            59:     ){
        !            60:        /*
        !            61:         * Recompute pane dependencies.
        !            62:         */
        !            63:        if (_XMRecomputePane(menu, p_ptr, p_num) == _FAILURE) {
        !            64:            return(XM_FAILURE);
        !            65:        }
        !            66:         p_num++;
        !            67:        /*
        !            68:         * For each selection in the pane...
        !            69:         */
        !            70:        s_num = 0;
        !            71:        for (
        !            72:            s_ptr = p_ptr->s_list->next;
        !            73:            s_ptr != p_ptr->s_list;
        !            74:            s_ptr = s_ptr->next
        !            75:        ) {
        !            76:            /*
        !            77:             * Recompute selection dependencies.
        !            78:             */
        !            79:            if (_XMRecomputeSelection(menu, s_ptr, s_num) == _FAILURE) {
        !            80:                return(XM_FAILURE);
        !            81:            }
        !            82:            s_num++;
        !            83:        }
        !            84:     }
        !            85: 
        !            86:     /*
        !            87:      * Flush the window creation queue.
        !            88:      * This batches all window creates since lazy evaluation
        !            89:      * is more efficient than individual evaluation.
        !            90:      * This routine also does an XFlush().
        !            91:      */
        !            92:     if (_XMWinQueFlush(menu) == _FAILURE) return(XM_FAILURE);
        !            93: 
        !            94:     /*
        !            95:      * Make sure all selection windows are mapped.
        !            96:      */
        !            97:     for (
        !            98:        p_ptr = menu->p_list->next;
        !            99:        p_ptr != menu->p_list;
        !           100:        p_ptr = p_ptr->next
        !           101:     ){
        !           102:        XMapSubwindows(p_ptr->window);
        !           103:     }
        !           104: 
        !           105:     /*
        !           106:      * Recompute menu size.
        !           107:      */
        !           108:     if (menu->menu_style == CENTER) {
        !           109:        menu->width = menu->p_width + (menu->p_bdr_width << 1);
        !           110:     }
        !           111:     else {
        !           112:        menu->width = menu->p_width + (menu->p_bdr_width << 1) +
        !           113:            ((menu->p_count - 1) * menu->p_x_off);
        !           114:     }
        !           115:     menu->height = menu->p_height + (menu->p_bdr_width << 1) +
        !           116:        ((menu->p_count - 1) * menu->p_y_off);
        !           117: 
        !           118:     /*
        !           119:      * Reset the recompute flag.
        !           120:      */
        !           121:     menu->recompute = 0;
        !           122: 
        !           123:     /*
        !           124:      * Return successfully.
        !           125:      */
        !           126:     _XMErrorCode = XME_NO_ERROR;
        !           127:     return(XM_SUCCESS);
        !           128: }

unix.superglobalmegacorp.com

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