annotate oldXMenu/FindSel.c @ 93762:46d39c0f7bf9

(uniscribe_shape): Increase items buffer size. Give up if glyph indices not supported. Use uniscribe obtained ABC widths for individual metrics. Map glyph clusters back to characters using fClusterStart flag. Return number of glyphs produced, not chars processed.
author Jason Rumney <jasonr@gnu.org>
date Sun, 06 Apr 2008 01:04:45 +0000
parents 43c5da03890c
children 606f2d163a64 54f43e0fcdc6
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 */
74548
ce127a46b1ca Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68640
diff changeset
4 /* Copyright (C) 2001, 2002, 2003, 2004, 2005,
79743
43c5da03890c Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
5 2006, 2007, 2008 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 * XMenuFindSelection - Find the first selection in a pane who's
Dave Love <fx@gnu.org>
parents:
diff changeset
11 * label matches a particular string.
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 22, 1986
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 XMenuFindSelection(menu, p_num, label)
Dave Love <fx@gnu.org>
parents:
diff changeset
22 register XMenu *menu;
Dave Love <fx@gnu.org>
parents:
diff changeset
23 int p_num;
Dave Love <fx@gnu.org>
parents:
diff changeset
24 register char *label;
Dave Love <fx@gnu.org>
parents:
diff changeset
25 {
Dave Love <fx@gnu.org>
parents:
diff changeset
26 register XMPane *p_ptr;
Dave Love <fx@gnu.org>
parents:
diff changeset
27 register XMSelect *s_ptr;
Dave Love <fx@gnu.org>
parents:
diff changeset
28 register int i = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
29
Dave Love <fx@gnu.org>
parents:
diff changeset
30 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
31 * Check for NULL pointers!
Dave Love <fx@gnu.org>
parents:
diff changeset
32 */
Dave Love <fx@gnu.org>
parents:
diff changeset
33 if (label == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
34 _XMErrorCode = XME_ARG_BOUNDS;
Dave Love <fx@gnu.org>
parents:
diff changeset
35 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
36 }
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 * Find the right pane.
Dave Love <fx@gnu.org>
parents:
diff changeset
40 */
Dave Love <fx@gnu.org>
parents:
diff changeset
41 p_ptr = _XMGetPanePtr(menu, p_num);
Dave Love <fx@gnu.org>
parents:
diff changeset
42 if (p_ptr == NULL) 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 * Find the right selection.
Dave Love <fx@gnu.org>
parents:
diff changeset
46 */
Dave Love <fx@gnu.org>
parents:
diff changeset
47 for (
Dave Love <fx@gnu.org>
parents:
diff changeset
48 s_ptr = p_ptr->s_list->next;
Dave Love <fx@gnu.org>
parents:
diff changeset
49 s_ptr != p_ptr->s_list;
Dave Love <fx@gnu.org>
parents:
diff changeset
50 s_ptr = s_ptr->next
Dave Love <fx@gnu.org>
parents:
diff changeset
51 ){
Dave Love <fx@gnu.org>
parents:
diff changeset
52 if (s_ptr->label_length == 0) {
Dave Love <fx@gnu.org>
parents:
diff changeset
53 if (*label == '\0') {
Dave Love <fx@gnu.org>
parents:
diff changeset
54 _XMErrorCode = XME_NO_ERROR;
Dave Love <fx@gnu.org>
parents:
diff changeset
55 return (i);
Dave Love <fx@gnu.org>
parents:
diff changeset
56 }
Dave Love <fx@gnu.org>
parents:
diff changeset
57 }
Dave Love <fx@gnu.org>
parents:
diff changeset
58 else {
Dave Love <fx@gnu.org>
parents:
diff changeset
59 if (strncmp (label, s_ptr->label, s_ptr->label_length) == 0) {
Dave Love <fx@gnu.org>
parents:
diff changeset
60 _XMErrorCode = XME_NO_ERROR;
Dave Love <fx@gnu.org>
parents:
diff changeset
61 return (i);
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 i++;
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 * If we get here then we have not found
Dave Love <fx@gnu.org>
parents:
diff changeset
69 * a match.
Dave Love <fx@gnu.org>
parents:
diff changeset
70 */
Dave Love <fx@gnu.org>
parents:
diff changeset
71 _XMErrorCode = XME_S_NOT_FOUND;
Dave Love <fx@gnu.org>
parents:
diff changeset
72 return (XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
73 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25858
diff changeset
74
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25858
diff changeset
75 /* arch-tag: 564a4a95-9ab0-4580-b05f-6970c4b25dd4
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25858
diff changeset
76 (do not change this comment) */