Commit | Line | Data |
---|---|---|
e745ede7 DL |
1 | #include "copyright.h" |
2 | ||
e745ede7 DL |
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( | |
177c0ea7 | 82 | display, |
e745ede7 | 83 | DefaultColormap(display, DefaultScreen(display)), |
177c0ea7 | 84 | &menu->p_bdr_color, |
e745ede7 DL |
85 | 1, 0); |
86 | if ((menu->s_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_bdr_color != WhitePixel(display, DefaultScreen(display)))) | |
87 | XFreeColors( | |
177c0ea7 JB |
88 | display, |
89 | DefaultColormap(display, DefaultScreen(display)), | |
90 | &menu->s_bdr_color, | |
e745ede7 DL |
91 | 1, 0); |
92 | if ((menu->p_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_frg_color != WhitePixel(display, DefaultScreen(display)))) | |
93 | XFreeColors( | |
177c0ea7 | 94 | display, |
e745ede7 | 95 | DefaultColormap(display, DefaultScreen(display)), |
177c0ea7 | 96 | &menu->p_frg_color, |
e745ede7 DL |
97 | 1, 0); |
98 | if ((menu->s_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_frg_color != WhitePixel(display, DefaultScreen(display)))) | |
99 | XFreeColors( | |
177c0ea7 | 100 | display, |
e745ede7 | 101 | DefaultColormap(display, DefaultScreen(display)), |
177c0ea7 | 102 | &menu->s_frg_color, |
e745ede7 DL |
103 | 1, 0); |
104 | if ((menu->bkgnd_color != BlackPixel(display, DefaultScreen(display))) && (menu->bkgnd_color != WhitePixel(display, DefaultScreen(display)))) | |
105 | XFreeColors( | |
177c0ea7 | 106 | display, |
e745ede7 | 107 | DefaultColormap(display, DefaultScreen(display)), |
177c0ea7 | 108 | &menu->bkgnd_color, |
e745ede7 DL |
109 | 1, 0); |
110 | ||
111 | /* | |
112 | * Free the XMenu. | |
113 | */ | |
114 | free(menu); | |
115 | } | |
6b61353c KH |
116 | |
117 | /* arch-tag: 44c9589f-5893-46fc-bc23-1b03a7f9c015 | |
118 | (do not change this comment) */ |