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 * 	XMenuDeletePane - Deletes a pane from an XMenu object.
10 *
11 *	Author:		Tony Della Fera, DEC
12 *			20-Nov-85
13 *
14 */
15
16#include "XMenuInt.h"
17
18int
19XMenuDeletePane(display, menu, p_num)
20    register Display *display;	/* Previously opened display */
21    register XMenu *menu;	/* Menu object to be modified. */
22    register int p_num;		/* Pane number to be deleted. */
23{
24    register XMPane *p_ptr;	/* Pointer to pane being deleted. */
25    register XMSelect *s_ptr;	/* Pointer to selections being deleted. */
26    register XMSelect *s_next;  /* Pointer to next selection to be deleted. */
27
28    /*
29     * Find the right pane.
30     */
31    p_ptr = _XMGetPanePtr(menu, p_num);
32    if (p_ptr == NULL) return(XM_FAILURE);
33
34    /*
35     * Remove the pane from the association table.
36     */
37    XDeleteAssoc(display, menu->assoc_tab, p_ptr->window);
38
39    /*
40     * Remove the pane from the pane list and update
41     * the pane count.
42     */
43    emacs_remque(p_ptr);
44    menu->p_count--;
45
46    /*
47     * Remove all the selections in the pane from the
48     * association table and free their XMSelect structures.
49     */
50    for (
51	s_ptr = p_ptr->s_list->next;
52	s_ptr != p_ptr->s_list;
53	s_ptr = s_next
54    ) {
55	XDeleteAssoc(display, menu->assoc_tab, s_ptr->window);
56	s_next = s_ptr->next;
57	free(s_ptr);
58    }
59    free(p_ptr->s_list);
60
61    if (p_ptr->window) {
62	/*
63	 * Destroy the selection transparencies.
64	 */
65	XDestroySubwindows(display, p_ptr->window);
66
67	/*
68	 * Destroy the pane window.
69	 */
70	XDestroyWindow(display, p_ptr->window);
71    }
72
73    /*
74     * Free the pane's XMPane structure.
75     */
76    free(p_ptr);
77
78    /*
79     * Schedule a recompute.
80     */
81    menu->recompute = 1;
82
83    /*
84     * Return the pane number just deleted.
85     */
86    _XMErrorCode = XME_NO_ERROR;
87    return(p_num);
88}
89
90/* arch-tag: 32a5bfd4-4bac-4090-bb53-844110f4908e
91   (do not change this comment) */
92