view oldXMenu/DelPane.c @ 68980:c6a57d4e7a09

(Info-find-file): Check for symbols `apropos', `history', `toc' in the input filename, and return these symbols as is. (Info-find-node-2): Set Info-current-file to symbols `apropos', `history', `toc' instead of strings. (Info-set-mode-line): For non-string Info-current-file use the symbol's name inside **. (Info-isearch-push-state): Add quote before Info-current-file and Info-current-node. (Info-isearch-pop-state): Use `equal' instead of `string='. (Info-extract-pointer, Info-following-node-name): Use `match-string-no-properties' instead of `match-string'. (Info-up): Check `old-file' for `stringp'. (Info-history): Use `equal' instead of `string-equal'. Check `file' for `stringp'. (Info-history): Use symbol `history' instead of string as first arg of `Info-find-node'. (Info-toc): Check `Info-current-file' for `stringp'. Use symbol `toc' instead of string. (Info-extract-menu-node-name): Use `buffer-substring-no-properties' instead of `buffer-substring', and `match-string-no-properties' instead of `match-string'. (Info-index-nodes): Check for symbols `apropos', `history', `toc' instead of strings. (info-apropos): Use `Info-find-node' instead of `Info-goto-node'. Use symbol `apropos' instead of string. (Info-copy-current-node-name): Check `Info-current-file' for `stringp' and construct a command with `Info-find-node' from it. (Info-fontify-node): Use `match-string-no-properties' instead of `match-string' and check file names for `stringp'. (Info-desktop-buffer-misc-data): Check for symbols `apropos', `history', `toc' instead of strings.
author Juri Linkov <juri@jurta.org>
date Fri, 17 Feb 2006 21:28:07 +0000
parents e8a3fb527b77
children ce127a46b1ca d04d8ccb3c41 c5406394f567
line wrap: on
line source

#include "copyright.h"

/* Copyright    Massachusetts Institute of Technology    1985	*/
/* Copyright (C) 2002, 2003, 2004, 2005,
                 2006 Free Software Foundation, Inc.  */

/*
 * XMenu:	MIT Project Athena, X Window system menu package
 *
 * 	XMenuDeletePane - Deletes a pane from an XMenu object.
 *
 *	Author:		Tony Della Fera, DEC
 *			20-Nov-85
 *
 */

#include "XMenuInt.h"

int
XMenuDeletePane(display, menu, p_num)
    register Display *display;	/* Previously opened display */
    register XMenu *menu;	/* Menu object to be modified. */
    register int p_num;		/* Pane number to be deleted. */
{
    register XMPane *p_ptr;	/* Pointer to pane being deleted. */
    register XMSelect *s_ptr;	/* Pointer to selections being deleted. */
    register XMSelect *s_next;  /* Pointer to next selection to be deleted. */

    /*
     * Find the right pane.
     */
    p_ptr = _XMGetPanePtr(menu, p_num);
    if (p_ptr == NULL) return(XM_FAILURE);

    /*
     * Remove the pane from the association table.
     */
    XDeleteAssoc(display, menu->assoc_tab, p_ptr->window);

    /*
     * Remove the pane from the pane list and update
     * the pane count.
     */
    emacs_remque(p_ptr);
    menu->p_count--;

    /*
     * Remove all the selections in the pane from the
     * association table and free their XMSelect structures.
     */
    for (
	s_ptr = p_ptr->s_list->next;
	s_ptr != p_ptr->s_list;
	s_ptr = s_next
    ) {
	XDeleteAssoc(display, menu->assoc_tab, s_ptr->window);
	s_next = s_ptr->next;
	free(s_ptr);
    }
    free(p_ptr->s_list);

    if (p_ptr->window) {
	/*
	 * Destroy the selection transparencies.
	 */
	XDestroySubwindows(display, p_ptr->window);

	/*
	 * Destroy the pane window.
	 */
	XDestroyWindow(display, p_ptr->window);
    }

    /*
     * Free the pane's XMPane structure.
     */
    free(p_ptr);

    /*
     * Schedule a recompute.
     */
    menu->recompute = 1;

    /*
     * Return the pane number just deleted.
     */
    _XMErrorCode = XME_NO_ERROR;
    return(p_num);
}

/* arch-tag: 32a5bfd4-4bac-4090-bb53-844110f4908e
   (do not change this comment) */