1/* Copyright    Massachusetts Institute of Technology    1985	*/
2
3#include "copyright.h"
4
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
18XMenuDestroy(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}
117
118/* arch-tag: 44c9589f-5893-46fc-bc23-1b03a7f9c015
119   (do not change this comment) */
120