DelSel.c 1.85 KB
Newer Older
Dave Love's avatar
#  
Dave Love committed
1 2 3
#include "copyright.h"

/* Copyright    Massachusetts Institute of Technology    1985	*/
Glenn Morris's avatar
Glenn Morris committed
4
/* Copyright (C) 2001, 2002, 2003, 2004, 2005,
Glenn Morris's avatar
Glenn Morris committed
5
                 2006, 2007 Free Software Foundation, Inc.  */
Dave Love's avatar
#  
Dave Love committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

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

#include "XMenuInt.h"

int
XMenuDeleteSelection(display, menu, p_num, s_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 int s_num;		/* Selection number to be deleted. */
{
    register XMPane *p_ptr;	/* Pointer to pane being deleted. */
    register XMSelect *s_ptr;	/* Pointer to selections being deleted. */
28

Dave Love's avatar
#  
Dave Love committed
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
    /*
     * Find the right pane.
     */
    p_ptr = _XMGetPanePtr(menu, p_num);
    if (p_ptr == NULL) return(XM_FAILURE);

    /*
     * Find the right selection.
     */
    s_ptr = _XMGetSelectionPtr(p_ptr, s_num);
    if (s_ptr == NULL) return(XM_FAILURE);

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

    /*
     * Remove the selection from the parent pane's selection
     * list and update the selection count.
     */
    emacs_remque(s_ptr);
    p_ptr->s_count--;

    /*
     * Destroy the selection transparency.
     */
    if (s_ptr->window) XDestroyWindow(display, s_ptr->window);
57

Dave Love's avatar
#  
Dave Love committed
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
    /*
     * Free the selection's XMSelect structure.
     */
    free(s_ptr);

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

    /*
     * Return the selection number just deleted.
     */
    _XMErrorCode = XME_NO_ERROR;
    return(s_num);
}
Miles Bader's avatar
Miles Bader committed
74 75 76

/* arch-tag: 24ca2bc7-8a37-471a-8095-e6363fc1ed10
   (do not change this comment) */