view oldXMenu/AddPane.c @ 65980:4520ae2624f2

* mh-init.el (mh-image-load-path): New function that adds the path to the MH-E images to the image-load-path or load-path depending on the version of Emacs. * mh-customize.el: Call mh-image-load-path just before mh-tool-bar-define so that the toolbar images can be found. * mh-customize.el (mh-invisible-header-fields-internal) (mh-invisible-header-fields-internal): Add Received-SPF header and X-Gmail- prefixes seen from Gmail. Jeffrey C Honig <jch@honig.net> * mh-customize.el (mh-customize): Use customization group mh-e. * mh-e.el (desktop-buffer-mode-handlers): Only add to this list if the variable exists. Not present pre-version 22. (Version, mh-version): Added +cvs to version. * mh-unit.el (mh-unit): Changed lm-verify test to Emacs 22. * Makefile: Incorporated ideas from Clemens Fruhwirth to generalize mh-loaddefs.el to make it work for both GNU Emacs and XEmacs. (EMACS_OPTIONS, XEMACS_OPTIONS): Use double-dash for all long options. (EMACS_LOADDEFS_COOKIE): New variable for generate-autoload-cookie setting. Obsoletes XEMACS_LOADDEFS_COOKIE. (EMACS_EXPORT_MH_LOADDEFS): New variable for GNU Emacs commands to rebuild mh-loaddefs.el. (XEMACS_EXPORT_MH_LOADDEFS): New variable for XEmacs commands to rebuild mh-loaddefs.el. Obsoletes XEMACS_LOADDEFS_FILE and XEMACS_LOADDEFS_PKG_NAME. (MH-E-LOADDEFS-SRC): New variable which is set to $(MH-E-SRC) on GNU Emacs, and adds $(MH-E-XEMACS-SRC) on XEmacs. (all): Modify EMACS_EXPORT_MH_LOADDEFS and MH-E-LOADDEFS-SRC on XEMacs. (mh-loaddefs.el): Now depends on $(MH-E-LOADDEFS-SRC) and has generic compile command that works on both GNU Emacs XEmacs. (xemacs): Depend on autoloads instead of deleted loaddefs-xemacs. (loaddefs-xemacs): Deleted. * mh-comp.el (mh-font-lock-field-data): Fix a bug where the function would return t but match-data was being set to nil (closes SF #1241017). Satyaki Das <satyaki@theforce.stanford.edu>. * mh-comp.el (mh-insert-auto-fields): Inset identity regardless of whether one was already set, since if one used a default identity it would never be overridden. Peter S Galbraith <psg@debian.org> * mh-init.el (mh-path): Use customization group mh-e. Thanks to Peter Whaite for these patches (closes SF #1213716). * mh-mime.el (mh-compose-forward): Only use mh-sent-from-msg as a default message if it's a number (as is done elsewhere). Otherwise, an error is thrown if this function is called from a draft created by mh-forward since this variable is a list. Also added a space after the "Messages [%s]:" prompt. * mh-mime.el (mh-compose-forward): Allow insertion of multiple forwarded messages by range (including sequences). For the sent folder the default message presented is the sent message. For other folders, the default message is "cur", if it exists. Jeffrey C Honig <jch@honig.net>
author Bill Wohler <wohler@newt.com>
date Mon, 10 Oct 2005 16:37:54 +0000
parents 3861ff8f4bf1
children e8a3fb527b77 532e0a9335a9 2d92f5c9d6ae
line wrap: on
line source

#include "copyright.h"

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

/*
 * XMenu:	MIT Project Athena, X Window system menu package
 *
 * 	XMenuAddPane - Adds a pane to an XMenu object.
 *
 *	Author:		Tony Della Fera, DEC
 *			August, 1985
 *
 */

#include <config.h>
#include "XMenuInt.h"

int
XMenuAddPane(display, menu, label, active)
    Display *display;
    register XMenu *menu;	/* Menu object to be modified. */
    register char *label;	/* Selection label. */
    int active;			/* Make selection active? */
{
    register XMPane *pane;	/* Newly created pane. */
    register XMSelect *select;	/* Initial selection for the new pane. */

    int label_length;		/* Label length in characters. */
    int label_width;		/* Label width in pixels. */

    /*
     * Check for NULL pointers!
     */
    if (label == NULL) {
	_XMErrorCode = XME_ARG_BOUNDS;
	return(XM_FAILURE);
    }

    /*
     * Calloc the XMPane structure and the initial XMSelect.
     */
    pane = (XMPane *)calloc(1, sizeof(XMPane));
    if (pane == NULL) {
	_XMErrorCode = XME_CALLOC;
	return(XM_FAILURE);
    }
    select = (XMSelect *)calloc(1, sizeof(XMSelect));
    if (select == NULL) {
	_XMErrorCode = XME_CALLOC;
	return(XM_FAILURE);
    }

    /*
     * Determine label size.
     */
    label_length = strlen(label);
    label_width = XTextWidth(menu->p_fnt_info,
			     label,
			     label_length);

    /*
     * Set up the initial selection.
     * Values not explicitly set are zeroed by calloc.
     */
    select->next = select;
    select->prev = select;
    select->type = SL_HEADER;
    select->serial = -1;
    select->parent_p = pane;

    /*
     * Fill the XMPane structure.
     * X and Y position are set to 0 since a recompute will follow.
     */
    pane->type = PANE;
    pane->active = active;
    pane->serial = -1;
    pane->label = label;
    pane->label_width = label_width;
    pane->label_length = label_length;
    pane->s_list = select;

    /*
     * Insert the pane at the end of the pane list.
     */
    emacs_insque(pane, menu->p_list->prev);

    /*
     * Update the pane count.
     */
    menu->p_count++;

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

    /*
     * Return the pane number just added.
     */
    _XMErrorCode = XME_NO_ERROR;
    return((menu->p_count - 1));
}

/* arch-tag: 62a26021-f29d-48ba-96ef-3b6c4ebd6547
   (do not change this comment) */