25858
|
1 #include "copyright.h"
|
|
2
|
|
3 /* $Header: /u/src/emacs/19.0/oldXMenu/RCS/Destroy.c,v 1.1 1992/04/11 22:10:18 jimb 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 }
|