Merge from emacs-24; up to 2012-05-02T07:12:52Z!rgm@gnu.org.
[bpt/emacs.git] / oldXMenu / DelSel.c
CommitLineData
2cd3138f
GM
1/* Copyright Massachusetts Institute of Technology 1985 */
2
e745ede7
DL
3#include "copyright.h"
4
e745ede7
DL
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
18int
b782e2d7
DN
19XMenuDeleteSelection(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. */
e745ede7
DL
24{
25 register XMPane *p_ptr; /* Pointer to pane being deleted. */
26 register XMSelect *s_ptr; /* Pointer to selections being deleted. */
177c0ea7 27
e745ede7
DL
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);
177c0ea7 56
e745ede7
DL
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}
ab5796a9 73