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