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 18int 19XMenuDeletePane(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) */ 92