1 /* Copyright Massachusetts Institute of Technology 1985 */
7 * XMenu: MIT Project Athena, X Window system menu package
9 * XMenuDeletePane - Deletes a pane from an XMenu object.
11 * Author: Tony Della Fera, DEC
19 XMenuDeletePane(register Display
*display
, register XMenu
*menu
, register int p_num
)
20 /* Previously opened display */
21 /* Menu object to be modified. */
22 /* Pane number to be deleted. */
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. */
29 * Find the right pane.
31 p_ptr
= _XMGetPanePtr(menu
, p_num
);
32 if (p_ptr
== NULL
) return(XM_FAILURE
);
35 * Remove the pane from the association table.
37 XDeleteAssoc(display
, menu
->assoc_tab
, p_ptr
->window
);
40 * Remove the pane from the pane list and update
47 * Remove all the selections in the pane from the
48 * association table and free their XMSelect structures.
51 s_ptr
= p_ptr
->s_list
->next
;
52 s_ptr
!= p_ptr
->s_list
;
55 XDeleteAssoc(display
, menu
->assoc_tab
, s_ptr
->window
);
63 * Destroy the selection transparencies.
65 XDestroySubwindows(display
, p_ptr
->window
);
68 * Destroy the pane window.
70 XDestroyWindow(display
, p_ptr
->window
);
74 * Free the pane's XMPane structure.
79 * Schedule a recompute.
84 * Return the pane number just deleted.
86 _XMErrorCode
= XME_NO_ERROR
;