annotate oldXMenu/InsSel.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 * XMenuInsertSelection - Inserts a selection into an XMenu object
Dave Love <fx@gnu.org>
parents:
diff changeset
11 *
Dave Love <fx@gnu.org>
parents:
diff changeset
12 * Author: Tony Della Fera, DEC
Dave Love <fx@gnu.org>
parents:
diff changeset
13 * 20-Nov-85
Dave Love <fx@gnu.org>
parents:
diff changeset
14 *
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 #include <config.h>
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 XMenuInsertSelection(menu, p_num, s_num, data, label, active)
Dave Love <fx@gnu.org>
parents:
diff changeset
22 register XMenu *menu; /* Menu object to be modified. */
Dave Love <fx@gnu.org>
parents:
diff changeset
23 register int p_num; /* Pane number to be modified. */
Dave Love <fx@gnu.org>
parents:
diff changeset
24 register int s_num; /* Selection number of new selection. */
Dave Love <fx@gnu.org>
parents:
diff changeset
25 char *data; /* Data value. */
Dave Love <fx@gnu.org>
parents:
diff changeset
26 char *label; /* Selection label. */
Dave Love <fx@gnu.org>
parents:
diff changeset
27 int active; /* Make selection active? */
Dave Love <fx@gnu.org>
parents:
diff changeset
28 {
Dave Love <fx@gnu.org>
parents:
diff changeset
29 register XMPane *p_ptr; /* XMPane pointer. */
Dave Love <fx@gnu.org>
parents:
diff changeset
30 register XMSelect *s_ptr; /* XMSelect pointer. */
Dave Love <fx@gnu.org>
parents:
diff changeset
31
Dave Love <fx@gnu.org>
parents:
diff changeset
32 XMSelect *select; /* Newly created selection. */
Dave Love <fx@gnu.org>
parents:
diff changeset
33
Dave Love <fx@gnu.org>
parents:
diff changeset
34 int label_length; /* Label length in characters. */
Dave Love <fx@gnu.org>
parents:
diff changeset
35 int label_width; /* Label width in pixels. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
36
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
37 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
38 * Check for NULL pointers!
Dave Love <fx@gnu.org>
parents:
diff changeset
39 */
Dave Love <fx@gnu.org>
parents:
diff changeset
40 if (label == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
41 _XMErrorCode = XME_ARG_BOUNDS;
Dave Love <fx@gnu.org>
parents:
diff changeset
42 return(XM_FAILURE);
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 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
46 * Find the right pane.
Dave Love <fx@gnu.org>
parents:
diff changeset
47 */
Dave Love <fx@gnu.org>
parents:
diff changeset
48 p_ptr = _XMGetPanePtr(menu, p_num);
Dave Love <fx@gnu.org>
parents:
diff changeset
49 if (p_ptr == NULL) return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
50
Dave Love <fx@gnu.org>
parents:
diff changeset
51 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
52 * Find the selection number one less than the one specified since that
Dave Love <fx@gnu.org>
parents:
diff changeset
53 * is the selection after which the insertion will occur.
Dave Love <fx@gnu.org>
parents:
diff changeset
54 */
Dave Love <fx@gnu.org>
parents:
diff changeset
55 s_ptr = _XMGetSelectionPtr(p_ptr, (s_num - 1));
Dave Love <fx@gnu.org>
parents:
diff changeset
56 if (s_ptr == NULL) return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
57
Dave Love <fx@gnu.org>
parents:
diff changeset
58 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
59 * Calloc the XMSelect structure.
Dave Love <fx@gnu.org>
parents:
diff changeset
60 */
Dave Love <fx@gnu.org>
parents:
diff changeset
61 select = (XMSelect *)calloc(1, sizeof(XMSelect));
Dave Love <fx@gnu.org>
parents:
diff changeset
62 if (select == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
63 _XMErrorCode = XME_CALLOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
64 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
65 }
Dave Love <fx@gnu.org>
parents:
diff changeset
66
Dave Love <fx@gnu.org>
parents:
diff changeset
67 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
68 * Determine label size.
Dave Love <fx@gnu.org>
parents:
diff changeset
69 */
Dave Love <fx@gnu.org>
parents:
diff changeset
70 label_length = strlen(label);
Dave Love <fx@gnu.org>
parents:
diff changeset
71 label_width = XTextWidth(menu->s_fnt_info, label, label_length);
Dave Love <fx@gnu.org>
parents:
diff changeset
72
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 * Fill the XMSelect structure.
Dave Love <fx@gnu.org>
parents:
diff changeset
76 */
Dave Love <fx@gnu.org>
parents:
diff changeset
77 if (!strcmp (label, "--") || !strcmp (label, "---"))
Dave Love <fx@gnu.org>
parents:
diff changeset
78 {
Dave Love <fx@gnu.org>
parents:
diff changeset
79 select->type = SEPARATOR;
Dave Love <fx@gnu.org>
parents:
diff changeset
80 select->active = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
81 }
Dave Love <fx@gnu.org>
parents:
diff changeset
82 else
Dave Love <fx@gnu.org>
parents:
diff changeset
83 {
Dave Love <fx@gnu.org>
parents:
diff changeset
84 select->type = SELECTION;
Dave Love <fx@gnu.org>
parents:
diff changeset
85 select->active = active;
Dave Love <fx@gnu.org>
parents:
diff changeset
86 }
Dave Love <fx@gnu.org>
parents:
diff changeset
87
Dave Love <fx@gnu.org>
parents:
diff changeset
88 select->active = active;
Dave Love <fx@gnu.org>
parents:
diff changeset
89 select->serial = -1;
Dave Love <fx@gnu.org>
parents:
diff changeset
90 select->label = label;
Dave Love <fx@gnu.org>
parents:
diff changeset
91 select->label_width = label_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
92 select->label_length = label_length;
Dave Love <fx@gnu.org>
parents:
diff changeset
93 select->data = data;
Dave Love <fx@gnu.org>
parents:
diff changeset
94 select->parent_p = p_ptr;
Dave Love <fx@gnu.org>
parents:
diff changeset
95
Dave Love <fx@gnu.org>
parents:
diff changeset
96 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
97 * Insert the selection after the selection with the selection
Dave Love <fx@gnu.org>
parents:
diff changeset
98 * number one less than the desired number for the new selection.
Dave Love <fx@gnu.org>
parents:
diff changeset
99 */
Dave Love <fx@gnu.org>
parents:
diff changeset
100 emacs_insque(select, s_ptr);
Dave Love <fx@gnu.org>
parents:
diff changeset
101
Dave Love <fx@gnu.org>
parents:
diff changeset
102 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
103 * Update the selection count.
Dave Love <fx@gnu.org>
parents:
diff changeset
104 */
Dave Love <fx@gnu.org>
parents:
diff changeset
105 p_ptr->s_count++;
Dave Love <fx@gnu.org>
parents:
diff changeset
106
Dave Love <fx@gnu.org>
parents:
diff changeset
107 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
108 * Schedule a recompute.
Dave Love <fx@gnu.org>
parents:
diff changeset
109 */
Dave Love <fx@gnu.org>
parents:
diff changeset
110 menu->recompute = 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
111
Dave Love <fx@gnu.org>
parents:
diff changeset
112 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
113 * Return the selection number just inserted.
Dave Love <fx@gnu.org>
parents:
diff changeset
114 */
Dave Love <fx@gnu.org>
parents:
diff changeset
115 _XMErrorCode = XME_NO_ERROR;
Dave Love <fx@gnu.org>
parents:
diff changeset
116 return(s_num);
Dave Love <fx@gnu.org>
parents:
diff changeset
117 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
118
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
119 /* arch-tag: 8398626f-81cb-4e13-8ebc-aac1b9237663
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
120 (do not change this comment) */