annotate oldXMenu/XDelAssoc.c @ 36150:46e59561af4c

Display Vars node renamed Display Custom. Include info there about customizing cursor appearance. Clean up aggressive scrolling. Clarify horizontal scrolling discussion. Fix index entries for line number mode.
author Richard M. Stallman <rms@gnu.org>
date Sat, 17 Feb 2001 16:45:37 +0000
parents bbce331da1be
children 695cf19ef79e d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
1 /* $XConsortium: XDelAssoc.c,v 10.19 91/01/06 12:06:39 rws Exp $ */
Dave Love <fx@gnu.org>
parents:
diff changeset
2 /* Copyright Massachusetts Institute of Technology 1985 */
Dave Love <fx@gnu.org>
parents:
diff changeset
3
Dave Love <fx@gnu.org>
parents:
diff changeset
4 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
5 Permission to use, copy, modify, distribute, and sell this software and its
Dave Love <fx@gnu.org>
parents:
diff changeset
6 documentation for any purpose is hereby granted without fee, provided that
Dave Love <fx@gnu.org>
parents:
diff changeset
7 the above copyright notice appear in all copies and that both that
Dave Love <fx@gnu.org>
parents:
diff changeset
8 copyright notice and this permission notice appear in supporting
Dave Love <fx@gnu.org>
parents:
diff changeset
9 documentation, and that the name of M.I.T. not be used in advertising or
Dave Love <fx@gnu.org>
parents:
diff changeset
10 publicity pertaining to distribution of the software without specific,
Dave Love <fx@gnu.org>
parents:
diff changeset
11 written prior permission. M.I.T. makes no representations about the
Dave Love <fx@gnu.org>
parents:
diff changeset
12 suitability of this software for any purpose. It is provided "as is"
Dave Love <fx@gnu.org>
parents:
diff changeset
13 without express or implied warranty.
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 #include <X11/Xlib.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
17 #include "X10.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
18 void emacs_remque();
Dave Love <fx@gnu.org>
parents:
diff changeset
19 struct qelem {
Dave Love <fx@gnu.org>
parents:
diff changeset
20 struct qelem *q_forw;
Dave Love <fx@gnu.org>
parents:
diff changeset
21 struct qelem *q_back;
Dave Love <fx@gnu.org>
parents:
diff changeset
22 char q_data[1];
Dave Love <fx@gnu.org>
parents:
diff changeset
23 };
Dave Love <fx@gnu.org>
parents:
diff changeset
24
Dave Love <fx@gnu.org>
parents:
diff changeset
25 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
26 * XDeleteAssoc - Delete an association in an XAssocTable keyed on
Dave Love <fx@gnu.org>
parents:
diff changeset
27 * an XId. An association may be removed only once. Redundant
Dave Love <fx@gnu.org>
parents:
diff changeset
28 * deletes are meaningless (but cause no problems).
Dave Love <fx@gnu.org>
parents:
diff changeset
29 */
Dave Love <fx@gnu.org>
parents:
diff changeset
30 XDeleteAssoc(dpy, table, x_id)
Dave Love <fx@gnu.org>
parents:
diff changeset
31 register Display *dpy;
Dave Love <fx@gnu.org>
parents:
diff changeset
32 register XAssocTable *table;
Dave Love <fx@gnu.org>
parents:
diff changeset
33 register XID x_id;
Dave Love <fx@gnu.org>
parents:
diff changeset
34 {
Dave Love <fx@gnu.org>
parents:
diff changeset
35 int hash;
Dave Love <fx@gnu.org>
parents:
diff changeset
36 register XAssoc *bucket;
Dave Love <fx@gnu.org>
parents:
diff changeset
37 register XAssoc *Entry;
Dave Love <fx@gnu.org>
parents:
diff changeset
38
Dave Love <fx@gnu.org>
parents:
diff changeset
39 /* Hash the XId to get the bucket number. */
Dave Love <fx@gnu.org>
parents:
diff changeset
40 hash = x_id & (table->size - 1);
Dave Love <fx@gnu.org>
parents:
diff changeset
41 /* Look up the bucket to get the entries in that bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
42 bucket = &table->buckets[hash];
Dave Love <fx@gnu.org>
parents:
diff changeset
43 /* Get the first entry in the bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
44 Entry = bucket->next;
Dave Love <fx@gnu.org>
parents:
diff changeset
45
Dave Love <fx@gnu.org>
parents:
diff changeset
46 /* Scan through the entries in the bucket for the right XId. */
Dave Love <fx@gnu.org>
parents:
diff changeset
47 for (; Entry != bucket; Entry = Entry->next) {
Dave Love <fx@gnu.org>
parents:
diff changeset
48 if (Entry->x_id == x_id) {
Dave Love <fx@gnu.org>
parents:
diff changeset
49 /* We have the right XId. */
Dave Love <fx@gnu.org>
parents:
diff changeset
50 if (Entry->display == dpy) {
Dave Love <fx@gnu.org>
parents:
diff changeset
51 /* We have the right display. */
Dave Love <fx@gnu.org>
parents:
diff changeset
52 /* We have the right entry! */
Dave Love <fx@gnu.org>
parents:
diff changeset
53 /* Remove it from the queue and */
Dave Love <fx@gnu.org>
parents:
diff changeset
54 /* free the entry. */
Dave Love <fx@gnu.org>
parents:
diff changeset
55 emacs_remque((struct qelem *)Entry);
Dave Love <fx@gnu.org>
parents:
diff changeset
56 free((char *)Entry);
Dave Love <fx@gnu.org>
parents:
diff changeset
57 return;
Dave Love <fx@gnu.org>
parents:
diff changeset
58 }
Dave Love <fx@gnu.org>
parents:
diff changeset
59 /* Oops, identical XId's on different displays! */
Dave Love <fx@gnu.org>
parents:
diff changeset
60 continue;
Dave Love <fx@gnu.org>
parents:
diff changeset
61 }
Dave Love <fx@gnu.org>
parents:
diff changeset
62 if (Entry->x_id > x_id) {
Dave Love <fx@gnu.org>
parents:
diff changeset
63 /* We have gone past where it should be. */
Dave Love <fx@gnu.org>
parents:
diff changeset
64 /* It is apparently not in the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
65 return;
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 /* It is apparently not in the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
69 return;
Dave Love <fx@gnu.org>
parents:
diff changeset
70 }
Dave Love <fx@gnu.org>
parents:
diff changeset
71