|
|
1.1 ! root 1: #include <X11/copyright.h> ! 2: ! 3: /* $Header: Destroy.c,v 1.2 87/12/20 12:04:48 rws Exp $ */ ! 4: /* Copyright Massachusetts Institute of Technology 1985 */ ! 5: ! 6: /* ! 7: * XMenu: MIT Project Athena, X Window system menu package ! 8: * ! 9: * XMenuDestroy - Free all resources associated with and XMenu. ! 10: * ! 11: * Author: Tony Della Fera, DEC ! 12: * August, 1985 ! 13: * ! 14: */ ! 15: ! 16: #include "XMenuInt.h" ! 17: ! 18: XMenuDestroy(display, menu) ! 19: Display *display; ! 20: register XMenu *menu; /* Menu object to destroy. */ ! 21: { ! 22: register XMPane *p_ptr; /* Pointer to the current pane. */ ! 23: register XMPane *p_next; /* Pointer to the next pane. */ ! 24: register XMSelect *s_ptr; /* Pointer to the current selection. */ ! 25: register XMSelect *s_next; /* Pointer to the next selection. */ ! 26: ! 27: /* ! 28: * Destroy the selection and pane X windows and free ! 29: * their corresponding XMWindows. ! 30: */ ! 31: for ( ! 32: p_ptr = menu->p_list->next; ! 33: p_ptr != menu->p_list; ! 34: p_ptr = p_next ! 35: ) { ! 36: for ( ! 37: s_ptr = p_ptr->s_list->next; ! 38: s_ptr != p_ptr->s_list; ! 39: s_ptr = s_next ! 40: ) { ! 41: s_next = s_ptr->next; ! 42: free(s_ptr); ! 43: } ! 44: if (p_ptr->window) { ! 45: XDestroySubwindows(display, p_ptr->window); ! 46: XDestroyWindow(display, p_ptr->window); ! 47: } ! 48: p_next = p_ptr->next; ! 49: free(p_ptr); ! 50: } ! 51: ! 52: /* ! 53: * Destroy the association table. ! 54: */ ! 55: XDestroyAssocTable(menu->assoc_tab); ! 56: ! 57: /* ! 58: * Free the mouse cursor. ! 59: */ ! 60: XFreeCursor(display, menu->mouse_cursor); ! 61: ! 62: /* ! 63: * Free the fonts. ! 64: */ ! 65: XFreeFont(display, menu->p_fnt_info); ! 66: XFreeFont(display, menu->s_fnt_info); ! 67: ! 68: /* ! 69: * Free the pixmaps. ! 70: */ ! 71: /* XFreePixmap(display, menu->p_bdr_pixmap); ! 72: XFreePixmap(display, menu->s_bdr_pixmap); ! 73: XFreePixmap(display, menu->p_frg_pixmap); ! 74: XFreePixmap(display, menu->s_frg_pixmap); ! 75: XFreePixmap(display, menu->bkgnd_pixmap); */ ! 76: XFreePixmap(display, menu->inact_pixmap); ! 77: ! 78: /* ! 79: * Free the color cells. ! 80: */ ! 81: if ((menu->p_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_bdr_color != WhitePixel(display, DefaultScreen(display)))) ! 82: XFreeColors( ! 83: display, ! 84: DefaultColormap(display, DefaultScreen(display)), ! 85: &menu->p_bdr_color, ! 86: 1, 0); ! 87: if ((menu->s_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_bdr_color != WhitePixel(display, DefaultScreen(display)))) ! 88: XFreeColors( ! 89: display, ! 90: DefaultColormap(display, DefaultScreen(display)), ! 91: &menu->s_bdr_color, ! 92: 1, 0); ! 93: if ((menu->p_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_frg_color != WhitePixel(display, DefaultScreen(display)))) ! 94: XFreeColors( ! 95: display, ! 96: DefaultColormap(display, DefaultScreen(display)), ! 97: &menu->p_frg_color, ! 98: 1, 0); ! 99: if ((menu->s_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_frg_color != WhitePixel(display, DefaultScreen(display)))) ! 100: XFreeColors( ! 101: display, ! 102: DefaultColormap(display, DefaultScreen(display)), ! 103: &menu->s_frg_color, ! 104: 1, 0); ! 105: if ((menu->bkgnd_color != BlackPixel(display, DefaultScreen(display))) && (menu->bkgnd_color != WhitePixel(display, DefaultScreen(display)))) ! 106: XFreeColors( ! 107: display, ! 108: DefaultColormap(display, DefaultScreen(display)), ! 109: &menu->bkgnd_color, ! 110: 1, 0); ! 111: ! 112: /* ! 113: * Free the XMenu. ! 114: */ ! 115: free(menu); ! 116: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.