diff oldXMenu/Destroy.c @ 25858:bbce331da1be

#
author Dave Love <fx@gnu.org>
date Sun, 03 Oct 1999 19:36:13 +0000
parents
children 23a1cea22d13
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/oldXMenu/Destroy.c	Sun Oct 03 19:36:13 1999 +0000
@@ -0,0 +1,116 @@
+#include "copyright.h"
+
+/* $Header: /u/src/emacs/19.0/oldXMenu/RCS/Destroy.c,v 1.1 1992/04/11 22:10:18 jimb Exp $ */
+/* Copyright    Massachusetts Institute of Technology    1985	*/
+
+/*
+ * XMenu:	MIT Project Athena, X Window system menu package
+ *
+ *	XMenuDestroy - Free all resources associated with and XMenu.
+ *
+ *	Author:		Tony Della Fera, DEC
+ *			August, 1985
+ *
+ */
+
+#include "XMenuInt.h"
+
+XMenuDestroy(display, menu)
+    Display *display;
+    register XMenu *menu;	/* Menu object to destroy. */
+{
+    register XMPane *p_ptr;	/* Pointer to the current pane. */
+    register XMPane *p_next;	/* Pointer to the next pane. */
+    register XMSelect *s_ptr;	/* Pointer to the current selection. */
+    register XMSelect *s_next;  /* Pointer to the next selection. */
+
+    /*
+     * Destroy the selection and pane X windows and free
+     * their corresponding XMWindows.
+     */
+    for (
+	p_ptr = menu->p_list->next;
+	p_ptr != menu->p_list;
+	p_ptr = p_next
+    ) {
+	for (
+	    s_ptr = p_ptr->s_list->next;
+	    s_ptr != p_ptr->s_list;
+	    s_ptr = s_next
+	) {
+	    s_next = s_ptr->next;
+	    free(s_ptr);
+	}
+	if (p_ptr->window) {
+	    XDestroySubwindows(display, p_ptr->window);
+	    XDestroyWindow(display, p_ptr->window);
+	}
+	p_next = p_ptr->next;
+	free(p_ptr);
+    }
+
+    /*
+     * Destroy the association table.
+     */
+    XDestroyAssocTable(menu->assoc_tab);
+
+    /*
+     * Free the mouse cursor.
+     */
+    XFreeCursor(display, menu->mouse_cursor);
+
+    /*
+     * Free the fonts.
+     */
+    XFreeFont(display, menu->p_fnt_info);
+    XFreeFont(display, menu->s_fnt_info);
+
+    /*
+     * Free the pixmaps.
+     */
+/*    XFreePixmap(display, menu->p_bdr_pixmap);
+    XFreePixmap(display, menu->s_bdr_pixmap);
+    XFreePixmap(display, menu->p_frg_pixmap);
+    XFreePixmap(display, menu->s_frg_pixmap);
+    XFreePixmap(display, menu->bkgnd_pixmap); */
+    XFreePixmap(display, menu->inact_pixmap);
+
+    /*
+     * Free the color cells.
+     */
+    if ((menu->p_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_bdr_color != WhitePixel(display, DefaultScreen(display))))
+	XFreeColors(
+		    display, 
+		    DefaultColormap(display, DefaultScreen(display)),
+		    &menu->p_bdr_color, 
+		    1, 0);
+    if ((menu->s_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_bdr_color != WhitePixel(display, DefaultScreen(display))))
+	XFreeColors(
+		    display, 
+		    DefaultColormap(display, DefaultScreen(display)), 
+		    &menu->s_bdr_color, 
+		    1, 0);
+    if ((menu->p_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_frg_color != WhitePixel(display, DefaultScreen(display))))
+	XFreeColors(
+		    display, 
+		    DefaultColormap(display, DefaultScreen(display)),
+		    &menu->p_frg_color, 
+		    1, 0);
+    if ((menu->s_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_frg_color != WhitePixel(display, DefaultScreen(display))))
+	XFreeColors(
+		    display, 
+		    DefaultColormap(display, DefaultScreen(display)),
+		    &menu->s_frg_color, 
+		    1, 0);
+    if ((menu->bkgnd_color != BlackPixel(display, DefaultScreen(display))) && (menu->bkgnd_color != WhitePixel(display, DefaultScreen(display))))
+	XFreeColors(
+		    display, 
+		    DefaultColormap(display, DefaultScreen(display)),
+		    &menu->bkgnd_color, 
+		    1, 0);
+
+    /*
+     * Free the XMenu.
+     */
+    free(menu);
+}