root/trunk/oldXMenu/DelPane.c

Revision 4196, 2.0 kB (checked in by miyoshi, 2 years ago)

Sync up with Emacs CVS HEAD.

  • Property svn:eol-style set to native
Line 
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
18 int
19 XMenuDeletePane(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) */
Note: See TracBrowser for help on using the browser.