annotate src/extw-Xlib.c @ 971:8401dcd2d43a

[xemacs-hg @ 2002-08-22 11:34:20 by stephent] stop bogusly reinitting ascii_character
author stephent
date Thu, 22 Aug 2002 11:34:20 +0000
parents 376386a54a3c
children 2aa9cd456ae7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 /* Common code between client and shell widgets; not Xt-specific.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 Copyright (C) 1993, 1994 Sun Microsystems, Inc.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 This library is free software; you can redistribute it and/or
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 modify it under the terms of the GNU Library General Public
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 License as published by the Free Software Foundation; either
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 version 2 of the License, or (at your option) any later version.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 This library is distributed in the hope that it will be useful,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 Library General Public License for more details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 You should have received a copy of the GNU Library General Public
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 License along with this library; if not, write to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 Boston, MA 02111-1307, USA. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 /* Synched up with: Not in FSF. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 /* Written by Ben Wing, September 1993. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 #ifdef emacs
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 #include <config.h>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 #ifndef EXTERNAL_WIDGET
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 ERROR! This ought not be getting compiled if EXTERNAL_WIDGET is undefined
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 #endif
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 #endif
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 #include <X11/Xlib.h>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 #include "extw-Xlib.h"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 int extw_which_side;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 static int atoms_initialized;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 Atom a_EXTW_QUERY_GEOMETRY, a_EXTW_GEOMETRY_MANAGER, a_EXTW_WIDGET_GEOMETRY,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 a_EXTW_NOTIFY;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 void
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 extw_initialize_atoms(Display *display)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 if (!atoms_initialized) {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 a_EXTW_QUERY_GEOMETRY =
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 XInternAtom(display, "EXTW_QUERY_GEOMETRY", False);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 a_EXTW_GEOMETRY_MANAGER =
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 XInternAtom(display, "EXTW_GEOMETRY_MANAGER", False);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 a_EXTW_WIDGET_GEOMETRY =
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 XInternAtom(display, "EXTW_WIDGET_GEOMETRY", False);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 a_EXTW_NOTIFY =
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 XInternAtom(display, "EXTW_NOTIFY", False);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 atoms_initialized = 1;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 /* send a notification to the other-side widget. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 void
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 extw_send_notify_3(Display *display, Window win, en_extw_notify type,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 long data0, long data1, long data2)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 XClientMessageEvent xev;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 xev.type = ClientMessage;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 xev.message_type = a_EXTW_NOTIFY;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 xev.format = 32;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 xev.display = display;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 xev.window = win;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 xev.data.l[0] = extw_which_side;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 xev.data.l[1] = type;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 xev.data.l[2] = data0;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 xev.data.l[3] = data1;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 xev.data.l[4] = data2;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 /* UGGGHHHH! All I want to do is ensure that the ClientMessage gets
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 received. Unfortunately X doesn't provide any simple way to do
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 that but instead has this event_mask bogosity in XSendEvent. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 XSendEvent(display, win, False,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 extw_which_side == extw_shell_send ? 0 : StructureNotifyMask,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 (XEvent *) &xev);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 }