view oldXMenu/Locate.c @ 58556:8ff63943e93e

(bibtex-sort-entry-class) (bibtex-comment-start): Use defcustom. (bibtex-entry-field-alist): Use nil if initial content of the field is undefined. Fix docstring. (bibtex-parse-keys-timeout, bibtex-autokey-additional-names) (bibtex-generate-autokey, bibtex-parse-buffers-stealthily) (bibtex-mode, bibtex-field-list, bibtex-entry-updat) (bibtex-autofill-entry, bibtex-entry-index, bibtex-next-field): Fix docstring. (bibtex-autokey-title-terminators): Use only one regexp. (bibtex-string-maybe-empty-head): New variable. (bibtex-remove-delimiters-string): New function. (bibtex-text-in-field-bounds, bibtex-text-in-string): Use bibtex-remove-delimiters-string. (bibtex-progress-message, bibtex-field-left-delimiter) (bibtex-field-right-delimiter, bibtex-entry-left-delimiter) (bibtex-entry-right-delimiter, bibtex-search-entry): Use eq. (bibtex-insert-kill): Rename from `bibtex-insert-current-kill'. Simplify. (bibtex-format-entry): Use save-excursion for inherited booktitle. Use eq and bibtex-remove-delimiters-string. For end markers use insertion type so that marker stays after inserted text. (bibtex-autokey-get-names): Return empty string if name is missing. (bibtex-autokey-demangle-name): Call bibtex-autokey-abbrev before calling bibtex-autokey-name-case-convert. (bibtex-autokey-demangle-title): Call bibtex-autokey-titleword-case-convert. Remove call to bibtex-autokey-titleword-case-convert from bibtex-autokey-get-title. (bibtex-global-key-alist, bibtex-read-string-key): New functions. (bibtex-read-key): New optional arg global. (bibtex-files-expand): New optional arg force. (bibtex-complete-string-cleanup): Expansion of abbrev can be absent. (bibtex-complete-crossref-cleanup): Rename from bibtex-complete-key-cleanup. Simplify code. (bibtex-copy-summary-as-kill): Remove arg key. Operate on current entry. Use looking-at. (bibtex-button): Add docstring. (bibtex-entry): Simplify. (bibtex-make-field): Replace optional arg called-by-yank with more specific args move and interactive. (bibtex-end-of-entry): Use forward-sexp. (bibtex-find-entry-globally): Remove. (bibtex-find-crossref): Allow for crossref key located in other buffer. Bound to C-c C-x. (bibtex-find-entry): New optional args global and display. (bibtex-find-text): Fix docstring. Remove arg as-if-interactive. (bibtex-validate): Use arg force of bibtex-files-expand. (bibtex-clean-entry): Bugfix, clean string entries properly. Always keep point at beginning of entry. (bibtex-complete): Bugfix. Handle string entries properly. Call cleanup functions only if needed. (bibtex-String): Use bibtex-read-string-key. (bibtex-url): Use bibtex-remove-delimiters-string. Do not alter case of replacement text.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 26 Nov 2004 23:24:44 +0000
parents e8824c4f5f7e
children 3861ff8f4bf1 8e5779acd195
line wrap: on
line source

#include "copyright.h"

/* Copyright    Massachusetts Institute of Technology    1985	*/

/*
 * XMenu:	MIT Project Athena, X Window system menu package
 *
 *	XMenuLocate - Return data necessary to position and locate
 *		      a menu on the screen.
 *
 *	Author:		Tony Della Fera, DEC
 *			January 11, 1985
 *
 */

#include "XMenuInt.h"

int
XMenuLocate(display, menu, p_num, s_num, x_pos, y_pos, ul_x, ul_y, width, height)
    register Display *display;	/* Previously opened display. */
    register XMenu *menu;	/* Menu object being located. */
    int p_num;			/* Active pane number. */
    int s_num;			/* Active selection number. */
    int x_pos;			/* X coordinate of mouse active position. */
    int y_pos;			/* Y coordinate of mouse active position. */
    int *ul_x;			/* Returned upper left menu X coordinate. */
    int *ul_y;			/* Returned upper left menu Y coordinate. */
    int *width;			/* Returned menu width. */
    int *height;		/* Returned menu height. */
{
    register XMPane *p_ptr;	/* XMPane pointer. */
    register XMSelect *s_ptr;	/* XMSelect pointer. */

    /*
     * Are the position arguments positive?
     */
    if ((x_pos <= 0) || (y_pos <= 0)) {
	_XMErrorCode = XME_ARG_BOUNDS;
	return(XM_FAILURE);
    }

    /*
     * 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);

    /*
     * Check to see that the menu's dependencies have been
     * recomputed and are up to date.  If not, do it now.
     */
    if (menu->recompute) XMenuRecompute(display, menu);

    /*
     * Compute the new menu origin such that the active point lies
     * in the center of the desired active pane and selection.
     * This sets the values of ul_x and ul_y.
     */
    _XMTransToOrigin(display, menu, p_ptr, s_ptr, x_pos, y_pos, ul_x, ul_y);

    /*
     * Set remaining return argument values.
     */
    *width = menu->width;
    *height = menu->height;

    /*
     * Return successfully.
     */
    _XMErrorCode = XME_NO_ERROR;
    return(XM_SUCCESS);
}

/* arch-tag: 1ff94bab-cf67-4c92-bff4-dc0130153173
   (do not change this comment) */