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