home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / emacs-18.59-src.tgz / emacs-18.59-src.tar / fsf / emacs18 / oldXMenu / Destroy.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  3KB  |  117 lines

  1. #include "copyright.h"
  2.  
  3. /* $Header: Destroy.c,v 1.2 87/12/20 12:04:48 rws Exp $ */
  4. /* Copyright    Massachusetts Institute of Technology    1985    */
  5.  
  6. /*
  7.  * XMenu:    MIT Project Athena, X Window system menu package
  8.  *
  9.  *    XMenuDestroy - Free all resources associated with and XMenu.
  10.  *
  11.  *    Author:        Tony Della Fera, DEC
  12.  *            August, 1985
  13.  *
  14.  */
  15.  
  16. #include "XMenuInt.h"
  17.  
  18. XMenuDestroy(display, menu)
  19.     Display *display;
  20.     register XMenu *menu;    /* Menu object to destroy. */
  21. {
  22.     register XMPane *p_ptr;    /* Pointer to the current pane. */
  23.     register XMPane *p_next;    /* Pointer to the next pane. */
  24.     register XMSelect *s_ptr;    /* Pointer to the current selection. */
  25.     register XMSelect *s_next;  /* Pointer to the next selection. */
  26.  
  27.     /*
  28.      * Destroy the selection and pane X windows and free
  29.      * their corresponding XMWindows.
  30.      */
  31.     for (
  32.     p_ptr = menu->p_list->next;
  33.     p_ptr != menu->p_list;
  34.     p_ptr = p_next
  35.     ) {
  36.     for (
  37.         s_ptr = p_ptr->s_list->next;
  38.         s_ptr != p_ptr->s_list;
  39.         s_ptr = s_next
  40.     ) {
  41.         s_next = s_ptr->next;
  42.         free(s_ptr);
  43.     }
  44.     if (p_ptr->window) {
  45.         XDestroySubwindows(display, p_ptr->window);
  46.         XDestroyWindow(display, p_ptr->window);
  47.     }
  48.     p_next = p_ptr->next;
  49.     free(p_ptr);
  50.     }
  51.  
  52.     /*
  53.      * Destroy the association table.
  54.      */
  55.     XDestroyAssocTable(menu->assoc_tab);
  56.  
  57.     /*
  58.      * Free the mouse cursor.
  59.      */
  60.     XFreeCursor(display, menu->mouse_cursor);
  61.  
  62.     /*
  63.      * Free the fonts.
  64.      */
  65.     XFreeFont(display, menu->p_fnt_info);
  66.     XFreeFont(display, menu->s_fnt_info);
  67.  
  68.     /*
  69.      * Free the pixmaps.
  70.      */
  71. /*    XFreePixmap(display, menu->p_bdr_pixmap);
  72.     XFreePixmap(display, menu->s_bdr_pixmap);
  73.     XFreePixmap(display, menu->p_frg_pixmap);
  74.     XFreePixmap(display, menu->s_frg_pixmap);
  75.     XFreePixmap(display, menu->bkgnd_pixmap); */
  76.     XFreePixmap(display, menu->inact_pixmap);
  77.  
  78.     /*
  79.      * Free the color cells.
  80.      */
  81.     if ((menu->p_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_bdr_color != WhitePixel(display, DefaultScreen(display))))
  82.     XFreeColors(
  83.             display, 
  84.             DefaultColormap(display, DefaultScreen(display)),
  85.             &menu->p_bdr_color, 
  86.             1, 0);
  87.     if ((menu->s_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_bdr_color != WhitePixel(display, DefaultScreen(display))))
  88.     XFreeColors(
  89.             display, 
  90.             DefaultColormap(display, DefaultScreen(display)), 
  91.             &menu->s_bdr_color, 
  92.             1, 0);
  93.     if ((menu->p_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_frg_color != WhitePixel(display, DefaultScreen(display))))
  94.     XFreeColors(
  95.             display, 
  96.             DefaultColormap(display, DefaultScreen(display)),
  97.             &menu->p_frg_color, 
  98.             1, 0);
  99.     if ((menu->s_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_frg_color != WhitePixel(display, DefaultScreen(display))))
  100.     XFreeColors(
  101.             display, 
  102.             DefaultColormap(display, DefaultScreen(display)),
  103.             &menu->s_frg_color, 
  104.             1, 0);
  105.     if ((menu->bkgnd_color != BlackPixel(display, DefaultScreen(display))) && (menu->bkgnd_color != WhitePixel(display, DefaultScreen(display))))
  106.     XFreeColors(
  107.             display, 
  108.             DefaultColormap(display, DefaultScreen(display)),
  109.             &menu->bkgnd_color, 
  110.             1, 0);
  111.  
  112.     /*
  113.      * Free the XMenu.
  114.      */
  115.     free(menu);
  116. }
  117.