annotate oldXMenu/AddPane.c @ 99492:ee792794d888

(isearch-search-fun): Compare the length of the current search string with the length of the string from the previous search state to detect the situation when the user adds or removes characters in the search string. Use word-search-forward-lax and word-search-backward-lax in this case, and otherwise word-search-forward and word-search-backward.
author Juri Linkov <juri@jurta.org>
date Tue, 11 Nov 2008 19:43:09 +0000
parents fec5e03aaf59
children edf631bdbb7a ec58e5c426ef 5cc91198ffb2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
76174
fec5e03aaf59 Remove FSF copyright since file does not differ significantly from X11
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
1 /* Copyright Massachusetts Institute of Technology 1985 */
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
2
76174
fec5e03aaf59 Remove FSF copyright since file does not differ significantly from X11
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
3 #include "copyright.h"
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
4
Dave Love <fx@gnu.org>
parents:
diff changeset
5 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
6 * XMenu: MIT Project Athena, X Window system menu package
Dave Love <fx@gnu.org>
parents:
diff changeset
7 *
Dave Love <fx@gnu.org>
parents:
diff changeset
8 * XMenuAddPane - Adds a pane to an XMenu object.
Dave Love <fx@gnu.org>
parents:
diff changeset
9 *
Dave Love <fx@gnu.org>
parents:
diff changeset
10 * Author: Tony Della Fera, DEC
Dave Love <fx@gnu.org>
parents:
diff changeset
11 * August, 1985
Dave Love <fx@gnu.org>
parents:
diff changeset
12 *
Dave Love <fx@gnu.org>
parents:
diff changeset
13 */
Dave Love <fx@gnu.org>
parents:
diff changeset
14
Dave Love <fx@gnu.org>
parents:
diff changeset
15 #include <config.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
16 #include "XMenuInt.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
17
Dave Love <fx@gnu.org>
parents:
diff changeset
18 int
Dave Love <fx@gnu.org>
parents:
diff changeset
19 XMenuAddPane(display, menu, label, active)
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
20 Display *display;
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
21 register XMenu *menu; /* Menu object to be modified. */
Dave Love <fx@gnu.org>
parents:
diff changeset
22 register char *label; /* Selection label. */
Dave Love <fx@gnu.org>
parents:
diff changeset
23 int active; /* Make selection active? */
Dave Love <fx@gnu.org>
parents:
diff changeset
24 {
Dave Love <fx@gnu.org>
parents:
diff changeset
25 register XMPane *pane; /* Newly created pane. */
Dave Love <fx@gnu.org>
parents:
diff changeset
26 register XMSelect *select; /* Initial selection for the new pane. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
27
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
28 int label_length; /* Label length in characters. */
Dave Love <fx@gnu.org>
parents:
diff changeset
29 int label_width; /* Label width in pixels. */
Dave Love <fx@gnu.org>
parents:
diff changeset
30
Dave Love <fx@gnu.org>
parents:
diff changeset
31 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
32 * Check for NULL pointers!
Dave Love <fx@gnu.org>
parents:
diff changeset
33 */
Dave Love <fx@gnu.org>
parents:
diff changeset
34 if (label == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
35 _XMErrorCode = XME_ARG_BOUNDS;
Dave Love <fx@gnu.org>
parents:
diff changeset
36 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
37 }
Dave Love <fx@gnu.org>
parents:
diff changeset
38
Dave Love <fx@gnu.org>
parents:
diff changeset
39 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
40 * Calloc the XMPane structure and the initial XMSelect.
Dave Love <fx@gnu.org>
parents:
diff changeset
41 */
Dave Love <fx@gnu.org>
parents:
diff changeset
42 pane = (XMPane *)calloc(1, sizeof(XMPane));
Dave Love <fx@gnu.org>
parents:
diff changeset
43 if (pane == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
44 _XMErrorCode = XME_CALLOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
45 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
46 }
Dave Love <fx@gnu.org>
parents:
diff changeset
47 select = (XMSelect *)calloc(1, sizeof(XMSelect));
Dave Love <fx@gnu.org>
parents:
diff changeset
48 if (select == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
49 _XMErrorCode = XME_CALLOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
50 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
51 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
52
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
53 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
54 * Determine label size.
Dave Love <fx@gnu.org>
parents:
diff changeset
55 */
Dave Love <fx@gnu.org>
parents:
diff changeset
56 label_length = strlen(label);
Dave Love <fx@gnu.org>
parents:
diff changeset
57 label_width = XTextWidth(menu->p_fnt_info,
Dave Love <fx@gnu.org>
parents:
diff changeset
58 label,
Dave Love <fx@gnu.org>
parents:
diff changeset
59 label_length);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
60
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
61 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
62 * Set up the initial selection.
Dave Love <fx@gnu.org>
parents:
diff changeset
63 * Values not explicitly set are zeroed by calloc.
Dave Love <fx@gnu.org>
parents:
diff changeset
64 */
Dave Love <fx@gnu.org>
parents:
diff changeset
65 select->next = select;
Dave Love <fx@gnu.org>
parents:
diff changeset
66 select->prev = select;
Dave Love <fx@gnu.org>
parents:
diff changeset
67 select->type = SL_HEADER;
Dave Love <fx@gnu.org>
parents:
diff changeset
68 select->serial = -1;
Dave Love <fx@gnu.org>
parents:
diff changeset
69 select->parent_p = pane;
Dave Love <fx@gnu.org>
parents:
diff changeset
70
Dave Love <fx@gnu.org>
parents:
diff changeset
71 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
72 * Fill the XMPane structure.
Dave Love <fx@gnu.org>
parents:
diff changeset
73 * X and Y position are set to 0 since a recompute will follow.
Dave Love <fx@gnu.org>
parents:
diff changeset
74 */
Dave Love <fx@gnu.org>
parents:
diff changeset
75 pane->type = PANE;
Dave Love <fx@gnu.org>
parents:
diff changeset
76 pane->active = active;
Dave Love <fx@gnu.org>
parents:
diff changeset
77 pane->serial = -1;
Dave Love <fx@gnu.org>
parents:
diff changeset
78 pane->label = label;
Dave Love <fx@gnu.org>
parents:
diff changeset
79 pane->label_width = label_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
80 pane->label_length = label_length;
Dave Love <fx@gnu.org>
parents:
diff changeset
81 pane->s_list = select;
Dave Love <fx@gnu.org>
parents:
diff changeset
82
Dave Love <fx@gnu.org>
parents:
diff changeset
83 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
84 * Insert the pane at the end of the pane list.
Dave Love <fx@gnu.org>
parents:
diff changeset
85 */
Dave Love <fx@gnu.org>
parents:
diff changeset
86 emacs_insque(pane, menu->p_list->prev);
Dave Love <fx@gnu.org>
parents:
diff changeset
87
Dave Love <fx@gnu.org>
parents:
diff changeset
88 /*
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
89 * Update the pane count.
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
90 */
Dave Love <fx@gnu.org>
parents:
diff changeset
91 menu->p_count++;
Dave Love <fx@gnu.org>
parents:
diff changeset
92
Dave Love <fx@gnu.org>
parents:
diff changeset
93 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
94 * Schedule a recompute.
Dave Love <fx@gnu.org>
parents:
diff changeset
95 */
Dave Love <fx@gnu.org>
parents:
diff changeset
96 menu->recompute = 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
97
Dave Love <fx@gnu.org>
parents:
diff changeset
98 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
99 * Return the pane number just added.
Dave Love <fx@gnu.org>
parents:
diff changeset
100 */
Dave Love <fx@gnu.org>
parents:
diff changeset
101 _XMErrorCode = XME_NO_ERROR;
Dave Love <fx@gnu.org>
parents:
diff changeset
102 return((menu->p_count - 1));
Dave Love <fx@gnu.org>
parents:
diff changeset
103 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
104
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
105 /* arch-tag: 62a26021-f29d-48ba-96ef-3b6c4ebd6547
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
106 (do not change this comment) */