annotate oldXMenu/Locate.c @ 72550:666bd542be19

(get_window_cursor_type): Replace BOX cursor on images with a hollow box cursor if image is larger than 32x32 (or the default frame font if that is bigger). Replace any other cursor on images with hollow box cursor, as redisplay doesn't support bar and hbar cursors on images.
author Kim F. Storm <storm@cua.dk>
date Sun, 27 Aug 2006 22:23:07 +0000
parents e8a3fb527b77
children ce127a46b1ca d04d8ccb3c41 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
1 #include "copyright.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
2
Dave Love <fx@gnu.org>
parents:
diff changeset
3 /* Copyright Massachusetts Institute of Technology 1985 */
68640
e8a3fb527b77 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 65000
diff changeset
4 /* Copyright (C) 2002, 2003, 2004, 2005,
e8a3fb527b77 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 65000
diff changeset
5 2006 Free Software Foundation, Inc. */
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
6
Dave Love <fx@gnu.org>
parents:
diff changeset
7 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
8 * XMenu: MIT Project Athena, X Window system menu package
Dave Love <fx@gnu.org>
parents:
diff changeset
9 *
Dave Love <fx@gnu.org>
parents:
diff changeset
10 * XMenuLocate - Return data necessary to position and locate
Dave Love <fx@gnu.org>
parents:
diff changeset
11 * a menu on the screen.
Dave Love <fx@gnu.org>
parents:
diff changeset
12 *
Dave Love <fx@gnu.org>
parents:
diff changeset
13 * Author: Tony Della Fera, DEC
Dave Love <fx@gnu.org>
parents:
diff changeset
14 * January 11, 1985
Dave Love <fx@gnu.org>
parents:
diff changeset
15 *
Dave Love <fx@gnu.org>
parents:
diff changeset
16 */
Dave Love <fx@gnu.org>
parents:
diff changeset
17
Dave Love <fx@gnu.org>
parents:
diff changeset
18 #include "XMenuInt.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
19
Dave Love <fx@gnu.org>
parents:
diff changeset
20 int
Dave Love <fx@gnu.org>
parents:
diff changeset
21 XMenuLocate(display, menu, p_num, s_num, x_pos, y_pos, ul_x, ul_y, width, height)
Dave Love <fx@gnu.org>
parents:
diff changeset
22 register Display *display; /* Previously opened display. */
Dave Love <fx@gnu.org>
parents:
diff changeset
23 register XMenu *menu; /* Menu object being located. */
Dave Love <fx@gnu.org>
parents:
diff changeset
24 int p_num; /* Active pane number. */
Dave Love <fx@gnu.org>
parents:
diff changeset
25 int s_num; /* Active selection number. */
Dave Love <fx@gnu.org>
parents:
diff changeset
26 int x_pos; /* X coordinate of mouse active position. */
Dave Love <fx@gnu.org>
parents:
diff changeset
27 int y_pos; /* Y coordinate of mouse active position. */
Dave Love <fx@gnu.org>
parents:
diff changeset
28 int *ul_x; /* Returned upper left menu X coordinate. */
Dave Love <fx@gnu.org>
parents:
diff changeset
29 int *ul_y; /* Returned upper left menu Y coordinate. */
Dave Love <fx@gnu.org>
parents:
diff changeset
30 int *width; /* Returned menu width. */
Dave Love <fx@gnu.org>
parents:
diff changeset
31 int *height; /* Returned menu height. */
Dave Love <fx@gnu.org>
parents:
diff changeset
32 {
Dave Love <fx@gnu.org>
parents:
diff changeset
33 register XMPane *p_ptr; /* XMPane pointer. */
Dave Love <fx@gnu.org>
parents:
diff changeset
34 register XMSelect *s_ptr; /* XMSelect pointer. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
35
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
36 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
37 * Are the position arguments positive?
Dave Love <fx@gnu.org>
parents:
diff changeset
38 */
Dave Love <fx@gnu.org>
parents:
diff changeset
39 if ((x_pos <= 0) || (y_pos <= 0)) {
Dave Love <fx@gnu.org>
parents:
diff changeset
40 _XMErrorCode = XME_ARG_BOUNDS;
Dave Love <fx@gnu.org>
parents:
diff changeset
41 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
42 }
Dave Love <fx@gnu.org>
parents:
diff changeset
43
Dave Love <fx@gnu.org>
parents:
diff changeset
44 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
45 * Find the right pane.
Dave Love <fx@gnu.org>
parents:
diff changeset
46 */
Dave Love <fx@gnu.org>
parents:
diff changeset
47 p_ptr = _XMGetPanePtr(menu, p_num);
Dave Love <fx@gnu.org>
parents:
diff changeset
48 if (p_ptr == NULL) return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
49
Dave Love <fx@gnu.org>
parents:
diff changeset
50 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
51 * Find the right selection.
Dave Love <fx@gnu.org>
parents:
diff changeset
52 */
Dave Love <fx@gnu.org>
parents:
diff changeset
53 s_ptr = _XMGetSelectionPtr(p_ptr, s_num);
Dave Love <fx@gnu.org>
parents:
diff changeset
54
Dave Love <fx@gnu.org>
parents:
diff changeset
55 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
56 * Check to see that the menu's dependencies have been
Dave Love <fx@gnu.org>
parents:
diff changeset
57 * recomputed and are up to date. If not, do it now.
Dave Love <fx@gnu.org>
parents:
diff changeset
58 */
Dave Love <fx@gnu.org>
parents:
diff changeset
59 if (menu->recompute) XMenuRecompute(display, menu);
Dave Love <fx@gnu.org>
parents:
diff changeset
60
Dave Love <fx@gnu.org>
parents:
diff changeset
61 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
62 * Compute the new menu origin such that the active point lies
Dave Love <fx@gnu.org>
parents:
diff changeset
63 * in the center of the desired active pane and selection.
Dave Love <fx@gnu.org>
parents:
diff changeset
64 * This sets the values of ul_x and ul_y.
Dave Love <fx@gnu.org>
parents:
diff changeset
65 */
Dave Love <fx@gnu.org>
parents:
diff changeset
66 _XMTransToOrigin(display, menu, p_ptr, s_ptr, x_pos, y_pos, ul_x, ul_y);
Dave Love <fx@gnu.org>
parents:
diff changeset
67
Dave Love <fx@gnu.org>
parents:
diff changeset
68 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
69 * Set remaining return argument values.
Dave Love <fx@gnu.org>
parents:
diff changeset
70 */
Dave Love <fx@gnu.org>
parents:
diff changeset
71 *width = menu->width;
Dave Love <fx@gnu.org>
parents:
diff changeset
72 *height = menu->height;
Dave Love <fx@gnu.org>
parents:
diff changeset
73
Dave Love <fx@gnu.org>
parents:
diff changeset
74 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
75 * Return successfully.
Dave Love <fx@gnu.org>
parents:
diff changeset
76 */
Dave Love <fx@gnu.org>
parents:
diff changeset
77 _XMErrorCode = XME_NO_ERROR;
Dave Love <fx@gnu.org>
parents:
diff changeset
78 return(XM_SUCCESS);
Dave Love <fx@gnu.org>
parents:
diff changeset
79 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
80
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
81 /* arch-tag: 1ff94bab-cf67-4c92-bff4-dc0130153173
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
82 (do not change this comment) */