merge master
[emacs.git] / oldXMenu / DelSel.c
blobca2ea28c4bd98ed0848e5a3fb45afd047eb0ebc6
1 /* Copyright Massachusetts Institute of Technology 1985 */
3 #include "copyright.h"
6 /*
7 * XMenu: MIT Project Athena, X Window system menu package
9 * XMenuDeleteSelection - Deletes a selection from an XMenu object.
11 * Author: Tony Della Fera, DEC
12 * 20-Nov-85
16 #include "XMenuInt.h"
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. */
25 register XMPane *p_ptr; /* Pointer to pane being deleted. */
26 register XMSelect *s_ptr; /* Pointer to selections being deleted. */
29 * Find the right pane.
31 p_ptr = _XMGetPanePtr(menu, p_num);
32 if (p_ptr == NULL) return(XM_FAILURE);
35 * Find the right selection.
37 s_ptr = _XMGetSelectionPtr(p_ptr, s_num);
38 if (s_ptr == NULL) return(XM_FAILURE);
41 * Remove the selection from the association table.
43 XDeleteAssoc(display, menu->assoc_tab, s_ptr->window);
46 * Remove the selection from the parent pane's selection
47 * list and update the selection count.
49 emacs_remque(s_ptr);
50 p_ptr->s_count--;
53 * Destroy the selection transparency.
55 if (s_ptr->window) XDestroyWindow(display, s_ptr->window);
58 * Free the selection's XMSelect structure.
60 free(s_ptr);
63 * Schedule a recompute.
65 menu->recompute = 1;
68 * Return the selection number just deleted.
70 _XMErrorCode = XME_NO_ERROR;
71 return(s_num);