annotate oldXMenu/InsPane.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 * XMenuInsertPane - Inserts a pane into an XMenu object in
Dave Love <fx@gnu.org>
parents:
diff changeset
11 * a particular position.
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 * 20-Nov-85
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 <config.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
19 #include "XMenuInt.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
20
Dave Love <fx@gnu.org>
parents:
diff changeset
21 int
Dave Love <fx@gnu.org>
parents:
diff changeset
22 XMenuInsertPane(menu, p_num, label, active)
Dave Love <fx@gnu.org>
parents:
diff changeset
23 register XMenu *menu; /* Menu object to be modified. */
Dave Love <fx@gnu.org>
parents:
diff changeset
24 register int p_num; /* Pane number of new pane. */
Dave Love <fx@gnu.org>
parents:
diff changeset
25 char *label; /* Selection label. */
Dave Love <fx@gnu.org>
parents:
diff changeset
26 int active; /* Make selection active? */
Dave Love <fx@gnu.org>
parents:
diff changeset
27 {
Dave Love <fx@gnu.org>
parents:
diff changeset
28 register XMPane *p_ptr; /* XMPane pointer. */
Dave Love <fx@gnu.org>
parents:
diff changeset
29 register XMPane *pane; /* Newly created pane. */
Dave Love <fx@gnu.org>
parents:
diff changeset
30 register XMSelect *select; /* Initial selection for the new pane. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
31
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
32 int label_length; /* Label length in characters. */
Dave Love <fx@gnu.org>
parents:
diff changeset
33 int label_width; /* Label width in pixels. */
Dave Love <fx@gnu.org>
parents:
diff changeset
34
Dave Love <fx@gnu.org>
parents:
diff changeset
35 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
36 * Check for NULL pointers!
Dave Love <fx@gnu.org>
parents:
diff changeset
37 */
Dave Love <fx@gnu.org>
parents:
diff changeset
38 if (label == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
39 _XMErrorCode = XME_ARG_BOUNDS;
Dave Love <fx@gnu.org>
parents:
diff changeset
40 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
41 }
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 * Find the pane number one less than the one specified since that
Dave Love <fx@gnu.org>
parents:
diff changeset
45 * is the pane after which the insertion will occur.
Dave Love <fx@gnu.org>
parents:
diff changeset
46 */
Dave Love <fx@gnu.org>
parents:
diff changeset
47 p_ptr = _XMGetPanePtr(menu, (p_num - 1));
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 * Calloc the XMPane structure and the initial XMSelect.
Dave Love <fx@gnu.org>
parents:
diff changeset
52 */
Dave Love <fx@gnu.org>
parents:
diff changeset
53 pane = (XMPane *)calloc(1, sizeof(XMPane));
Dave Love <fx@gnu.org>
parents:
diff changeset
54 if (pane == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
55 _XMErrorCode = XME_CALLOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
56 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
57 }
Dave Love <fx@gnu.org>
parents:
diff changeset
58 select = (XMSelect *)calloc(1, sizeof(XMSelect));
Dave Love <fx@gnu.org>
parents:
diff changeset
59 if (select == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
60 _XMErrorCode = XME_CALLOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
61 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
62 }
Dave Love <fx@gnu.org>
parents:
diff changeset
63
Dave Love <fx@gnu.org>
parents:
diff changeset
64 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
65 * Determine label size.
Dave Love <fx@gnu.org>
parents:
diff changeset
66 */
Dave Love <fx@gnu.org>
parents:
diff changeset
67 label_length = strlen(label);
Dave Love <fx@gnu.org>
parents:
diff changeset
68 label_width = XTextWidth(menu->p_fnt_info, label, label_length);
Dave Love <fx@gnu.org>
parents:
diff changeset
69
Dave Love <fx@gnu.org>
parents:
diff changeset
70 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
71 * Set up the initial selection.
Dave Love <fx@gnu.org>
parents:
diff changeset
72 * Values not explicitly set are zeroed by calloc.
Dave Love <fx@gnu.org>
parents:
diff changeset
73 */
Dave Love <fx@gnu.org>
parents:
diff changeset
74 select->next = select;
Dave Love <fx@gnu.org>
parents:
diff changeset
75 select->prev = select;
Dave Love <fx@gnu.org>
parents:
diff changeset
76 select->type = SL_HEADER;
Dave Love <fx@gnu.org>
parents:
diff changeset
77 select->serial = -1;
Dave Love <fx@gnu.org>
parents:
diff changeset
78 select->parent_p = pane;
Dave Love <fx@gnu.org>
parents:
diff changeset
79
Dave Love <fx@gnu.org>
parents:
diff changeset
80 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
81 * Fill the XMPane structure.
Dave Love <fx@gnu.org>
parents:
diff changeset
82 */
Dave Love <fx@gnu.org>
parents:
diff changeset
83 pane->type = PANE;
Dave Love <fx@gnu.org>
parents:
diff changeset
84 pane->active = active;
Dave Love <fx@gnu.org>
parents:
diff changeset
85 pane->serial = -1;
Dave Love <fx@gnu.org>
parents:
diff changeset
86 pane->label = label;
Dave Love <fx@gnu.org>
parents:
diff changeset
87 pane->label_width = label_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
88 pane->label_length = label_length;
Dave Love <fx@gnu.org>
parents:
diff changeset
89 pane->s_list = select;
Dave Love <fx@gnu.org>
parents:
diff changeset
90
Dave Love <fx@gnu.org>
parents:
diff changeset
91 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
92 * Insert the pane after the pane with the pane
Dave Love <fx@gnu.org>
parents:
diff changeset
93 * number one less than the desired number for the
Dave Love <fx@gnu.org>
parents:
diff changeset
94 * new pane.
Dave Love <fx@gnu.org>
parents:
diff changeset
95 */
Dave Love <fx@gnu.org>
parents:
diff changeset
96 emacs_insque(pane, p_ptr);
Dave Love <fx@gnu.org>
parents:
diff changeset
97
Dave Love <fx@gnu.org>
parents:
diff changeset
98 /*
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
99 * Update the pane count.
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
100 */
Dave Love <fx@gnu.org>
parents:
diff changeset
101 menu->p_count++;
Dave Love <fx@gnu.org>
parents:
diff changeset
102
Dave Love <fx@gnu.org>
parents:
diff changeset
103 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
104 * Schedule a recompute.
Dave Love <fx@gnu.org>
parents:
diff changeset
105 */
Dave Love <fx@gnu.org>
parents:
diff changeset
106 menu->recompute = 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
107
Dave Love <fx@gnu.org>
parents:
diff changeset
108 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
109 * Return the number of the pane just added.
Dave Love <fx@gnu.org>
parents:
diff changeset
110 */
Dave Love <fx@gnu.org>
parents:
diff changeset
111 _XMErrorCode = XME_NO_ERROR;
Dave Love <fx@gnu.org>
parents:
diff changeset
112 return(p_num);
Dave Love <fx@gnu.org>
parents:
diff changeset
113 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
114
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
115 /* arch-tag: ab94d53d-f05b-4273-82d3-f1b01eb9dc9e
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
116 (do not change this comment) */