remove `declare' macro
[bpt/emacs.git] / oldXMenu / DelSel.c
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 * XMenuDeleteSelection - Deletes a selection 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 XMenuDeleteSelection(register Display *display, register XMenu *menu, register int p_num, register int s_num)
20 /* Previously opened display. */
21 /* Menu object to be modified. */
22 /* Pane number to be deleted. */
23 /* Selection number to be deleted. */
24 {
25 register XMPane *p_ptr; /* Pointer to pane being deleted. */
26 register XMSelect *s_ptr; /* Pointer to selections being 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 * Find the right selection.
36 */
37 s_ptr = _XMGetSelectionPtr(p_ptr, s_num);
38 if (s_ptr == NULL) return(XM_FAILURE);
39
40 /*
41 * Remove the selection from the association table.
42 */
43 XDeleteAssoc(display, menu->assoc_tab, s_ptr->window);
44
45 /*
46 * Remove the selection from the parent pane's selection
47 * list and update the selection count.
48 */
49 emacs_remque(s_ptr);
50 p_ptr->s_count--;
51
52 /*
53 * Destroy the selection transparency.
54 */
55 if (s_ptr->window) XDestroyWindow(display, s_ptr->window);
56
57 /*
58 * Free the selection's XMSelect structure.
59 */
60 free(s_ptr);
61
62 /*
63 * Schedule a recompute.
64 */
65 menu->recompute = 1;
66
67 /*
68 * Return the selection number just deleted.
69 */
70 _XMErrorCode = XME_NO_ERROR;
71 return(s_num);
72 }
73