annotate oldXMenu/XDelAssoc.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 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
1 /* Copyright Massachusetts Institute of Technology 1985 */
68640
e8a3fb527b77 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 65000
diff changeset
2 /* Copyright (C) 2002, 2003, 2004, 2005,
e8a3fb527b77 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 65000
diff changeset
3 2006 Free Software Foundation, Inc. */
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 Permission to use, copy, modify, distribute, and sell this software and its
Dave Love <fx@gnu.org>
parents:
diff changeset
7 documentation for any purpose is hereby granted without fee, provided that
Dave Love <fx@gnu.org>
parents:
diff changeset
8 the above copyright notice appear in all copies and that both that
Dave Love <fx@gnu.org>
parents:
diff changeset
9 copyright notice and this permission notice appear in supporting
Dave Love <fx@gnu.org>
parents:
diff changeset
10 documentation, and that the name of M.I.T. not be used in advertising or
Dave Love <fx@gnu.org>
parents:
diff changeset
11 publicity pertaining to distribution of the software without specific,
Dave Love <fx@gnu.org>
parents:
diff changeset
12 written prior permission. M.I.T. makes no representations about the
Dave Love <fx@gnu.org>
parents:
diff changeset
13 suitability of this software for any purpose. It is provided "as is"
Dave Love <fx@gnu.org>
parents:
diff changeset
14 without express or implied warranty.
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 #include <X11/Xlib.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
18 #include "X10.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
19 void emacs_remque();
Dave Love <fx@gnu.org>
parents:
diff changeset
20 struct qelem {
Dave Love <fx@gnu.org>
parents:
diff changeset
21 struct qelem *q_forw;
Dave Love <fx@gnu.org>
parents:
diff changeset
22 struct qelem *q_back;
Dave Love <fx@gnu.org>
parents:
diff changeset
23 char q_data[1];
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 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
27 * XDeleteAssoc - Delete an association in an XAssocTable keyed on
Dave Love <fx@gnu.org>
parents:
diff changeset
28 * an XId. An association may be removed only once. Redundant
Dave Love <fx@gnu.org>
parents:
diff changeset
29 * deletes are meaningless (but cause no problems).
Dave Love <fx@gnu.org>
parents:
diff changeset
30 */
Dave Love <fx@gnu.org>
parents:
diff changeset
31 XDeleteAssoc(dpy, table, x_id)
Dave Love <fx@gnu.org>
parents:
diff changeset
32 register Display *dpy;
Dave Love <fx@gnu.org>
parents:
diff changeset
33 register XAssocTable *table;
Dave Love <fx@gnu.org>
parents:
diff changeset
34 register XID x_id;
Dave Love <fx@gnu.org>
parents:
diff changeset
35 {
Dave Love <fx@gnu.org>
parents:
diff changeset
36 int hash;
Dave Love <fx@gnu.org>
parents:
diff changeset
37 register XAssoc *bucket;
Dave Love <fx@gnu.org>
parents:
diff changeset
38 register XAssoc *Entry;
Dave Love <fx@gnu.org>
parents:
diff changeset
39
Dave Love <fx@gnu.org>
parents:
diff changeset
40 /* Hash the XId to get the bucket number. */
Dave Love <fx@gnu.org>
parents:
diff changeset
41 hash = x_id & (table->size - 1);
Dave Love <fx@gnu.org>
parents:
diff changeset
42 /* Look up the bucket to get the entries in that bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
43 bucket = &table->buckets[hash];
Dave Love <fx@gnu.org>
parents:
diff changeset
44 /* Get the first entry in the bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
45 Entry = bucket->next;
Dave Love <fx@gnu.org>
parents:
diff changeset
46
Dave Love <fx@gnu.org>
parents:
diff changeset
47 /* Scan through the entries in the bucket for the right XId. */
Dave Love <fx@gnu.org>
parents:
diff changeset
48 for (; Entry != bucket; Entry = Entry->next) {
Dave Love <fx@gnu.org>
parents:
diff changeset
49 if (Entry->x_id == x_id) {
Dave Love <fx@gnu.org>
parents:
diff changeset
50 /* We have the right XId. */
Dave Love <fx@gnu.org>
parents:
diff changeset
51 if (Entry->display == dpy) {
Dave Love <fx@gnu.org>
parents:
diff changeset
52 /* We have the right display. */
Dave Love <fx@gnu.org>
parents:
diff changeset
53 /* We have the right entry! */
Dave Love <fx@gnu.org>
parents:
diff changeset
54 /* Remove it from the queue and */
Dave Love <fx@gnu.org>
parents:
diff changeset
55 /* free the entry. */
Dave Love <fx@gnu.org>
parents:
diff changeset
56 emacs_remque((struct qelem *)Entry);
Dave Love <fx@gnu.org>
parents:
diff changeset
57 free((char *)Entry);
Dave Love <fx@gnu.org>
parents:
diff changeset
58 return;
Dave Love <fx@gnu.org>
parents:
diff changeset
59 }
Dave Love <fx@gnu.org>
parents:
diff changeset
60 /* Oops, identical XId's on different displays! */
Dave Love <fx@gnu.org>
parents:
diff changeset
61 continue;
Dave Love <fx@gnu.org>
parents:
diff changeset
62 }
Dave Love <fx@gnu.org>
parents:
diff changeset
63 if (Entry->x_id > x_id) {
Dave Love <fx@gnu.org>
parents:
diff changeset
64 /* We have gone past where it should be. */
Dave Love <fx@gnu.org>
parents:
diff changeset
65 /* It is apparently not in the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
66 return;
Dave Love <fx@gnu.org>
parents:
diff changeset
67 }
Dave Love <fx@gnu.org>
parents:
diff changeset
68 }
Dave Love <fx@gnu.org>
parents:
diff changeset
69 /* It is apparently not in the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
70 return;
Dave Love <fx@gnu.org>
parents:
diff changeset
71 }
Dave Love <fx@gnu.org>
parents:
diff changeset
72
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25858
diff changeset
73 /* arch-tag: 90981a7e-601c-487a-b364-cdf55d6c475b
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25858
diff changeset
74 (do not change this comment) */