|
|
1.1 ! root 1: #include <X11/copyright.h> ! 2: ! 3: /* $Header: DelPane.c,v 1.2 87/12/20 12:04:26 rws Exp $ */ ! 4: /* Copyright Massachusetts Institute of Technology 1985 */ ! 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: ! 18: int ! 19: XMenuDeletePane(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: 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.