Annotation of 43BSD/contrib/X/XMenu/XMenuCreate.c, revision 1.1.1.1

1.1       root        1: #include <X/mit-copyright.h>
                      2: 
                      3: /* $Header: XMenuCreate.c,v 10.9 86/02/01 16:14:36 tony Rel $ */
                      4: /* Copyright    Massachusetts Institute of Technology    1985  */
                      5: 
                      6: /*
                      7:  * XMenu:      MIT Project Athena, X Window system menu package
                      8:  *
                      9:  *     XMenuCreate -   Creates an X window system menu object.
                     10:  *
                     11:  *     Author:         Tony Della Fera, DEC
                     12:  *                     January 23, 1986
                     13:  *
                     14:  */
                     15: 
                     16: #include "XMenuInternal.h"
                     17: 
                     18: #include "../bitmaps/dimple1.bitmap"
                     19: #include "../bitmaps/dimple3.bitmap"
                     20: #include "../bitmaps/gray1.bitmap"
                     21: #include "../bitmaps/gray3.bitmap"
                     22: #include "../bitmaps/cross_weave.bitmap"
                     23: 
                     24: #include "../cursors/left_ptr.cursor"
                     25: #include "../cursors/left_ptr_mask.cursor"
                     26: #include "../cursors/right_ptr.cursor"
                     27: #include "../cursors/right_ptr_mask.cursor"
                     28: #include "../cursors/center_ptr.cursor"
                     29: #include "../cursors/center_ptr_mask.cursor"
                     30: 
                     31: #define DEF_FREEZE             0
                     32: #define DEF_MENU_STYLE         RIGHT
                     33: #define DEF_MENU_MODE          INVERT
                     34: #define DEF_INACT_PNUM         3
                     35: #define MAX_INACT_PNUM         4
                     36: 
                     37: #define DEF_P_STYLE            CENTER
                     38: #define DEF_P_EVENTS           (EnterWindow | ExposeWindow)
                     39: #define DEF_P_FNT_NAME         "8x13"
                     40: #define DEF_P_SPREAD           0.5
                     41: #define DEF_P_BDR_WIDTH                2
                     42: 
                     43: #define DEF_S_STYLE            LEFT
                     44: #define DEF_S_EVENTS           (EnterWindow | LeaveWindow)
                     45: #define DEF_S_FNT_NAME         "6x10"
                     46: #define DEF_S_SPREAD           0.10
                     47: #define DEF_S_BDR_WIDTH                1
                     48: 
                     49: #define DEF_P_BDR_COLOR                BlackPixel
                     50: #define DEF_S_BDR_COLOR        BlackPixel
                     51: #define DEF_P_FRG_COLOR        BlackPixel
                     52: #define DEF_S_FRG_COLOR        BlackPixel
                     53: #define DEF_BKGND_COLOR        WhitePixel
                     54: #define DEF_MOUSE_COLOR                BlackPixel
                     55: 
                     56: #define XASSOC_TABLE_SIZE      64
                     57: 
                     58: #define TILE_BUF_SIZE          5
                     59: 
                     60: int atoi();
                     61: double atof();
                     62: 
                     63: XMenu *
                     64: XMenuCreate(parent, def_env)
                     65:     Window parent;             /* Window ID of the menu's parent window. */
                     66:     register char *def_env;    /* X Defaults program environment name. */
                     67: {
                     68:     register int i;            /* Loop counter. */
                     69:     register int j;            /* Loop counter. */
                     70:     register char *def_val;    /* X Default value temp variable. */
                     71: 
                     72:     register XMenu *menu;      /* Pointer to the new menu. */
                     73:     XMStyle menu_style;                /* Menu display style. */
                     74:     XMMode menu_mode;          /* Menu display mode. */
                     75:     XMPane *pane;              /* Pane list header. */
                     76:     XAssocTable *assoc_tab;    /* XAssocTable pointer. */
                     77:     Cursor mouse_cursor;       /* Mouse cursor. */
                     78:     int freeze;                        /* Freeze server mode. */
                     79:     int tile_count;            /* Number of tiles created by XMakeTiles. */
                     80: 
                     81:     XMStyle p_style;           /* Pane display style. */
                     82:     char *p_fnt_name;          /* Flag font name. */
                     83:     FontInfo *p_fnt_info;      /* Flag font information. */
                     84:     int p_fnt_pad;             /* Flag font padding in pixels. */
                     85:     double p_spread;           /* Pane spread in flag height fractions. */
                     86:     int p_bdr_width;           /* Pane border width. */
                     87:     int flag_height;           /* Flag window height. */
                     88:     int p_height;              /* Pane window height. */
                     89:     int p_x_off;               /* Pane X offset. */
                     90:     int p_y_off;               /* Pane Y offset. */
                     91: 
                     92:     XMStyle s_style;           /* Selection display style. */
                     93:     char *s_fnt_name;          /* Selection font name. */
                     94:     FontInfo *s_fnt_info;      /* Selection font information. */
                     95:     int s_fnt_pad;             /* Selection font padding in pixels. */
                     96:     double s_spread;           /* Select spread in line height fractions. */
                     97:     int s_bdr_width;           /* Highlight border width. */
                     98:     int s_height;              /* Selection window height. */
                     99:     int s_x_off;               /* Selection window X offset. */
                    100:     int s_y_off;               /* Selection window Y offset. */
                    101: 
                    102:     Color color_def;           /* Color definition holder. */
                    103:     int p_bdr_color;           /* Color of border pixmap. */
                    104:     int s_bdr_color;           /* Color of highlight pixmap. */
                    105:     int p_frg_color;           /* Color of pane foreground pixmap. */
                    106:     int s_frg_color;           /* Color of selection foreground pixmap. */
                    107:     int bkgnd_color;           /* Color of background pixmap. */
                    108:     int mouse_color;           /* Color of mouse cursor. */
                    109: 
                    110:     Bitmap inact_bitmap;       /* Inactive background pattern bitmap. */
                    111:     int inact_pnum;            /* Inactive background pattern number. */
                    112: 
                    113:     Pixmap p_bdr_pixmap;       /* Pane border pixmap. */
                    114:     Pixmap s_bdr_pixmap;       /* Selection border pixmap. */
                    115:     Pixmap p_frg_pixmap;       /* Pane forground pixmap. */
                    116:     Pixmap s_frg_pixmap;       /* Selection forground pixmap. */
                    117:     Pixmap bkgnd_pixmap;       /* Menu background pixmap. */
                    118:     Pixmap inact_pixmap;       /* Menu inactive pixmap. */
                    119: 
                    120:     TileFrame tile_buf[TILE_BUF_SIZE]; /* XMakeTiles buffer. */
                    121: 
                    122:     /*
                    123:      * Calloc the XMenu structure and the initial pane.
                    124:      */
                    125:     menu = (XMenu *)calloc(1, sizeof(XMenu));
                    126:     if (menu == NULL) {
                    127:        _XMErrorCode = XME_CALLOC;
                    128:        return(NULL);
                    129:     }
                    130:     pane = (XMPane *)calloc(1, sizeof(XMPane));
                    131:     if (pane == NULL) {
                    132:        _XMErrorCode = XME_CALLOC;
                    133:        return(NULL);
                    134:     }
                    135: 
                    136:     /*
                    137:      * Create the XAssocTable.
                    138:      */
                    139:     assoc_tab = (XAssocTable *)XCreateAssocTable(XASSOC_TABLE_SIZE);
                    140:     if (assoc_tab == NULL) {
                    141:        _XMErrorCode = XME_CREATE_ASSOC;
                    142:        return(NULL);
                    143:     }
                    144: 
                    145:     /*
                    146:      * Set up the default environment name.
                    147:      */
                    148:     if (def_env == NULL || *def_env == '\0') def_env = "XMenu";
                    149: 
                    150:     /*
                    151:      * Set up internal fail-safe defaults.
                    152:      */
                    153:     freeze = DEF_FREEZE;
                    154:     menu_style = DEF_MENU_STYLE;
                    155:     menu_mode = DEF_MENU_MODE;
                    156:     inact_pnum = DEF_INACT_PNUM;
                    157: 
                    158:     p_style = DEF_P_STYLE;
                    159:     p_spread = DEF_P_SPREAD;
                    160:     p_fnt_name = DEF_P_FNT_NAME;
                    161:     p_bdr_width = DEF_P_BDR_WIDTH;
                    162: 
                    163:     s_style = DEF_S_STYLE;
                    164:     s_spread = DEF_S_SPREAD;
                    165:     s_fnt_name = DEF_S_FNT_NAME;
                    166:     s_bdr_width = DEF_S_BDR_WIDTH;
                    167: 
                    168:     p_bdr_color = DEF_P_BDR_COLOR;
                    169:     s_bdr_color = DEF_S_BDR_COLOR;
                    170:     p_frg_color = DEF_P_FRG_COLOR;
                    171:     s_frg_color = DEF_S_FRG_COLOR;
                    172:     bkgnd_color = DEF_BKGND_COLOR;
                    173:     mouse_color = DEF_MOUSE_COLOR;
                    174: 
                    175:     /*
                    176:      * Get default values from X.
                    177:      */
                    178:     def_val = XGetDefault(def_env, "MenuFreeze");
                    179:     if (def_val != NULL) {
                    180:        if (strcmp(def_val, "on") == 0) freeze = 1;
                    181:        else if (strcmp(def_val, "off") == 0) freeze = 0;
                    182:     }
                    183: 
                    184:     def_val = XGetDefault(def_env, "MenuStyle");
                    185:     if (def_val != NULL) {
                    186:        if (strcmp(def_val, "right_hand") == 0) menu_style = RIGHT;
                    187:        else if (strcmp(def_val, "left_hand") == 0) menu_style = LEFT;
                    188:        else if (strcmp(def_val, "center") == 0) menu_style = CENTER;
                    189:     }
                    190: 
                    191:     def_val = XGetDefault(def_env, "MenuMode");
                    192:     if (def_val != NULL) {
                    193:        if (strcmp(def_val, "box") == 0) menu_mode = BOX;
                    194:        else if (strcmp(def_val, "invert") == 0) menu_mode = INVERT;
                    195:     }
                    196: 
                    197:     def_val = XGetDefault(def_env, "MenuMouse");
                    198:     if (def_val != NULL) {
                    199:        if (DisplayCells() > 2) {
                    200:             if (
                    201:                XParseColor(def_val, &color_def) &&
                    202:                XGetHardwareColor(&color_def)
                    203:            ) mouse_color = color_def.pixel;
                    204:            else mouse_color = DEF_S_BDR_COLOR;
                    205:         }
                    206:        else if (strcmp(def_val, "black") == 0) mouse_color = BlackPixel;
                    207:        else if (strcmp(def_val, "white") == 0) mouse_color = WhitePixel;
                    208:     }
                    209: 
                    210:     def_val = XGetDefault(def_env, "MenuBackground");
                    211:     if (def_val != NULL) {
                    212:        if (DisplayCells() > 2) {
                    213:             if (
                    214:                XParseColor(def_val, &color_def) &&
                    215:                XGetHardwareColor(&color_def)
                    216:            ) bkgnd_color = color_def.pixel;
                    217:            else bkgnd_color = DEF_BKGND_COLOR;
                    218:         }
                    219:        else if (strcmp(def_val, "black") == 0) bkgnd_color = BlackPixel;
                    220:        else if (strcmp(def_val, "white") == 0) bkgnd_color = WhitePixel;
                    221:     }
                    222:     
                    223:     def_val = XGetDefault(def_env, "MenuInactivePattern");
                    224:     if (def_val != NULL) {
                    225:        if (strcmp(def_val, "dimple1") == 0) inact_pnum = 0;
                    226:        else if (strcmp(def_val, "dimple3") == 0) inact_pnum = 1;
                    227:        else if (strcmp(def_val, "gray1") == 0) inact_pnum = 2;
                    228:        else if (strcmp(def_val, "gray3") == 0) inact_pnum = 3;
                    229:        else if (strcmp(def_val, "cross_weave") == 0) inact_pnum = 4;
                    230:     }
                    231: 
                    232:     def_val = XGetDefault(def_env, "PaneStyle");
                    233:     if (def_val != NULL) {
                    234:        if (strcmp(def_val, "flush_left") == 0) p_style = LEFT;
                    235:        else if (strcmp(def_val, "flush_right") == 0) p_style = RIGHT;
                    236:        else if (strcmp(def_val, "center") == 0) p_style = CENTER;
                    237:     }
                    238: 
                    239:     def_val = XGetDefault(def_env, "PaneFont");
                    240:     if (def_val != NULL) p_fnt_name = def_val;
                    241: 
                    242:     def_val = XGetDefault(def_env, "PaneForeground");
                    243:     if (def_val != NULL) {
                    244:        if (DisplayCells() > 2) {
                    245:             if (
                    246:                XParseColor(def_val, &color_def) &&
                    247:                XGetHardwareColor(&color_def)
                    248:            ) p_frg_color = color_def.pixel;
                    249:            else p_frg_color = DEF_P_FRG_COLOR;
                    250:         }
                    251:        else if (strcmp(def_val, "black") == 0) p_frg_color = BlackPixel;
                    252:        else if (strcmp(def_val, "white") == 0) p_frg_color = WhitePixel;
                    253:     }
                    254: 
                    255:     def_val = XGetDefault(def_env, "PaneBorder");
                    256:     if (def_val != NULL) {
                    257:        if (DisplayCells() > 2) {
                    258:             if (
                    259:                XParseColor(def_val, &color_def) &&
                    260:                XGetHardwareColor(&color_def)
                    261:            ) p_bdr_color = color_def.pixel;
                    262:            else p_bdr_color = DEF_P_BDR_COLOR;
                    263:         }
                    264:        else if (strcmp(def_val, "black") == 0) p_bdr_color = BlackPixel;
                    265:        else if (strcmp(def_val, "white") == 0) p_bdr_color = WhitePixel;
                    266:     }
                    267:     
                    268:     def_val = XGetDefault(def_env, "PaneBorderWidth");
                    269:     if (def_val != NULL) p_bdr_width = atoi(def_val);
                    270:     
                    271:     def_val = XGetDefault(def_env, "PaneSpread");
                    272:     if (def_val != NULL) p_spread = atof(def_val);
                    273: 
                    274:     def_val = XGetDefault(def_env, "SelectionStyle");
                    275:     if (def_val != NULL) {
                    276:        if (strcmp(def_val, "flush_left") == 0) s_style = LEFT;
                    277:        else if (strcmp(def_val, "flush_right") == 0) s_style = RIGHT;
                    278:        else if (strcmp(def_val, "center") == 0) s_style = CENTER;
                    279:     }
                    280: 
                    281:     def_val = XGetDefault(def_env, "SelectionFont");
                    282:     if (def_val != NULL) s_fnt_name = def_val;
                    283: 
                    284:     def_val = XGetDefault(def_env, "SelectionForeground");
                    285:     if (def_val != NULL) {
                    286:        if (DisplayCells() > 2) {
                    287:             if (
                    288:                XParseColor(def_val, &color_def) &&
                    289:                XGetHardwareColor(&color_def)
                    290:            ) s_frg_color = color_def.pixel;
                    291:            else s_frg_color = DEF_S_FRG_COLOR;
                    292:         }
                    293:        else if (strcmp(def_val, "black") == 0) s_frg_color = BlackPixel;
                    294:        else if (strcmp(def_val, "white") == 0) s_frg_color = WhitePixel;
                    295:     }
                    296: 
                    297:     def_val = XGetDefault(def_env, "SelectionBorder");
                    298:     if (def_val != NULL) {
                    299:        if (DisplayCells() > 2) {
                    300:             if (
                    301:                XParseColor(def_val, &color_def) &&
                    302:                XGetHardwareColor(&color_def)
                    303:            ) s_bdr_color = color_def.pixel;
                    304:            else s_bdr_color = DEF_S_BDR_COLOR;
                    305:         }
                    306:        else if (strcmp(def_val, "black") == 0) s_bdr_color = BlackPixel;
                    307:        else if (strcmp(def_val, "white") == 0) s_bdr_color = WhitePixel;
                    308:     }
                    309: 
                    310:     def_val = XGetDefault(def_env, "SelectionBorderWidth");
                    311:     if (def_val != NULL) s_bdr_width = atoi(def_val);
                    312:     
                    313:     def_val = XGetDefault(def_env, "SelectionSpread");
                    314:     if (def_val != NULL) s_spread = atof(def_val);
                    315: 
                    316:     /*
                    317:      * Create and store the inactive pattern pixmap.
                    318:      */
                    319:     switch (inact_pnum) {
                    320:        case 0:
                    321:            inact_bitmap = XStoreBitmap(16, 16, dimple1_bits);
                    322:            break;
                    323:        case 1:
                    324:            inact_bitmap = XStoreBitmap(16, 16, dimple3_bits);
                    325:            break;
                    326:        case 2:
                    327:            inact_bitmap = XStoreBitmap(16, 16, gray1_bits);
                    328:            break;
                    329:        case 3:
                    330:            inact_bitmap = XStoreBitmap(16, 16, gray3_bits);
                    331:            break;
                    332:        case 4:
                    333:            inact_bitmap = XStoreBitmap(16, 16, cross_weave_bits);
                    334:            break;
                    335:     }
                    336:     if (inact_bitmap == _X_FAILURE) {
                    337:        _XMErrorCode = XME_STORE_BITMAP;
                    338:        return(NULL);
                    339:     }
                    340: 
                    341:     /*
                    342:      * Generate the pixmaps from the background and forground colors.
                    343:      */
                    344:     tile_buf[0].pixel = p_bdr_color;
                    345:     tile_buf[1].pixel = s_bdr_color;
                    346:     tile_buf[2].pixel = p_frg_color;
                    347:     tile_buf[3].pixel = s_frg_color;
                    348:     tile_buf[4].pixel = bkgnd_color;
                    349: 
                    350:     tile_count = XMakeTiles(tile_buf, TILE_BUF_SIZE);
                    351:     if (tile_count != TILE_BUF_SIZE) {
                    352:        _XMErrorCode = XME_MAKE_TILES;
                    353:        return(NULL);
                    354:     }
                    355: 
                    356:     p_bdr_pixmap = tile_buf[0].pixmap;
                    357:     s_bdr_pixmap = tile_buf[1].pixmap;
                    358:     p_frg_pixmap = tile_buf[2].pixmap;
                    359:     s_frg_pixmap = tile_buf[3].pixmap;
                    360:     bkgnd_pixmap = tile_buf[4].pixmap;
                    361: 
                    362:     /*
                    363:      * Generate the inactive pixmap.
                    364:      */
                    365:     inact_pixmap = XMakePixmap(inact_bitmap, p_frg_color, bkgnd_color);
                    366:     if (inact_pixmap == _X_FAILURE) {
                    367:        _XMErrorCode = XME_MAKE_PIXMAP;
                    368:        return(NULL);
                    369:     }
                    370: 
                    371:     /*
                    372:      * Free the inactive pattern bitmap since we no longer need it.
                    373:      */
                    374:     XFreeBitmap(inact_bitmap);
                    375: 
                    376:     /*
                    377:      * Load the mouse cursor.
                    378:      */
                    379:     switch (menu_style) {
                    380:        case LEFT:
                    381:            mouse_cursor = XCreateCursor(
                    382:                right_ptr_width, right_ptr_height, 
                    383:                right_ptr_bits, right_ptr_mask_bits, 
                    384:                right_ptr_x_hot, right_ptr_y_hot,
                    385:                mouse_color, bkgnd_color,
                    386:                GXcopy
                    387:            );
                    388:            break;
                    389:        case RIGHT:
                    390:            mouse_cursor = XCreateCursor(
                    391:                left_ptr_width, left_ptr_height, 
                    392:                left_ptr_bits, left_ptr_mask_bits, 
                    393:                left_ptr_x_hot, left_ptr_y_hot,
                    394:                mouse_color, bkgnd_color,
                    395:                GXcopy
                    396:            );
                    397:            break;
                    398:        case CENTER:
                    399:            mouse_cursor = XCreateCursor(
                    400:                center_ptr_width, center_ptr_height, 
                    401:                center_ptr_bits, center_ptr_mask_bits, 
                    402:                center_ptr_x_hot, center_ptr_y_hot,
                    403:                mouse_color, bkgnd_color,
                    404:                GXcopy
                    405:            );
                    406:            break;
                    407:        default:
                    408:            /* Error! Invalid style parameter. */
                    409:            _XMErrorCode = XME_STYLE_PARAM;
                    410:            return(NULL);
                    411:     }
                    412:     if (mouse_cursor == _X_FAILURE) {
                    413:        _XMErrorCode = XME_CREATE_CURSOR;
                    414:        return(NULL);
                    415:     }
                    416: 
                    417:     /*
                    418:      * Open the pane and selection fonts.
                    419:      */
                    420:     p_fnt_info = XOpenFont(p_fnt_name);
                    421:     if (p_fnt_info == NULL) {
                    422:        _XMErrorCode = XME_OPEN_FONT;
                    423:        return(NULL);
                    424:     }
                    425:     s_fnt_info = XOpenFont(s_fnt_name);
                    426:     if (s_fnt_info == NULL) {
                    427:        _XMErrorCode = XME_OPEN_FONT;
                    428:        return(NULL);
                    429:     }
                    430:      
                    431:     /*
                    432:      * Calculate the fixed padding value in pixels for each font.
                    433:      */
                    434:     p_fnt_pad = s_spread * p_fnt_info->height;
                    435:     s_fnt_pad = s_spread * s_fnt_info->height;
                    436: 
                    437:     /*
                    438:      * Calculate fixed height and offset requirements.
                    439:      */
                    440:     flag_height = p_fnt_info->height + (p_fnt_pad << 1);
                    441: 
                    442:     p_height = 0;
                    443:     p_y_off = flag_height + p_bdr_width;
                    444:     p_x_off = p_y_off * p_spread;
                    445: 
                    446:     s_height = s_fnt_info->height + (s_fnt_pad << 1) + (s_bdr_width << 1);
                    447:     s_y_off = s_height;
                    448:     s_x_off = p_x_off;
                    449: 
                    450:     /*
                    451:      * Set up the pane list header.
                    452:      */
                    453:     pane->next = pane;
                    454:     pane->prev = pane;
                    455:     pane->type = PL_HEADER;
                    456:     pane->serial = -1;
                    457: 
                    458:     /*
                    459:      * Initialize the internal pane and selection creation queues.
                    460:      */
                    461:     _XMWinQueInit();
                    462: 
                    463:     /*
                    464:      * Construct the XMenu object.
                    465:      */
                    466:     /* -------------------- Menu data -------------------- */
                    467:     menu->menu_style = menu_style;
                    468:     menu->menu_mode = menu_mode;
                    469:     menu->freeze = freeze;
                    470:     menu->recompute = 1;
                    471:     menu->parent = parent;
                    472:     menu->height = 0;
                    473:     menu->width = 0;
                    474:     menu->mouse_cursor = mouse_cursor;
                    475:     menu->assoc_tab = assoc_tab;
                    476:     menu->p_list = pane;
                    477:     /* -------------------- Pane window data -------------------- */
                    478:     menu->p_style = p_style;
                    479:     menu->p_events = DEF_P_EVENTS;
                    480:     menu->p_fnt_info = p_fnt_info;
                    481:     menu->p_fnt_pad = p_fnt_pad;
                    482:     menu->p_spread = p_spread;
                    483:     menu->p_bdr_width = p_bdr_width;
                    484:     menu->flag_height = flag_height;
                    485:     menu->p_width = 0;
                    486:     menu->p_height = p_height;
                    487:     menu->p_x_off = p_x_off;
                    488:     menu->p_y_off = p_y_off;
                    489:     menu->p_count = 0;
                    490:     /* -------------------- Selection window data -------------------- */
                    491:     menu->s_style = s_style;
                    492:     menu->s_events = DEF_S_EVENTS;
                    493:     menu->s_fnt_info = s_fnt_info;
                    494:     menu->s_fnt_pad = s_fnt_pad;
                    495:     menu->s_spread = s_spread;
                    496:     menu->s_bdr_width = s_bdr_width;
                    497:     menu->s_width = 0;
                    498:     menu->s_height = s_height;
                    499:     menu->s_x_off = s_x_off;
                    500:     menu->s_y_off = s_y_off;
                    501:     menu->s_count = 0;
                    502:     /* -------------------- Color data -------------------- */
                    503:     menu->p_bdr_color = p_bdr_color;
                    504:     menu->s_bdr_color = s_bdr_color;
                    505:     menu->p_frg_color = p_frg_color;
                    506:     menu->s_frg_color = s_frg_color;
                    507:     menu->bkgnd_color = bkgnd_color;
                    508:     /* -------------------- Pixmap data -------------------- */
                    509:     menu->p_bdr_pixmap = p_bdr_pixmap;
                    510:     menu->s_bdr_pixmap = s_bdr_pixmap;
                    511:     menu->p_frg_pixmap = p_frg_pixmap;
                    512:     menu->s_frg_pixmap = s_frg_pixmap;
                    513:     menu->bkgnd_pixmap = bkgnd_pixmap;
                    514:     menu->inact_pixmap = inact_pixmap;
                    515: 
                    516:     /*
                    517:      * Return the completed XMenu.
                    518:      */
                    519:     _XMErrorCode = XME_NO_ERROR;
                    520:     return(menu);
                    521: }

unix.superglobalmegacorp.com

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