annotate src/xterm.c @ 6629:1a11d0ceb11b

(EmacsFrameSetCharSize): Clean up code. Replace XtVaSetValues by XtSetValues.
author Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
date Fri, 01 Apr 1994 13:39:34 +0000
parents 59c44532d2a0
children eea1789dc6fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* X Communication module for terminals which understand the X protocol.
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2 Copyright (C) 1989, 1993, 1994 Free Software Foundation, Inc.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 /* Serious problems:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 Kludge: dup2 is used to put the X-connection socket into desc # 0
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 so that wait_reading_process_input will wait for it in place of
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 actual terminal input.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
28 /* Xt features made by Fred Pierresteguy. */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
29
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
30 #define NEW_SELECTIONS
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
31
2977
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
32 /* On 4.3 these lose if they come after xterm.h. */
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
33 /* On HP-UX 8.0 signal.h loses if it comes after config.h. */
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
34 /* Putting these at the beginning seems to be standard for other .c files. */
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
35 #include <stdio.h>
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
36 #include <signal.h>
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
37
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4683
diff changeset
38 #include <config.h>
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
40 /* Need syssignal.h for various externs and definitions that may be required
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
41 by some configurations for calls to signal later in this source file. */
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
42 #include "syssignal.h"
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
43
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 #ifdef HAVE_X_WINDOWS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 #include "lisp.h"
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
47 #include "blockinput.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 /* This may include sys/types.h, and that somehow loses
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 if this is not done before the other system files. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 #include "xterm.h"
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
52 #include <X11/cursorfont.h>
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
54 #ifndef USG
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 /* Load sys/types.h if not already loaded.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 In some systems loading it twice is suicidal. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 #ifndef makedev
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 #include <sys/types.h>
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
59 #endif /* makedev */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
60 #endif /* USG */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 #ifdef BSD
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 #include <sys/ioctl.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 #include <strings.h>
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
65 #else /* ! defined (BSD) */
2353
ec8d40776ff1 * xterm.c [VMS]: Don't #include <sys/termio.h> and <string.h>.
Jim Blandy <jimb@redhat.com>
parents: 2285
diff changeset
66 #ifndef VMS
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 #include <string.h>
2353
ec8d40776ff1 * xterm.c [VMS]: Don't #include <sys/termio.h> and <string.h>.
Jim Blandy <jimb@redhat.com>
parents: 2285
diff changeset
68 #endif
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
69 #endif /* ! defined (BSD) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70
3355
e0c2e8a2ef75 (XTread_socket, case KeyPress) [HPUX]: Test IsModifiedKey.
Richard M. Stallman <rms@gnu.org>
parents: 3284
diff changeset
71 #include "systty.h"
555
e09a318cf838 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 517
diff changeset
72 #include "systime.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
74 #ifndef INCLUDED_FCNTL
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 #include <fcntl.h>
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
76 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 #include <ctype.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 #include <errno.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 #include <setjmp.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 #include <sys/stat.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 #include <sys/param.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 #include "dispextern.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 #include "termhooks.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 #include "termopts.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 #include "termchar.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 #if 0
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 #include "sink.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 #include "sinkmask.h"
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
90 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 #include "gnu.h"
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
92 #include "frame.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 #include "disptab.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 #include "buffer.h"
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
95 #include "window.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
97 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
98 extern XtAppContext Xt_app_con;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
99 extern Widget Xt_app_shell;
5898
105c99071e9b (x_destroy_window) [USE_X_TOOLKIT]: Call free_frame_menubar.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5872
diff changeset
100 extern void free_frame_menubar ();
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
101 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
102
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
103 #ifndef USE_X_TOOLKIT
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
104 #define x_any_window_to_frame x_window_to_frame
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
105 #endif
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
106
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 #define XMapWindow XMapRaised /* Raise them when mapping. */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
109 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 #include <X/Xkeyboard.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 /*#include <X/Xproto.h> */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
112 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
3924
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
114 #ifdef FD_SET
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
115 /* We could get this from param.h, but better not to depend on finding that.
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
116 And better not to risk that it might define other symbols used in this
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
117 file. */
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
118 #ifdef FD_SETSIZE
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
119 #define MAXDESC FD_SETSIZE
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
120 #else
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
121 #define MAXDESC 64
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
122 #endif
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
123 #define SELECT_TYPE fd_set
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
124 #else /* no FD_SET */
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
125 #define MAXDESC 32
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
126 #define SELECT_TYPE int
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
127
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
128 /* Define the macros to access a single-int bitmap of descriptors. */
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
129 #define FD_SET(n, p) (*(p) |= (1 << (n)))
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
130 #define FD_CLR(n, p) (*(p) &= ~(1 << (n)))
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
131 #define FD_ISSET(n, p) (*(p) & (1 << (n)))
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
132 #define FD_ZERO(p) (*(p) = 0)
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
133 #endif /* no FD_SET */
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
134
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 /* For sending Meta-characters. Do we need this? */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 #define METABIT 0200
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 #define min(a,b) ((a)<(b) ? (a) : (b))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 #define max(a,b) ((a)>(b) ? (a) : (b))
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
140
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 /* Nonzero means we must reprint all windows
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 because 1) we received an ExposeWindow event
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
143 or 2) we received too many ExposeRegion events to record.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
144
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
145 This is never needed under X11. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 static int expose_all_windows;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 /* Nonzero means we must reprint all icon windows. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 static int expose_all_icons;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 /* ExposeRegion events, when received, are copied into this queue
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 for later processing. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 static struct event_queue x_expose_queue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
158 /* ButtonPress and ButtonReleased events, when received,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 are copied into this queue for later processing. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 struct event_queue x_mouse_queue;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
162 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 #if defined (SIGIO) && defined (FIONREAD)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 int BLOCK_INPUT_mask;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
166 #endif /* ! defined (SIGIO) && defined (FIONREAD) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 /* The id of a bitmap used for icon windows.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 One such map is shared by all Emacs icon windows.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 This is zero if we have not yet had a need to create the bitmap. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 static Bitmap icon_bitmap;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 /* Font used for text icons. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 static FONT_TYPE *icon_font_info;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 /* Stuff for dealing with the main icon title. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 extern Lisp_Object Vcommand_line_args;
398
a60eafebd43f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 395
diff changeset
181 char *hostname, *x_id_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 /* This is the X connection that we are using. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 Display *x_current_display;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
187 /* The cursor to use for vertical scroll bars on x_current_display. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
188 static Cursor x_vertical_scroll_bar_cursor;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
189
2474
86c8a6e08fd4 Fix typo in comment delimiter.
Richard M. Stallman <rms@gnu.org>
parents: 2468
diff changeset
190 /* Frame being updated by update_frame. This is declared in term.c.
2468
35aa32e1a003 * xterm.c (updating_frame): Declare this extern instead of static,
Jim Blandy <jimb@redhat.com>
parents: 2439
diff changeset
191 This is set by update_begin and looked at by all the
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 XT functions. It is zero while not inside an update.
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
193 In that case, the XT functions assume that `selected_frame'
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
194 is the frame to apply to. */
2468
35aa32e1a003 * xterm.c (updating_frame): Declare this extern instead of static,
Jim Blandy <jimb@redhat.com>
parents: 2439
diff changeset
195 extern struct frame *updating_frame;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
196
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
197 /* The frame (if any) which has the X window that has keyboard focus.
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
198 Zero if none. This is examined by Ffocus_frame in frame.c. Note
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
199 that a mere EnterNotify event can set this; if you need to know the
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
200 last frame specified in a FocusIn or FocusOut event, use
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
201 x_focus_event_frame. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
202 struct frame *x_focus_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
203
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
204 /* The last frame mentioned in a FocusIn or FocusOut event. This is
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
205 separate from x_focus_frame, because whether or not LeaveNotify
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
206 events cause us to lose focus depends on whether or not we have
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
207 received a FocusIn event for it. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
208 struct frame *x_focus_event_frame;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
209
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
210 /* The frame which currently has the visual highlight, and should get
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
211 keyboard input (other sorts of input have the frame encoded in the
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
212 event). It points to the X focus frame's selected window's
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
213 frame. It differs from x_focus_frame when we're using a global
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
214 minibuffer. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
215 static struct frame *x_highlight_frame;
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
216
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 /* From .Xdefaults, the value of "emacs.WarpMouse". If non-zero,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
218 mouse is moved to inside of frame when frame is de-iconified. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 static int warp_mouse_on_deiconify;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 /* During an update, maximum vpos for ins/del line operations to affect. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 static int flexlines;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 /* During an update, nonzero if chars output now should be highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 static int highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 /* Nominal cursor position -- where to draw output.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 During an update, these are different from the cursor-box position. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 static int curs_x;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 static int curs_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
236 /* Mouse movement.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
237
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
238 In order to avoid asking for motion events and then throwing most
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
239 of them away or busy-polling the server for mouse positions, we ask
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
240 the server for pointer motion hints. This means that we get only
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
241 one event per group of mouse movements. "Groups" are delimited by
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
242 other kinds of events (focus changes and button clicks, for
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
243 example), or by XQueryPointer calls; when one of these happens, we
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
244 get another MotionNotify event the next time the mouse moves. This
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
245 is at least as efficient as getting motion events when mouse
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
246 tracking is on, and I suspect only negligibly worse when tracking
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
247 is off.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
248
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
249 The silly O'Reilly & Associates Nutshell guides barely document
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
250 pointer motion hints at all (I think you have to infer how they
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
251 work from an example), and the description of XQueryPointer doesn't
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
252 mention that calling it causes you to get another motion hint from
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
253 the server, which is very important. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
254
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
255 /* Where the mouse was last time we reported a mouse event. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
256 static FRAME_PTR last_mouse_frame;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
257 static XRectangle last_mouse_glyph;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
258
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
259 /* The scroll bar in which the last X motion event occurred.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
260
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
261 If the last X motion event occurred in a scroll bar, we set this
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
262 so XTmouse_position can know whether to report a scroll bar motion or
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
263 an ordinary motion.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
264
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
265 If the last X motion event didn't occur in a scroll bar, we set this
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
266 to Qnil, to tell XTmouse_position to return an ordinary motion event. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
267 static Lisp_Object last_mouse_scroll_bar;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
268
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
269 /* Record which buttons are currently pressed. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
270 unsigned int x_mouse_grabbed;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
271
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
272 /* This is a hack. We would really prefer that XTmouse_position would
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
273 return the time associated with the position it returns, but there
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
274 doesn't seem to be any way to wrest the timestamp from the server
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
275 along with the position query. So, we just keep track of the time
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
276 of the last movement we received, and return that in hopes that
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
277 it's somewhat accurate. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
278 static Time last_mouse_movement_time;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
279
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
280 /* These variables describe the range of text currently shown
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
281 in its mouse-face, together with the window they apply to.
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
282 As long as the mouse stays within this range, we need not
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
283 redraw anything on its account. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
284 static int mouse_face_beg, mouse_face_end;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
285 static Lisp_Object mouse_face_window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
286 static int mouse_face_face_id;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
287
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
288 /* FRAME and X, Y position of mouse when last checked for highlighting. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
289 static FRAME_PTR mouse_face_mouse_frame;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
290 static int mouse_face_mouse_x, mouse_face_mouse_y;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
291
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
292 /* Nonzero means defer mouse-motion highlighting. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
293 static int mouse_face_defer;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
294
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 /* `t' if a mouse button is depressed. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 extern Lisp_Object Vmouse_depressed;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 /* Tells if a window manager is present or not. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 extern Lisp_Object Vx_no_window_manager;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 /* Timestamp that we requested selection data was made. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 extern Time requestor_time;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 /* ID of the window requesting selection data. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 extern Window requestor_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 /* Nonzero enables some debugging for the X interface code. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 extern int _Xdebug;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
313 extern Qface, Qmouse_face;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
314
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
315 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 /* Bit patterns for the mouse cursor. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 short MouseCursor[] = {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 0x0000, 0x0008, 0x0018, 0x0038,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 0x0078, 0x00f8, 0x01f8, 0x03f8,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 0x07f8, 0x00f8, 0x00d8, 0x0188,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 0x0180, 0x0300, 0x0300, 0x0000};
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 short MouseMask[] = {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 0x000c, 0x001c, 0x003c, 0x007c,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 0x00fc, 0x01fc, 0x03fc, 0x07fc,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 0x0ffc, 0x0ffc, 0x01fc, 0x03dc,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 0x03cc, 0x0780, 0x0780, 0x0300};
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 static short grey_bits[] = {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 0x0005, 0x000a, 0x0005, 0x000a};
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 static Pixmap GreyPixmap = 0;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
335 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 /* From time to time we get info on an Emacs window, here. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 static WINDOWINFO_TYPE windowinfo;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 extern int errno;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
343 /* A mask of extra modifier bits to put into every keyboard char. */
1841
338e4ffdb54b (XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
344 extern int extra_keyboard_modifiers;
338e4ffdb54b (XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
345
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 extern Display *XOpenDisplay ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 extern Window XCreateWindow ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 extern Cursor XCreateCursor ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 extern FONT_TYPE *XOpenFont ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 static void flashback ();
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
353 static void redraw_previous_char ();
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
354 static unsigned int x_x_to_emacs_modifiers ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
356 static void note_mouse_highlight ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
357 static void clear_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
358 static void show_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
359
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 static void dumpqueue ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
362 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 void dumpborder ();
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
365 static int XTcursor_to ();
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
366 static int XTclear_end_of_line ();
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
367
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
368
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
369 /* Starting and ending updates.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
370
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
371 These hooks are called by update_frame at the beginning and end
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
372 of a frame update. We record in `updating_frame' the identity
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
373 of the frame being updated, so that the XT... functions do not
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
374 need to take a frame as argument. Most of the XT... functions
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 should never be called except during an update, the only exceptions
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
376 being XTcursor_to, XTwrite_glyphs and XTreassert_line_highlight. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 extern int mouse_track_top, mouse_track_left, mouse_track_width;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
381 XTupdate_begin (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
382 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
386 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
389 flexlines = f->height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 highlight = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 BLOCK_INPUT;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
393
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
394 if (f == mouse_face_mouse_frame)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
395 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
396 mouse_face_defer = 1;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
397 if (!NILP (mouse_face_window))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
398 clear_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
399 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 dumpqueue ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
402 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
406 #ifndef HAVE_X11
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 static void x_do_pending_expose ();
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
408 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
411 XTupdate_end (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
412 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 dumpqueue ();
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
419 x_do_pending_expose ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
420 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
422 x_display_cursor (f, 1);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
423
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
424 if (f == mouse_face_mouse_frame)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
425 mouse_face_defer = 0;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
426 #if 0
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
427 /* This fails in the case of having updated only the echo area
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
428 if we have switched buffers. In that case, FRAME_CURRENT_GLYPHS
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
429 has no relation to the current contents, and its charstarts
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
430 have no relation to the contents of the window-buffer.
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
431 I don't know a clean way to check
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
432 for that case. window_end_valid isn't set up yet. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
433 if (f == mouse_face_mouse_frame)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
434 note_mouse_highlight (f, mouse_face_mouse_x, mouse_face_mouse_y);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
435 #endif
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
436
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
440
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
441 /* This is called when all windows on frame F are now up to date. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
442
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
443 static
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
444 XTframe_up_to_date (f)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
445 FRAME_PTR f;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
446 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
447 if (f == mouse_face_mouse_frame)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
448 note_mouse_highlight (f, mouse_face_mouse_x, mouse_face_mouse_y);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
449 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 /* External interface to control of standout mode.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 Call this when about to modify line at position VPOS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 and not change whether it is highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 XTreassert_line_highlight (new, vpos)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 int new, vpos;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 highlight = new;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 /* Call this when about to modify line at position VPOS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 and change whether it is highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 XTchange_line_highlight (new_highlight, vpos, first_unused_hpos)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 int new_highlight, vpos, first_unused_hpos;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 highlight = new_highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 XTcursor_to (vpos, 0);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
470 XTclear_end_of_line (updating_frame->width);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473 /* This is used when starting Emacs and when restarting after suspend.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 When starting Emacs, no X window is mapped. And nothing must be done
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 to Emacs's own window if it is suspended (though that rarely happens). */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 XTset_terminal_modes ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 /* This is called when exiting or suspending Emacs.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 Exiting will make the X-windows go away, and suspending
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 requires no action. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487 XTreset_terminal_modes ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
489 /* XTclear_frame (); */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
492 /* Set the nominal cursor position of the frame.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
493 This is where display update commands will take effect.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 This does not affect the place where the cursor-box is displayed. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
496 static int
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 XTcursor_to (row, col)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 register int row, col;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 int orow = row;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 curs_x = col;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 curs_y = row;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
506 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 BLOCK_INPUT;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
509 x_display_cursor (selected_frame, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 /* Display a sequence of N glyphs found at GP.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 WINDOW is the x-window to output to. LEFT and TOP are starting coords.
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
517 HL is 1 if this text is highlighted, 2 if the cursor is on it,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
518 3 if should appear in its mouse-face.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
520 FONT is the default font to use (for glyphs whose font-code is 0).
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
521
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
522 Since the display generation code is responsible for calling
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
523 compute_char_face and compute_glyph_face on everything it puts in
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
524 the display structure, we can assume that the face code on each
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3839
diff changeset
525 glyph is a valid index into FRAME_COMPUTED_FACES (f), and the one
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
526 to which we can actually apply intern_face.
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
527 Call this function with input blocked. */
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
528
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
529 #if 1
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
530 /* This is the multi-face code. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
531
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
532 static void
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
533 dumpglyphs (f, left, top, gp, n, hl)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
534 struct frame *f;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
535 int left, top;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
536 register GLYPH *gp; /* Points to first GLYPH. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
537 register int n; /* Number of glyphs to display. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
538 int hl;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
539 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
540 /* Holds characters to be displayed. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
541 char *buf = (char *) alloca (f->width * sizeof (*buf));
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
542 register char *cp; /* Steps through buf[]. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
543 register int tlen = GLYPH_TABLE_LENGTH;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
544 register Lisp_Object *tbase = GLYPH_TABLE_BASE;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
545 Window window = FRAME_X_WINDOW (f);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
546
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
547 while (n > 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
548 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
549 /* Get the face-code of the next GLYPH. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
550 int cf, len;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
551 int g = *gp;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
552
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
553 GLYPH_FOLLOW_ALIASES (tbase, tlen, g);
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
554 cf = FAST_GLYPH_FACE (g);
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
555
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
556 /* Find the run of consecutive glyphs with the same face-code.
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
557 Extract their character codes into BUF. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
558 cp = buf;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
559 while (n > 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
560 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
561 g = *gp;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
562 GLYPH_FOLLOW_ALIASES (tbase, tlen, g);
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
563 if (FAST_GLYPH_FACE (g) != cf)
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
564 break;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
565
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
566 *cp++ = FAST_GLYPH_CHAR (g);
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
567 --n;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
568 ++gp;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
569 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
570
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
571 /* LEN gets the length of the run. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
572 len = cp - buf;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
573
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
574 /* Now output this run of chars, with the font and pixel values
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
575 determined by the face code CF. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
576 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
577 struct face *face = FRAME_DEFAULT_FACE (f);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
578 FONT_TYPE *font = FACE_FONT (face);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
579 GC gc = FACE_GC (face);
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
580 int defaulted = 1;
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
581 int gc_temporary = 0;
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
582
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
583 /* HL = 3 means use a mouse face previously chosen. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
584 if (hl == 3)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
585 cf = mouse_face_face_id;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
586
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
587 /* First look at the face of the text itself. */
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
588 if (cf != 0)
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
589 {
5719
d3074ff90741 (dumpglyphs): Don't crash for invalid face code.
Richard M. Stallman <rms@gnu.org>
parents: 5686
diff changeset
590 /* It's possible for the display table to specify
d3074ff90741 (dumpglyphs): Don't crash for invalid face code.
Richard M. Stallman <rms@gnu.org>
parents: 5686
diff changeset
591 a face code that is out of range. Use 0 in that case. */
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3839
diff changeset
592 if (cf < 0 || cf >= FRAME_N_COMPUTED_FACES (f)
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3839
diff changeset
593 || FRAME_COMPUTED_FACES (f) [cf] == 0)
5719
d3074ff90741 (dumpglyphs): Don't crash for invalid face code.
Richard M. Stallman <rms@gnu.org>
parents: 5686
diff changeset
594 cf = 0;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
595
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
596 if (cf == 1)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
597 face = FRAME_MODE_LINE_FACE (f);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
598 else
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3839
diff changeset
599 face = intern_face (f, FRAME_COMPUTED_FACES (f) [cf]);
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
600 font = FACE_FONT (face);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
601 gc = FACE_GC (face);
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
602 defaulted = 0;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
603 }
2785
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
604
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
605 /* Then comes the distinction between modeline and normal text. */
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
606 else if (hl == 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
607 ;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
608 else if (hl == 1)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
609 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
610 face = FRAME_MODE_LINE_FACE (f);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
611 font = FACE_FONT (face);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
612 gc = FACE_GC (face);
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
613 defaulted = 0;
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
614 }
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
615
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
616 #define FACE_DEFAULT (~0)
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
617
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
618 /* Now override that if the cursor's on this character. */
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
619 if (hl == 2)
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
620 {
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
621 if (defaulted
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
622 || !face->font
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
623 || (int) face->font == FACE_DEFAULT)
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
624 {
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
625 gc = f->display.x->cursor_gc;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
626 }
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
627 /* Cursor on non-default face: must merge. */
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
628 else
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
629 {
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
630 XGCValues xgcv;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
631 unsigned long mask;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
632
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
633 xgcv.background = f->display.x->cursor_pixel;
5987
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
634 if (face == FRAME_DEFAULT_FACE (f))
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
635 xgcv.foreground = f->display.x->cursor_foreground_pixel;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
636 else
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
637 xgcv.foreground = face->foreground;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
638 /* If the glyph would be invisible,
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
639 try a different foreground. */
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
640 if (xgcv.foreground == xgcv.background)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
641 xgcv.foreground = face->background;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
642 if (xgcv.foreground == xgcv.background)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
643 xgcv.foreground = f->display.x->cursor_foreground_pixel;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
644 if (xgcv.foreground == xgcv.background)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
645 xgcv.foreground = face->foreground;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
646 /* Make sure the cursor is distinct from text in this face. */
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
647 if (xgcv.background == face->background
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
648 && xgcv.foreground == face->foreground)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
649 {
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
650 xgcv.background = face->foreground;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
651 xgcv.foreground = face->background;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
652 }
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
653 xgcv.font = face->font->fid;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
654 xgcv.graphics_exposures = 0;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
655 mask = GCForeground | GCBackground | GCFont | GCGraphicsExposures;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
656 gc = XCreateGC (x_current_display, FRAME_X_WINDOW (f),
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
657 mask, &xgcv);
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
658 #if 0
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
659 if (face->stipple && face->stipple != FACE_DEFAULT)
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
660 XSetStipple (x_current_display, gc, face->stipple);
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
661 #endif
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
662 gc_temporary = 1;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
663 }
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
664 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
665
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
666 if ((int) font == FACE_DEFAULT)
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
667 font = f->display.x->font;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
668
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
669 XDrawImageString (x_current_display, window, gc,
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
670 left, top + FONT_BASE (font), buf, len);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
671
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
672 if (gc_temporary)
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
673 XFreeGC (x_current_display, gc);
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
674
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
675 /* We should probably check for XA_UNDERLINE_POSITION and
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
676 XA_UNDERLINE_THICKNESS properties on the font, but let's
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
677 just get the thing working, and come back to that. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
678 {
2785
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
679 int underline_position = 1;
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
680
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
681 if (font->descent <= underline_position)
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
682 underline_position = font->descent - 1;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
683
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
684 if (face->underline)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
685 XFillRectangle (x_current_display, FRAME_X_WINDOW (f),
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
686 FACE_GC (face),
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
687 left, (top
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
688 + FONT_BASE (font)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
689 + underline_position),
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
690 len * FONT_WIDTH (font), 1);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
691 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
692
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
693 left += len * FONT_WIDTH (font);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
694 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
695 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
696 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
697 #endif /* 1 */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
698
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
699 #if 0
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
700 /* This is the old single-face code. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
703 dumpglyphs (f, left, top, gp, n, hl, font)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
704 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 int left, top;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 register GLYPH *gp; /* Points to first GLYPH. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 register int n; /* Number of glyphs to display. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 int hl;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 FONT_TYPE *font;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 register int len;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
712 Window window = FRAME_X_WINDOW (f);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
713 GC drawing_gc = (hl == 2 ? f->display.x->cursor_gc
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
714 : (hl ? f->display.x->reverse_gc
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
715 : f->display.x->normal_gc));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716
313
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
717 if (sizeof (GLYPH) == sizeof (XChar2b))
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
718 XDrawImageString16 (x_current_display, window, drawing_gc,
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
719 left, top + FONT_BASE (font), (XChar2b *) gp, n);
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
720 else if (sizeof (GLYPH) == sizeof (unsigned char))
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
721 XDrawImageString (x_current_display, window, drawing_gc,
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
722 left, top + FONT_BASE (font), (char *) gp, n);
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
723 else
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
724 /* What size of glyph ARE you using? And does X have a function to
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
725 draw them? */
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
726 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 }
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
728 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
730 /* Output some text at the nominal frame cursor position.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
731 Advance the cursor over the text.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 Output LEN glyphs at START.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 `highlight', set up by XTreassert_line_highlight or XTchange_line_highlight,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 controls the pixel values used for foreground and background. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 XTwrite_glyphs (start, len)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 register GLYPH *start;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 int len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 register int temp_length;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 int mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
744 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
748 f = updating_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
749 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
751 f = selected_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 /* If not within an update,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
753 output at the frame's visible cursor. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
754 curs_x = f->cursor_x;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
755 curs_y = f->cursor_y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
758 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
759 CHAR_TO_PIXEL_COL (f, curs_x),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
760 CHAR_TO_PIXEL_ROW (f, curs_y),
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
761 start, len, highlight);
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
762
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
763 /* If we drew on top of the cursor, note that it is turned off. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
764 if (curs_y == f->phys_cursor_y
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
765 && curs_x <= f->phys_cursor_x
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
766 && curs_x + len > f->phys_cursor_x)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
767 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
769 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
771 f->cursor_x += len;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
772 x_display_cursor (f, 1);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
773 f->cursor_x -= len;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776 curs_x += len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
781 /* Clear to the end of the line.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
782 Erase the current text line from the nominal cursor position (inclusive)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 to column FIRST_UNUSED (exclusive). The idea is that everything
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 from FIRST_UNUSED onward is already erased. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
786 static int
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 XTclear_end_of_line (first_unused)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 register int first_unused;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
790 struct frame *f = updating_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
791 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
792
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
793 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
794 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
795
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
796 if (curs_y < 0 || curs_y >= f->height)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798 if (first_unused <= 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
801 if (first_unused >= f->width)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
802 first_unused = f->width;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
806 /* Notice if the cursor will be cleared by this operation. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
807 if (curs_y == f->phys_cursor_y
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
808 && curs_x <= f->phys_cursor_x
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
809 && f->phys_cursor_x < first_unused)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
810 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812 #ifdef HAVE_X11
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
813 XClearArea (x_current_display, FRAME_X_WINDOW (f),
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
814 CHAR_TO_PIXEL_COL (f, curs_x),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
815 CHAR_TO_PIXEL_ROW (f, curs_y),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
816 FONT_WIDTH (f->display.x->font) * (first_unused - curs_x),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
817 FONT_HEIGHT (f->display.x->font), False);
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
818 #if 0
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
819 redraw_previous_char (f, curs_x, curs_y);
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
820 #endif
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
821 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
822 XPixSet (FRAME_X_WINDOW (f),
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
823 CHAR_TO_PIXEL_COL (f, curs_x),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
824 CHAR_TO_PIXEL_ROW (f, curs_y),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
825 FONT_WIDTH (f->display.x->font) * (first_unused - curs_x),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
826 FONT_HEIGHT (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
827 f->display.x->background_pixel);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
828 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
833 /* Erase the character (if any) at the position just before X, Y in frame F,
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
834 then redraw it and the character before it.
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
835 This is necessary when we erase starting at X,
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
836 in case the character after X overlaps into the one before X.
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
837 Call this function with input blocked. */
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
838
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
839 static void
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
840 redraw_previous_char (f, x, y)
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
841 FRAME_PTR f;
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
842 int x, y;
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
843 {
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
844 /* Erase the character before the new ones, in case
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
845 what was here before overlaps it.
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
846 Reoutput that character, and the previous character
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
847 (in case the previous character overlaps it). */
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
848 if (x > 0)
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
849 {
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
850 int start_x = x - 2;
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
851 if (start_x < 0)
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
852 start_x = 0;
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
853 XClearArea (x_current_display, FRAME_X_WINDOW (f),
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
854 CHAR_TO_PIXEL_COL (f, x - 1),
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
855 CHAR_TO_PIXEL_ROW (f, y),
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
856 FONT_WIDTH (f->display.x->font),
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
857 FONT_HEIGHT (f->display.x->font), False);
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
858
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
859 dumpglyphs (f, CHAR_TO_PIXEL_COL (f, start_x),
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
860 CHAR_TO_PIXEL_ROW (f, y),
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
861 &FRAME_CURRENT_GLYPHS (f)->glyphs[y][start_x],
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
862 x - start_x, highlight);
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
863 }
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
864 }
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
865
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
866 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
867 XTclear_frame ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869 int mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
870 struct frame *f = updating_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
871
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
872 if (f == 0)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
873 f = selected_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
874
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
875 f->phys_cursor_x = -1; /* Cursor not visible. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 curs_x = 0; /* Nominal cursor position is top left. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
877 curs_y = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 BLOCK_INPUT;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
880
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
881 XClear (FRAME_X_WINDOW (f));
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
882
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
883 /* We have to clear the scroll bars, too. If we have changed
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
884 colors or something like that, then they should be notified. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
885 x_scroll_bar_clear (f);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
886
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887 #ifndef HAVE_X11
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
888 dumpborder (f, 0);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
889 #endif /* HAVE_X11 */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
890
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
895 /* Invert the middle quarter of the frame for .15 sec. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
896
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
897 /* We use the select system call to do the waiting, so we have to make sure
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3585
diff changeset
898 it's available. If it isn't, we just won't do visual bells. */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
899 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
900
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
901 /* Subtract the `struct timeval' values X and Y,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
902 storing the result in RESULT.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
903 Return 1 if the difference is negative, otherwise 0. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
904
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
905 static int
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
906 timeval_subtract (result, x, y)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
907 struct timeval *result, x, y;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
908 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
909 /* Perform the carry for the later subtraction by updating y.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
910 This is safer because on some systems
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
911 the tv_sec member is unsigned. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
912 if (x.tv_usec < y.tv_usec)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
913 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
914 int nsec = (y.tv_usec - x.tv_usec) / 1000000 + 1;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
915 y.tv_usec -= 1000000 * nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
916 y.tv_sec += nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
917 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
918 if (x.tv_usec - y.tv_usec > 1000000)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
919 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
920 int nsec = (y.tv_usec - x.tv_usec) / 1000000;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
921 y.tv_usec += 1000000 * nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
922 y.tv_sec -= nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
923 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
924
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
925 /* Compute the time remaining to wait. tv_usec is certainly positive. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
926 result->tv_sec = x.tv_sec - y.tv_sec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
927 result->tv_usec = x.tv_usec - y.tv_usec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
928
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
929 /* Return indication of whether the result should be considered negative. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
930 return x.tv_sec < y.tv_sec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
931 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
933 XTflash (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
934 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
935 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
936 BLOCK_INPUT;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
937
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
938 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
939 GC gc;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
940
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
941 /* Create a GC that will use the GXxor function to flip foreground pixels
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
942 into background pixels. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
943 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
944 XGCValues values;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
945
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
946 values.function = GXxor;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
947 values.foreground = (f->display.x->foreground_pixel
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
948 ^ f->display.x->background_pixel);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
949
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
950 gc = XCreateGC (x_current_display, FRAME_X_WINDOW (f),
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
951 GCFunction | GCForeground, &values);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
952 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
953
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
954 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
955 int width = PIXEL_WIDTH (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
956 int height = PIXEL_HEIGHT (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
957
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
958 XFillRectangle (x_current_display, FRAME_X_WINDOW (f), gc,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
959 width/4, height/4, width/2, height/2);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
960 XFlush (x_current_display);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
961
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
962 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
963 struct timeval wakeup, now;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
964
5362
d1fa597d923d (XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents: 5357
diff changeset
965 EMACS_GET_TIME (wakeup);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
966
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
967 /* Compute time to wait until, propagating carry from usecs. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
968 wakeup.tv_usec += 150000;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
969 wakeup.tv_sec += (wakeup.tv_usec / 1000000);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
970 wakeup.tv_usec %= 1000000;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
971
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
972 /* Keep waiting until past the time wakeup. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
973 while (1)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
974 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
975 struct timeval timeout;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
976
5362
d1fa597d923d (XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents: 5357
diff changeset
977 EMACS_GET_TIME (timeout);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
978
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
979 /* In effect, timeout = wakeup - timeout.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
980 Break if result would be negative. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
981 if (timeval_subtract (&timeout, wakeup, timeout))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
982 break;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
983
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
984 /* Try to wait that long--but we might wake up sooner. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
985 select (0, 0, 0, 0, &timeout);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
986 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
987 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
988
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
989 XFillRectangle (x_current_display, FRAME_X_WINDOW (f), gc,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
990 width/4, height/4, width/2, height/2);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
991 XFreeGC (x_current_display, gc);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
992 XFlush (x_current_display);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
993 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
994 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
995
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
997 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
999 #endif
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1000
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1001
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1002 /* Make audible bell. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1003
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1004 #ifdef HAVE_X11
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
1005 #define XRINGBELL XBell (x_current_display, 0)
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1006 #else /* ! defined (HAVE_X11) */
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
1007 #define XRINGBELL XFeep (0);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1008 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1010 XTring_bell ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1011 {
3243
48d20a0b229a (XTring_bell): Do nothing if x_current_connection is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3218
diff changeset
1012 if (x_current_display == 0)
48d20a0b229a (XTring_bell): Do nothing if x_current_connection is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3218
diff changeset
1013 return;
48d20a0b229a (XTring_bell): Do nothing if x_current_connection is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3218
diff changeset
1014
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1015 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1016 if (visible_bell)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1017 XTflash (selected_frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1018 else
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1019 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1020 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1021 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1022 XRINGBELL;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1023 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1024 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1025 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1026 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1027
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1028 /* Insert and delete character.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1029 These are not supposed to be used because we are supposed to turn
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1030 off the feature of using them. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1031
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1032 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1033 XTinsert_glyphs (start, len)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1034 register char *start;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1035 register int len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1036 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1037 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1038 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1039
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1040 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1041 XTdelete_glyphs (n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042 register int n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1045 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1047 /* Specify how many text lines, from the top of the window,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 should be affected by insert-lines and delete-lines operations.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049 This, and those operations, are used only within an update
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050 that is bounded by calls to XTupdate_begin and XTupdate_end. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053 XTset_terminal_window (n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1054 register int n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1055 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1056 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1057 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1058
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1059 if ((n <= 0) || (n > updating_frame->height))
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1060 flexlines = updating_frame->height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1061 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1062 flexlines = n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1063 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1064
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1065 /* Perform an insert-lines operation.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1066 Insert N lines at a vertical position curs_y. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1067
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1068 static void
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1069 stufflines (n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1070 register int n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1071 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1072 register int topregion, bottomregion;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1073 register int length, newtop, mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1074 register struct frame *f = updating_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1075 int intborder = f->display.x->internal_border_width;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1076
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1077 if (curs_y >= flexlines)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1078 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1079
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 topregion = curs_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1081 bottomregion = flexlines - (n + 1);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082 newtop = topregion + n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083 length = (bottomregion - topregion) + 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1084
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1085 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1086 dumpqueue ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1087 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1088
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1089 if ((length > 0) && (newtop <= flexlines))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1090 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1091 #ifdef HAVE_X11
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1092 XCopyArea (x_current_display, FRAME_X_WINDOW (f),
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1093 FRAME_X_WINDOW (f), f->display.x->normal_gc,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1094 intborder, CHAR_TO_PIXEL_ROW (f, topregion),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1095 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1096 length * FONT_HEIGHT (f->display.x->font), intborder,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1097 CHAR_TO_PIXEL_ROW (f, newtop));
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1098 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1099 XMoveArea (FRAME_X_WINDOW (f),
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1100 intborder, CHAR_TO_PIXEL_ROW (f, topregion),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1101 intborder, CHAR_TO_PIXEL_ROW (f, newtop),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1102 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1103 length * FONT_HEIGHT (f->display.x->font));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1104 /* Now we must process any ExposeRegion events that occur
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1105 if the area being copied from is obscured.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1106 We can't let it wait because further i/d operations
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1107 may want to copy this area to another area. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1108 x_read_exposes ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1109 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1110 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1111
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1112 newtop = min (newtop, (flexlines - 1));
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1113 length = newtop - topregion;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114 if (length > 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1116 #ifdef HAVE_X11
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1117 XClearArea (x_current_display, FRAME_X_WINDOW (f), intborder,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1118 CHAR_TO_PIXEL_ROW (f, topregion),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1119 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1120 n * FONT_HEIGHT (f->display.x->font), False);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1121 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1122 XPixSet (FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1123 intborder,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1124 CHAR_TO_PIXEL_ROW (f, topregion),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1125 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1126 n * FONT_HEIGHT (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1127 f->display.x->background_pixel);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1128 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1129 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1130 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1131
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1132 /* Perform a delete-lines operation, deleting N lines
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1133 at a vertical position curs_y. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1134
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135 static void
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 scraplines (n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 register int n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139 int mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1140 register struct frame *f = updating_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1141 int intborder = f->display.x->internal_border_width;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1142
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143 if (curs_y >= flexlines)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1144 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1145
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1146 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1147 dumpqueue ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1148 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1149
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1150 if ((curs_y + n) >= flexlines)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1152 if (flexlines >= (curs_y + 1))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1153 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1154 #ifdef HAVE_X11
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1155 XClearArea (x_current_display, FRAME_X_WINDOW (f), intborder,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1156 CHAR_TO_PIXEL_ROW (f, curs_y),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1157 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1158 (flexlines - curs_y) * FONT_HEIGHT (f->display.x->font), False);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1159 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1160 XPixSet (FRAME_X_WINDOW (f),
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1161 intborder, CHAR_TO_PIXEL_ROW (f, curs_y),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1162 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1163 (flexlines - curs_y) * FONT_HEIGHT (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1164 f->display.x->background_pixel);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1165 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1166 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1167 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1168 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1169 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1170 #ifdef HAVE_X11
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1171 XCopyArea (x_current_display, FRAME_X_WINDOW (f),
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1172 FRAME_X_WINDOW (f), f->display.x->normal_gc,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 intborder,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1174 CHAR_TO_PIXEL_ROW (f, curs_y + n),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1175 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1176 (flexlines - (curs_y + n)) * FONT_HEIGHT (f->display.x->font),
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1177 intborder, CHAR_TO_PIXEL_ROW (f, curs_y));
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1178 XClearArea (x_current_display, FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1179 intborder,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1180 CHAR_TO_PIXEL_ROW (f, flexlines - n),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1181 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1182 n * FONT_HEIGHT (f->display.x->font), False);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1183 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1184 XMoveArea (FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1185 intborder,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1186 CHAR_TO_PIXEL_ROW (f, curs_y + n),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1187 intborder, CHAR_TO_PIXEL_ROW (f, curs_y),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1188 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1189 (flexlines - (curs_y + n)) * FONT_HEIGHT (f->display.x->font));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1190 /* Now we must process any ExposeRegion events that occur
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1191 if the area being copied from is obscured.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1192 We can't let it wait because further i/d operations
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1193 may want to copy this area to another area. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1194 x_read_exposes ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1195 XPixSet (FRAME_X_WINDOW (f), intborder,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1196 CHAR_TO_PIXEL_ROW (f, flexlines - n),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1197 f->width * FONT_WIDTH (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1198 n * FONT_HEIGHT (f->display.x->font), f->display.x->background_pixel);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1199 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1203 /* Perform an insert-lines or delete-lines operation,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 inserting N lines or deleting -N lines at vertical position VPOS. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1206 XTins_del_lines (vpos, n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1207 int vpos, n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1208 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1209 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1210 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1211
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1212 /* Hide the cursor. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1213 x_display_cursor (updating_frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1214
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1215 XTcursor_to (vpos, 0);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1216
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1217 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1218 if (n >= 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1219 stufflines (n);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1220 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1221 scraplines (-n);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1222 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1224 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1225
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1226 /* Support routines for exposure events. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1227 static void clear_cursor ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1228
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1229 /* Output into a rectangle of an X-window (for frame F)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1230 the characters in f->phys_lines that overlap that rectangle.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1231 TOP and LEFT are the position of the upper left corner of the rectangle.
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
1232 ROWS and COLS are the size of the rectangle.
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
1233 Call this function with input blocked. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1234
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1235 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1236 dumprectangle (f, left, top, cols, rows)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1237 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1238 register int left, top, cols, rows;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1239 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1240 register struct frame_glyphs *active_frame = FRAME_CURRENT_GLYPHS (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 int cursor_cleared = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242 int bottom, right;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1243 register int y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1245 if (FRAME_GARBAGED_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1246 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1247
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1248 /* Express rectangle as four edges, instead of position-and-size. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1249 bottom = top + rows;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1250 right = left + cols;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1251
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1252 #ifndef HAVE_X11 /* Window manger does this for X11. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1253 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1254 int intborder = f->display.x->internal_border_width;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1255
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1256 /* If the rectangle includes any of the internal border area,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1257 redisplay the border emphasis. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1258 if (top < intborder || left < intborder
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1259 || bottom > intborder + f->height * FONT_HEIGHT (f->display.x->font)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1260 || right > intborder + f->width * FONT_WIDTH (f->display.x->font))
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1261 dumpborder (f, 0);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1262 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1263 #endif /* not HAVE_X11 Window manger does this for X11. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1264
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1265 /* Convert rectangle edges in pixels to edges in chars.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1266 Round down for left and top, up for right and bottom. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1267 top = PIXEL_TO_CHAR_ROW (f, top);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1268 left = PIXEL_TO_CHAR_COL (f, left);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1269 bottom += (FONT_HEIGHT (f->display.x->font) - 1);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1270 right += (FONT_WIDTH (f->display.x->font) - 1);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1271 bottom = PIXEL_TO_CHAR_ROW (f, bottom);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1272 right = PIXEL_TO_CHAR_COL (f, right);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1273
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1274 /* Clip the rectangle to what can be visible. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1275 if (left < 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276 left = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1277 if (top < 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 top = 0;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1279 if (right > f->width)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1280 right = f->width;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1281 if (bottom > f->height)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1282 bottom = f->height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1284 /* Get size in chars of the rectangle. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285 cols = right - left;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1286 rows = bottom - top;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1287
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1288 /* If rectangle has zero area, return. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1289 if (rows <= 0) return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1290 if (cols <= 0) return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1291
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1292 /* Turn off the cursor if it is in the rectangle.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1293 We will turn it back on afterward. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1294 if ((f->phys_cursor_x >= left) && (f->phys_cursor_x < right)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1295 && (f->phys_cursor_y >= top) && (f->phys_cursor_y < bottom))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1296 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1297 clear_cursor (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1298 cursor_cleared = 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1299 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1301 /* Display the text in the rectangle, one text line at a time. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1302
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1303 for (y = top; y < bottom; y++)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1305 GLYPH *line = &active_frame->glyphs[y][left];
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1306
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1307 if (! active_frame->enable[y] || left > active_frame->used[y])
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308 continue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1309
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1310 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1311 CHAR_TO_PIXEL_COL (f, left),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1312 CHAR_TO_PIXEL_ROW (f, y),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1313 line, min (cols, active_frame->used[y] - left),
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
1314 active_frame->highlight[y]);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1316
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317 /* Turn the cursor on if we turned it off. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1319 if (cursor_cleared)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1320 x_display_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1322
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1324 /* Process all queued ExposeRegion events. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326 static void
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327 dumpqueue ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329 register int i;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 XExposeRegionEvent r;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 while (dequeue_event (&r, &x_expose_queue))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1333 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1334 struct frame *f = x_window_to_frame (r.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1335 if (f->display.x->icon_desc == r.window)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1336 refreshicon (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337 else
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1338 dumprectangle (f, r.x, r.y, r.width, r.height);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1342 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1344 /* Process all expose events that are pending, for X10.
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1345 Redraws the cursor if necessary on any frame that
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1346 is not in the process of being updated with update_frame. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1348 #ifndef HAVE_X11
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349 static void
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350 x_do_pending_expose ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1352 int mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1353 struct frame *f;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1354 Lisp_Object tail, frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 if (expose_all_windows)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 expose_all_windows = 0;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1359 for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361 register int temp_width, temp_height;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362 int intborder;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1363
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1364 frame = XCONS (tail)->car;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
1365 if (XGCTYPE (frame) != Lisp_Frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1366 continue;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1367 f = XFRAME (frame);
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
1368 if (! FRAME_X_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1369 continue;
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
1370 if (!f->async_visible)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1371 continue;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1372 if (!f->display.x->needs_exposure)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1373 continue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1374
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1375 intborder = f->display.x->internal_border_width;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1376
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1377 clear_cursor (f);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1378 XGetWindowInfo (FRAME_X_WINDOW (f), &windowinfo);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1379 temp_width = ((windowinfo.width - 2 * intborder
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
1380 - f->display.x->v_scroll_bar_width)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1381 / FONT_WIDTH (f->display.x->font));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1382 temp_height = ((windowinfo.height- 2 * intborder
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
1383 - f->display.x->h_scroll_bar_height)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1384 / FONT_HEIGHT (f->display.x->font));
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1385 if (temp_width != f->width || temp_height != f->height)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1386 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1387 change_frame_size (f, max (1, temp_height),
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
1388 max (1, temp_width), 0, 1);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
1389 x_resize_scroll_bars (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1390 }
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1391 f->display.x->left_pos = windowinfo.x;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1392 f->display.x->top_pos = windowinfo.y;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1393 dumprectangle (f, 0, 0, PIXEL_WIDTH (f), PIXEL_HEIGHT (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394 #if 0
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1395 dumpborder (f, 0);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1396 #endif /* ! 0 */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1397 f->display.x->needs_exposure = 0;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1398 if (updating_frame != f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1399 x_display_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1400 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1401 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1402 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1403 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1404 /* Handle any individual-rectangle expose events queued
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1405 for various windows. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1406 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 ;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1408 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1409 dumpqueue ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1410 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1411 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1412 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1413
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1414 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1415 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1416 frame_highlight (frame)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1417 struct frame *frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1418 {
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1419 /* We used to only do this if Vx_no_window_manager was non-nil, but
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1420 the ICCCM (section 4.1.6) says that the window's border pixmap
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1421 and border pixel are window attributes which are "private to the
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1422 client", so we can always change it to whatever we want. */
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1423 BLOCK_INPUT;
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1424 XSetWindowBorder (x_current_display, FRAME_X_WINDOW (frame),
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1425 frame->display.x->border_pixel);
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1426 UNBLOCK_INPUT;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1427 x_display_cursor (frame, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1428 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1429
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1430 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1431 frame_unhighlight (frame)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1432 struct frame *frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1433 {
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1434 /* We used to only do this if Vx_no_window_manager was non-nil, but
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1435 the ICCCM (section 4.1.6) says that the window's border pixmap
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1436 and border pixel are window attributes which are "private to the
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1437 client", so we can always change it to whatever we want. */
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1438 BLOCK_INPUT;
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1439 XSetWindowBorderPixmap (x_current_display, FRAME_X_WINDOW (frame),
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1440 frame->display.x->border_tile);
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1441 UNBLOCK_INPUT;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1442 x_display_cursor (frame, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1443 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1444 #else /* ! defined (HAVE_X11) */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1445 /* Dump the border-emphasis of frame F.
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1446 If F is selected, this is a lining of the same color as the border,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1447 just within the border, occupying a portion of the internal border.
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1448 If F is not selected, it is background in the same place.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1449 If ALWAYS is 0, don't bother explicitly drawing if it's background.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1450
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1451 ALWAYS = 1 is used when a frame becomes selected or deselected.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1452 In that case, we also turn the cursor off and on again
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1453 so it will appear in the proper shape (solid if selected; else hollow.) */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1454
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1455 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1456 dumpborder (f, always)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1457 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1458 int always;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1459 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1460 int thickness = f->display.x->internal_border_width / 2;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1461 int width = PIXEL_WIDTH (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1462 int height = PIXEL_HEIGHT (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1463 int pixel;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1464
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1465 if (f != selected_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1466 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1467 if (!always)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1468 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1469
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1470 pixel = f->display.x->background_pixel;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1471 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1472 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1473 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1474 pixel = f->display.x->border_pixel;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1475 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1476
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1477 XPixSet (FRAME_X_WINDOW (f), 0, 0, width, thickness, pixel);
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1478 XPixSet (FRAME_X_WINDOW (f), 0, 0, thickness, height, pixel);
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1479 XPixSet (FRAME_X_WINDOW (f), 0, height - thickness, width,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1480 thickness, pixel);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1481 XPixSet (FRAME_X_WINDOW (f), width - thickness, 0, thickness,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1482 height, pixel);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1483
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1484 if (always)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1485 x_display_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1486 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1487 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1488
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1489 static void XTframe_rehighlight ();
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1490
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1491 /* The focus has changed. Update the frames as necessary to reflect
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1492 the new situation. Note that we can't change the selected frame
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1493 here, because the lisp code we are interrupting might become confused.
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3585
diff changeset
1494 Each event gets marked with the frame in which it occurred, so the
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1495 lisp code can tell when the switch took place by examining the events. */
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1496
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1497 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1498 x_new_focus_frame (frame)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1499 struct frame *frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1500 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1501 struct frame *old_focus = x_focus_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1502 int events_enqueued = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1503
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1504 if (frame != x_focus_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1505 {
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1506 /* Set this before calling other routines, so that they see
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1507 the correct value of x_focus_frame. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1508 x_focus_frame = frame;
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1509
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1510 if (old_focus && old_focus->auto_lower)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1511 x_lower_frame (old_focus);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1512
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1513 #if 0
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1514 selected_frame = frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1515 XSET (XWINDOW (selected_frame->selected_window)->frame,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1516 Lisp_Frame, selected_frame);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1517 Fselect_window (selected_frame->selected_window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1518 choose_minibuf_frame ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
1519 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1520
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1521 if (x_focus_frame && x_focus_frame->auto_raise)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1522 x_raise_frame (x_focus_frame);
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1523 }
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1524
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1525 XTframe_rehighlight ();
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1526 }
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1527
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1528
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1529 /* The focus has changed, or we have redirected a frame's focus to
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1530 another frame (this happens when a frame uses a surrogate
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1531 minibuffer frame). Shift the highlight as appropriate. */
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1532 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1533 XTframe_rehighlight ()
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1534 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1535 struct frame *old_highlight = x_highlight_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1536
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1537 if (x_focus_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1538 {
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1539 x_highlight_frame =
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
1540 ((XGCTYPE (FRAME_FOCUS_FRAME (x_focus_frame)) == Lisp_Frame)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1541 ? XFRAME (FRAME_FOCUS_FRAME (x_focus_frame))
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1542 : x_focus_frame);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1543 if (! FRAME_LIVE_P (x_highlight_frame))
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1544 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1545 FRAME_FOCUS_FRAME (x_focus_frame) = Qnil;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1546 x_highlight_frame = x_focus_frame;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1547 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1548 }
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1549 else
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1550 x_highlight_frame = 0;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1551
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1552 if (x_highlight_frame != old_highlight)
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1553 {
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1554 if (old_highlight)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1555 frame_unhighlight (old_highlight);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1556 if (x_highlight_frame)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1557 frame_highlight (x_highlight_frame);
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1558 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1559 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1560
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1561 /* Keyboard processing - modifier keys, vendor-specific keysyms, etc. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1562
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1563 /* Which modifier keys are on which modifier bits?
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1564
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1565 With each keystroke, X returns eight bits indicating which modifier
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1566 keys were held down when the key was pressed. The interpretation
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1567 of the top five modifier bits depends on what keys are attached
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1568 to them. If the Meta_L and Meta_R keysyms are on mod5, then mod5
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1569 is the meta bit.
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1570
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1571 x_meta_mod_mask is a mask containing the bits used for the meta key.
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1572 It may have more than one bit set, if more than one modifier bit
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1573 has meta keys on it. Basically, if EVENT is a KeyPress event,
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1574 the meta key is pressed if (EVENT.state & x_meta_mod_mask) != 0.
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1575
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1576 x_shift_lock_mask is LockMask if the XK_Shift_Lock keysym is on the
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1577 lock modifier bit, or zero otherwise. Non-alphabetic keys should
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1578 only be affected by the lock modifier bit if XK_Shift_Lock is in
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1579 use; XK_Caps_Lock should only affect alphabetic keys. With this
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1580 arrangement, the lock modifier should shift the character if
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1581 (EVENT.state & x_shift_lock_mask) != 0. */
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1582 static int x_meta_mod_mask, x_shift_lock_mask;
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1583
2047
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1584 /* These are like x_meta_mod_mask, but for different modifiers. */
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1585 static int x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask;
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1586
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1587 /* Initialize mode_switch_bit and modifier_meaning. */
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1588 static void
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1589 x_find_modifier_meanings ()
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1590 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1591 int min_code, max_code;
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1592 KeySym *syms;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1593 int syms_per_code;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1594 XModifierKeymap *mods;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1595
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1596 x_meta_mod_mask = 0;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1597 x_shift_lock_mask = 0;
2047
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1598 x_alt_mod_mask = 0;
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1599 x_super_mod_mask = 0;
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1600 x_hyper_mod_mask = 0;
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1601
2127
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1602 #ifdef HAVE_X11R4
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1603 XDisplayKeycodes (x_current_display, &min_code, &max_code);
2127
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1604 #else
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1605 min_code = x_current_display->min_keycode;
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1606 max_code = x_current_display->max_keycode;
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1607 #endif
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1608
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1609 syms = XGetKeyboardMapping (x_current_display,
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1610 min_code, max_code - min_code + 1,
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1611 &syms_per_code);
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1612 mods = XGetModifierMapping (x_current_display);
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1613
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1614 /* Scan the modifier table to see which modifier bits the Meta and
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1615 Alt keysyms are on. */
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1616 {
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1617 int row, col; /* The row and column in the modifier table. */
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1618
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1619 for (row = 3; row < 8; row++)
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1620 for (col = 0; col < mods->max_keypermod; col++)
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1621 {
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1622 KeyCode code =
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1623 mods->modifiermap[(row * mods->max_keypermod) + col];
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1624
6560
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1625 /* Zeroes are used for filler. Skip them. */
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1626 if (code == 0)
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1627 continue;
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1628
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1629 /* Are any of this keycode's keysyms a meta key? */
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1630 {
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1631 int code_col;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1632
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1633 for (code_col = 0; code_col < syms_per_code; code_col++)
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1634 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1635 int sym = syms[((code - min_code) * syms_per_code) + code_col];
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1636
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1637 switch (sym)
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1638 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1639 case XK_Meta_L:
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1640 case XK_Meta_R:
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1641 x_meta_mod_mask |= (1 << row);
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1642 break;
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1643
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1644 case XK_Alt_L:
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1645 case XK_Alt_R:
2047
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1646 x_alt_mod_mask |= (1 << row);
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1647 break;
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1648
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1649 case XK_Hyper_L:
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1650 case XK_Hyper_R:
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1651 x_hyper_mod_mask |= (1 << row);
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1652 break;
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1653
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1654 case XK_Super_L:
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1655 case XK_Super_R:
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1656 x_super_mod_mask |= (1 << row);
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1657 break;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1658
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1659 case XK_Shift_Lock:
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1660 /* Ignore this if it's not on the lock modifier. */
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1661 if ((1 << row) == LockMask)
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1662 x_shift_lock_mask = LockMask;
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1663 break;
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1664 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1665 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1666 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1667 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1668 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1669
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1670 /* If we couldn't find any meta keys, accept any alt keys as meta keys. */
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1671 if (! x_meta_mod_mask)
2047
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1672 {
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1673 x_meta_mod_mask = x_alt_mod_mask;
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1674 x_alt_mod_mask = 0;
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1675 }
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1676
2923
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1677 /* If some keys are both alt and meta,
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1678 make them just meta, not alt. */
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1679 if (x_alt_mod_mask & x_meta_mod_mask)
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1680 {
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1681 x_alt_mod_mask &= ~x_meta_mod_mask;
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1682 }
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1683
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1684 XFree ((char *) syms);
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1685 XFreeModifiermap (mods);
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1686 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1687
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1688 /* Convert between the modifier bits X uses and the modifier bits
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1689 Emacs uses. */
1530
a7f8a1fe258e * xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents: 1436
diff changeset
1690 static unsigned int
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1691 x_x_to_emacs_modifiers (state)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1692 unsigned int state;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1693 {
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1694 return ( ((state & (ShiftMask | x_shift_lock_mask)) ? shift_modifier : 0)
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1695 | ((state & ControlMask) ? ctrl_modifier : 0)
2047
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1696 | ((state & x_meta_mod_mask) ? meta_modifier : 0)
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1697 | ((state & x_alt_mod_mask) ? alt_modifier : 0)
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1698 | ((state & x_super_mod_mask) ? super_modifier : 0)
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1699 | ((state & x_hyper_mod_mask) ? hyper_modifier : 0));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1700 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1701
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1702 static unsigned int
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1703 x_emacs_to_x_modifiers (state)
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1704 unsigned int state;
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1705 {
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1706 return ( ((state & alt_modifier) ? x_alt_mod_mask : 0)
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1707 | ((state & super_modifier) ? x_super_mod_mask : 0)
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1708 | ((state & hyper_modifier) ? x_hyper_mod_mask : 0)
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1709 | ((state & shift_modifier) ? ShiftMask : 0)
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1710 | ((state & ctrl_modifier) ? ControlMask : 0)
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1711 | ((state & meta_modifier) ? x_meta_mod_mask : 0));
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1712 }
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1713
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1714 /* Return true iff KEYSYM is a vendor-specific keysym that we should
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1715 return as a function key. If you add a keysym to this, you should
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1716 make sure that the tables make_lispy_event uses contain a suitable
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1717 name for it. */
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1718 static int
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1719 x_is_vendor_fkey (sym)
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1720 KeySym sym;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1721 {
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1722 return 0
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1723 #ifdef DXK_Remove
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1724 || (sym == DXK_Remove)
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1725 #endif
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1726 ;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1727 }
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1728
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1729
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1730 /* Mouse clicks and mouse movement. Rah. */
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1731 #ifdef HAVE_X11
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1732
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1733 /* Given a pixel position (PIX_X, PIX_Y) on the frame F, return
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1734 glyph co-ordinates in (*X, *Y). Set *BOUNDS to the rectangle
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1735 that the glyph at X, Y occupies, if BOUNDS != 0.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1736 If NOCLIP is nonzero, do not force the value into range. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1737
6023
67aa546e4ff1 (construct_menu_click): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6022
diff changeset
1738 void
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1739 pixel_to_glyph_coords (f, pix_x, pix_y, x, y, bounds, noclip)
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1740 FRAME_PTR f;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1741 register int pix_x, pix_y;
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1742 register int *x, *y;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1743 XRectangle *bounds;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1744 int noclip;
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1745 {
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1746 /* Arrange for the division in PIXEL_TO_CHAR_COL etc. to round down
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1747 even for negative values. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1748 if (pix_x < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1749 pix_x -= FONT_WIDTH ((f)->display.x->font) - 1;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1750 if (pix_y < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1751 pix_y -= FONT_HEIGHT ((f)->display.x->font) - 1;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1752
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1753 pix_x = PIXEL_TO_CHAR_COL (f, pix_x);
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1754 pix_y = PIXEL_TO_CHAR_ROW (f, pix_y);
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1755
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1756 if (bounds)
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1757 {
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1758 bounds->width = FONT_WIDTH (f->display.x->font);
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1759 bounds->height = FONT_HEIGHT (f->display.x->font);
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1760 bounds->x = CHAR_TO_PIXEL_COL (f, pix_x);
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1761 bounds->y = CHAR_TO_PIXEL_ROW (f, pix_y);
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1762 }
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1763
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1764 if (!noclip)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1765 {
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1766 if (pix_x < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1767 pix_x = 0;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1768 else if (pix_x > f->width)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1769 pix_x = f->width;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1770
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1771 if (pix_y < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1772 pix_y = 0;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1773 else if (pix_y > f->height)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1774 pix_y = f->height;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1775 }
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1776
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1777 *x = pix_x;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1778 *y = pix_y;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1779 }
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1780
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1781 void
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1782 glyph_to_pixel_coords (f, x, y, pix_x, pix_y)
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1783 FRAME_PTR f;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1784 register int x, y;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1785 register int *pix_x, *pix_y;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1786 {
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1787 *pix_x = CHAR_TO_PIXEL_COL (f, x);
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1788 *pix_y = CHAR_TO_PIXEL_ROW (f, y);
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1789 }
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1790
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1791 /* Prepare a mouse-event in *RESULT for placement in the input queue.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1792
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1793 If the event is a button press, then note that we have grabbed
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1794 the mouse. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1795
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1796 static Lisp_Object
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1797 construct_mouse_click (result, event, f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1798 struct input_event *result;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1799 XButtonEvent *event;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1800 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1801 {
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1802 /* Make the event type no_event; we'll change that when we decide
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1803 otherwise. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1804 result->kind = mouse_click;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1805 result->code = event->button - Button1;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
1806 result->timestamp = event->time;
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1807 result->modifiers = (x_x_to_emacs_modifiers (event->state)
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1808 | (event->type == ButtonRelease
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1809 ? up_modifier
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1810 : down_modifier));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1811
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1812 /* Notice if the mouse is still grabbed. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1813 if (event->type == ButtonPress)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1814 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1815 if (! x_mouse_grabbed)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1816 Vmouse_depressed = Qt;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1817 x_mouse_grabbed |= (1 << event->button);
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1818 last_mouse_frame = f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1819 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1820 else if (event->type == ButtonRelease)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1821 {
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1822 x_mouse_grabbed &= ~(1 << event->button);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1823 if (!x_mouse_grabbed)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1824 Vmouse_depressed = Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1825 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1826
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1827 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1828 int row, column;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1829
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1830 #if 0
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1831 pixel_to_glyph_coords (f, event->x, event->y, &column, &row, NULL, 0);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1832 XFASTINT (result->x) = column;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1833 XFASTINT (result->y) = row;
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1834 #endif
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1835 XSET (result->x, Lisp_Int, event->x);
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1836 XSET (result->y, Lisp_Int, event->y);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1837 XSET (result->frame_or_window, Lisp_Frame, f);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1838 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1839 }
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1840
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1841 /* Prepare a menu-event in *RESULT for placement in the input queue. */
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1842
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1843 static Lisp_Object
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1844 construct_menu_click (result, event, f)
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1845 struct input_event *result;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1846 XButtonEvent *event;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1847 struct frame *f;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1848 {
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1849 /* Make the event type no_event; we'll change that when we decide
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1850 otherwise. */
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1851 result->kind = mouse_click;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1852 XSET (result->code, Lisp_Int, event->button - Button1);
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1853 result->timestamp = event->time;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1854 result->modifiers = (x_x_to_emacs_modifiers (event->state)
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1855 | (event->type == ButtonRelease
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1856 ? up_modifier
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1857 : down_modifier));
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1858
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1859 XSET (result->x, Lisp_Int, event->x);
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1860 XSET (result->y, Lisp_Int, -1);
6023
67aa546e4ff1 (construct_menu_click): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6022
diff changeset
1861 XSET (result->frame_or_window, Lisp_Frame, f);
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1862 }
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1863
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1864 /* Function to report a mouse movement to the mainstream Emacs code.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1865 The input handler calls this.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1866
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1867 We have received a mouse movement event, which is given in *event.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1868 If the mouse is over a different glyph than it was last time, tell
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1869 the mainstream emacs code by setting mouse_moved. If not, ask for
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1870 another motion event, so we can check again the next time it moves. */
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1871
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1872 static void
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1873 note_mouse_movement (frame, event)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1874 FRAME_PTR frame;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1875 XMotionEvent *event;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1876
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1877 {
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
1878 last_mouse_movement_time = event->time;
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
1879
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1880 /* Has the mouse moved off the glyph it was on at the last sighting? */
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1881 if (event->x < last_mouse_glyph.x
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1882 || event->x >= last_mouse_glyph.x + last_mouse_glyph.width
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1883 || event->y < last_mouse_glyph.y
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1884 || event->y >= last_mouse_glyph.y + last_mouse_glyph.height)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1885 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1886 mouse_moved = 1;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
1887 last_mouse_scroll_bar = Qnil;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1888
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1889 note_mouse_highlight (frame, event->x, event->y);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1890
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1891 /* Ask for another mouse motion event. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1892 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1893 int dummy;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1894
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1895 XQueryPointer (event->display, event->window,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1896 (Window *) &dummy, (Window *) &dummy,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1897 &dummy, &dummy, &dummy, &dummy,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1898 (unsigned int *) &dummy);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1899 }
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1900 }
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1901 else
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1902 {
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1903 /* It's on the same glyph. Call XQueryPointer so we'll get an
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1904 event the next time the mouse moves and we can see if it's
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1905 *still* on the same glyph. */
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1906 int dummy;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1907
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1908 XQueryPointer (event->display, event->window,
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1909 (Window *) &dummy, (Window *) &dummy,
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1910 &dummy, &dummy, &dummy, &dummy,
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1911 (unsigned int *) &dummy);
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1912 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1913 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1914
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1915 /* Take proper action when the mouse has moved to position X, Y on frame F
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1916 as regards highlighting characters that have mouse-face properties.
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1917 Also dehighlighting chars where the mouse was before. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1918
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1919 static void
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1920 note_mouse_highlight (f, x, y)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1921 FRAME_PTR f;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1922 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1923 int row, column, portion;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1924 XRectangle new_glyph;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1925 Lisp_Object window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1926 struct window *w;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1927
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1928 mouse_face_mouse_x = x;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1929 mouse_face_mouse_y = y;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1930 mouse_face_mouse_frame = f;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1931
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1932 if (mouse_face_defer)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1933 return;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1934
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1935 /* Find out which glyph the mouse is on. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1936 pixel_to_glyph_coords (f, x, y, &column, &row,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1937 &new_glyph, x_mouse_grabbed);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1938
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1939 /* Which window is that in? */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1940 window = window_from_coordinates (f, column, row, &portion);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1941 w = XWINDOW (window);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1942
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1943 /* If we were displaying active text in another window, clear that. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1944 if (! EQ (window, mouse_face_window))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1945 clear_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1946
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1947 /* Are we in a window whose display is up to date? */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1948 if (WINDOWP (window) && portion == 0
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1949 && EQ (w->window_end_valid, Qt))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1950 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1951 int *ptr = FRAME_CURRENT_GLYPHS (f)->charstarts[row];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1952 int i, pos;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1953
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1954 /* Find which buffer position the mouse corresponds to. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1955 for (i = column; i >= 0; i--)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1956 if (ptr[i] > 0)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1957 break;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1958 pos = ptr[i];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1959 /* Is it outside the displayed active region (if any)? */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1960 if (pos > 0
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1961 && ! (EQ (window, mouse_face_window)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1962 && pos >= mouse_face_beg && pos < mouse_face_end))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1963 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1964 Lisp_Object mouse_face, overlay, position;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1965 Lisp_Object *overlay_vec;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1966 int len, noverlays, ignor1;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1967
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1968 /* Make the window's buffer temporarily current for
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1969 overlays_at and compute_char_face. */
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1970 struct buffer *obuf = current_buffer;
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1971 current_buffer = XBUFFER (w->buffer);
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1972
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1973 /* Yes. Clear the display of the old active region, if any. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1974 clear_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1975
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1976 /* Is this char mouse-active? */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1977 XSET (position, Lisp_Int, pos);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1978
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1979 len = 10;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1980 overlay_vec = (Lisp_Object *) xmalloc (len * sizeof (Lisp_Object));
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1981
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1982 /* Put all the overlays we want in a vector in overlay_vec.
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1983 Store the length in len. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1984 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len, &ignor1);
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1985 noverlays = sort_overlays (overlay_vec, noverlays, w);
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1986
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1987 /* Find the highest priority overlay that has a mouse-face prop. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1988 overlay = Qnil;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1989 for (i = 0; i < noverlays; i++)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1990 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1991 mouse_face = Foverlay_get (overlay_vec[i], Qmouse_face);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1992 if (!NILP (mouse_face))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1993 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1994 overlay = overlay_vec[i];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1995 break;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1996 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1997 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1998 free (overlay_vec);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1999 /* If no overlay applies, get a text property. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2000 if (NILP (overlay))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2001 mouse_face = Fget_text_property (position, Qmouse_face, w->buffer);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2002
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2003 /* Handle the overlay case. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2004 if (! NILP (overlay))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2005 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2006 /* Find the range of text around this char that
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2007 should be active. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2008 Lisp_Object before, after;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2009 int ignore;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2010
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2011 before = Foverlay_start (overlay);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2012 after = Foverlay_end (overlay);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2013 /* Record this as the current active region. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2014 mouse_face_beg = XFASTINT (before);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2015 mouse_face_end = XFASTINT (after);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2016 mouse_face_window = window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2017 mouse_face_face_id = compute_char_face (f, w, pos, 0, 0,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2018 &ignore, pos + 1, 1);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2019
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2020 /* Display it as active. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2021 show_mouse_face (1);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2022 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2023 /* Handle the text property case. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2024 else if (! NILP (mouse_face))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2025 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2026 /* Find the range of text around this char that
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2027 should be active. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2028 Lisp_Object before, after, beginning, end;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2029 int ignore;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2030
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2031 beginning = Fmarker_position (w->start);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2032 XSET (end, Lisp_Int,
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
2033 (BUF_Z (XBUFFER (w->buffer))
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2034 - XFASTINT (w->window_end_pos)));
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2035 before
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2036 = Fprevious_single_property_change (make_number (pos + 1),
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2037 Qmouse_face,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2038 w->buffer, beginning);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2039 after
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2040 = Fnext_single_property_change (position, Qmouse_face,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2041 w->buffer, end);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2042 /* Record this as the current active region. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2043 mouse_face_beg = XFASTINT (before);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2044 mouse_face_end = XFASTINT (after);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2045 mouse_face_window = window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2046 mouse_face_face_id
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2047 = compute_char_face (f, w, pos, 0, 0,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2048 &ignore, pos + 1, 1);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2049
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2050 /* Display it as active. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2051 show_mouse_face (1);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2052 }
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
2053 current_buffer = obuf;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2054 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2055 else if (pos <= 0)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2056 clear_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2057 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2058 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2059
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2060 /* Find the row and column of position POS in window WINDOW.
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2061 Store them in *COLUMNP and *ROWP.
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2062 This assumes display in WINDOW is up to date. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2063
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2064 static int
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2065 fast_find_position (window, pos, columnp, rowp)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2066 Lisp_Object window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2067 int pos;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2068 int *columnp, *rowp;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2069 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2070 struct window *w = XWINDOW (window);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2071 FRAME_PTR f = XFRAME (WINDOW_FRAME (w));
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2072 int i;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2073 int row;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2074 int left = w->left;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2075 int top = w->top;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2076 int height = XFASTINT (w->height) - ! MINI_WINDOW_P (w);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2077 int width = window_internal_width (w);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2078 int *charstarts;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2079
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2080 for (i = 0;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2081 i < height;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2082 i++)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2083 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2084 int linestart = FRAME_CURRENT_GLYPHS (f)->charstarts[top + i][left];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2085 if (linestart > pos)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2086 break;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2087 if (linestart > 0)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2088 row = i;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2089 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2090
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2091 charstarts = FRAME_CURRENT_GLYPHS (f)->charstarts[top + row];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2092 for (i = 0; i < width; i++)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2093 if (charstarts[left + i] == pos)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2094 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2095 *rowp = row + top;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2096 *columnp = i + left;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2097 return 1;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2098 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2099
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2100 return 0;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2101 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2102
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2103 /* Display the active region described by mouse_face_*
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2104 in its mouse-face if HL > 0, in its normal face if HL = 0. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2105
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2106 static void
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2107 show_mouse_face (hl)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2108 int hl;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2109 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2110 int begcol, begrow, endcol, endrow;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2111 struct window *w = XWINDOW (mouse_face_window);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2112 int width = window_internal_width (w);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2113 FRAME_PTR f = XFRAME (WINDOW_FRAME (w));
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2114 int i;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2115
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2116 fast_find_position (mouse_face_window, mouse_face_beg,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2117 &begcol, &begrow);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2118 fast_find_position (mouse_face_window, mouse_face_end,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2119 &endcol, &endrow);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2120
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2121 x_display_cursor (f, 0);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2122
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2123 for (i = begrow; i <= endrow; i++)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2124 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2125 int column = (i == begrow ? begcol : w->left);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2126 int endcolumn = (i == endrow ? endcol : w->left + width);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2127 endcolumn = min (endcolumn, FRAME_CURRENT_GLYPHS (f)->used[i] - w->left),
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2128
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2129 dumpglyphs (f,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2130 CHAR_TO_PIXEL_COL (f, column),
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2131 CHAR_TO_PIXEL_ROW (f, i),
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2132 FRAME_CURRENT_GLYPHS (f)->glyphs[i] + column,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2133 endcolumn - column,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2134 /* Highlight with mouse face if hl > 0. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2135 hl > 0 ? 3 : 0);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2136 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2137
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2138 x_display_cursor (f, 1);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2139 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2140
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2141 /* Clear out the mouse-highlighted active region.
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2142 Redraw it unhighlighted first. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2143
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2144 static void
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2145 clear_mouse_face ()
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2146 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2147 if (! NILP (mouse_face_window))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2148 show_mouse_face (0);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2149
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2150 mouse_face_beg = -1;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2151 mouse_face_end = -1;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2152 mouse_face_window = Qnil;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2153 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2154
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2155 static struct scroll_bar *x_window_to_scroll_bar ();
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2156 static void x_scroll_bar_report_motion ();
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2157
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2158 /* Return the current position of the mouse.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2159
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2160 If the mouse movement started in a scroll bar, set *f, *bar_window,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2161 and *part to the frame, window, and scroll bar part that the mouse
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2162 is over. Set *x and *y to the portion and whole of the mouse's
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2163 position on the scroll bar.
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2164
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2165 If the mouse movement started elsewhere, set *f to the frame the
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2166 mouse is on, *bar_window to nil, and *x and *y to the character cell
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2167 the mouse is over.
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2168
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2169 Set *time to the server timestamp for the time at which the mouse
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2170 was at this position.
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2171
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2172 Don't store anything if we don't have a valid set of values to report.
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2173
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2174 This clears the mouse_moved flag, so we can wait for the next mouse
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2175 movement. This also calls XQueryPointer, which will cause the
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2176 server to give us another MotionNotify when the mouse moves
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2177 again. */
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2178
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2179 static void
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2180 XTmouse_position (f, bar_window, part, x, y, time)
4974
09139fb51584 (XTmouse_position): Undo roland's change.
Richard M. Stallman <rms@gnu.org>
parents: 4972
diff changeset
2181 FRAME_PTR *f;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2182 Lisp_Object *bar_window;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2183 enum scroll_bar_part *part;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2184 Lisp_Object *x, *y;
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
2185 unsigned long *time;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2186 {
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2187 FRAME_PTR f1;
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2188
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2189 BLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2190
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2191 if (! NILP (last_mouse_scroll_bar))
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2192 x_scroll_bar_report_motion (f, bar_window, part, x, y, time);
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2193 else
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2194 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2195 Window root;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2196 int root_x, root_y;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2197
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2198 Window dummy_window;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2199 int dummy;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2200
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2201 mouse_moved = 0;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2202 last_mouse_scroll_bar = Qnil;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2203
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2204 /* Figure out which root window we're on. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2205 XQueryPointer (x_current_display,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2206 DefaultRootWindow (x_current_display),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2207
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2208 /* The root window which contains the pointer. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2209 &root,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2210
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2211 /* Trash which we can't trust if the pointer is on
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2212 a different screen. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2213 &dummy_window,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2214
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2215 /* The position on that root window. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2216 &root_x, &root_y,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2217
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2218 /* More trash we can't trust. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2219 &dummy, &dummy,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2220
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2221 /* Modifier keys and pointer buttons, about which
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2222 we don't care. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2223 (unsigned int *) &dummy);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2224
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2225 /* Now we have a position on the root; find the innermost window
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2226 containing the pointer. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2227 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2228 Window win, child;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2229 int win_x, win_y;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2230 int parent_x, parent_y;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2231
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2232 win = root;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2233
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2234 if (x_mouse_grabbed)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2235 {
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2236 /* If mouse was grabbed on a frame, give coords for that frame
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2237 even if the mouse is now outside it. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2238 XTranslateCoordinates (x_current_display,
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2239
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2240 /* From-window, to-window. */
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2241 root, FRAME_X_WINDOW (last_mouse_frame),
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2242
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2243 /* From-position, to-position. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2244 root_x, root_y, &win_x, &win_y,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2245
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2246 /* Child of win. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2247 &child);
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2248 f1 = last_mouse_frame;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2249 }
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2250 else
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2251 {
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2252 while (1)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2253 {
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2254 XTranslateCoordinates (x_current_display,
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2255
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2256 /* From-window, to-window. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2257 root, win,
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2258
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2259 /* From-position, to-position. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2260 root_x, root_y, &win_x, &win_y,
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2261
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2262 /* Child of win. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2263 &child);
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2264
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2265 if (child == None)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2266 break;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2267
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2268 win = child;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2269 parent_x = win_x;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2270 parent_y = win_y;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2271 }
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2272
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2273 /* Now we know that:
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2274 win is the innermost window containing the pointer
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2275 (XTC says it has no child containing the pointer),
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2276 win_x and win_y are the pointer's position in it
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2277 (XTC did this the last time through), and
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2278 parent_x and parent_y are the pointer's position in win's parent.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2279 (They are what win_x and win_y were when win was child.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2280 If win is the root window, it has no parent, and
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2281 parent_{x,y} are invalid, but that's okay, because we'll
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2282 never use them in that case.) */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2283
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2284 /* Is win one of our frames? */
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2285 f1 = x_any_window_to_frame (win);
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2286 }
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2287
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2288 /* If not, is it one of our scroll bars? */
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2289 if (! f1)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2290 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2291 struct scroll_bar *bar = x_window_to_scroll_bar (win);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2292
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2293 if (bar)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2294 {
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2295 f1 = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2296 win_x = parent_x;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2297 win_y = parent_y;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2298 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2299 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2300
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2301 if (f1)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2302 {
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2303 int ignore1, ignore2;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2304
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2305 /* Ok, we found a frame. Store all the values. */
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2306
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2307 pixel_to_glyph_coords (f1, win_x, win_y, &ignore1, &ignore2,
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2308 &last_mouse_glyph, x_mouse_grabbed);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2309
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2310 *bar_window = Qnil;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2311 *part = 0;
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2312 *f = f1;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2313 XSET (*x, Lisp_Int, win_x);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2314 XSET (*y, Lisp_Int, win_y);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2315 *time = last_mouse_movement_time;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2316 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2317 }
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2318 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2319
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2320 UNBLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2321 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2322
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
2323 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
2324 #define XEvent XKeyPressedEvent
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
2325 #endif /* ! defined (HAVE_X11) */
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2326
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2327 /* Scroll bar support. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2328
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2329 /* Given an X window ID, find the struct scroll_bar which manages it.
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2330 This can be called in GC, so we have to make sure to strip off mark
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2331 bits. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2332 static struct scroll_bar *
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2333 x_window_to_scroll_bar (window_id)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2334 Window window_id;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2335 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2336 Lisp_Object tail, frame;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2337
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2338 for (tail = Vframe_list;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2339 XGCTYPE (tail) == Lisp_Cons;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2340 tail = XCONS (tail)->cdr)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2341 {
6521
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
2342 Lisp_Object frame, bar, condemned;
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
2343
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
2344 frame = XCONS (tail)->car;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2345 /* All elements of Vframe_list should be frames. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2346 if (XGCTYPE (frame) != Lisp_Frame)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2347 abort ();
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2348
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2349 /* Scan this frame's scroll bar list for a scroll bar with the
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2350 right window ID. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2351 condemned = FRAME_CONDEMNED_SCROLL_BARS (XFRAME (frame));
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2352 for (bar = FRAME_SCROLL_BARS (XFRAME (frame));
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2353 /* This trick allows us to search both the ordinary and
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2354 condemned scroll bar lists with one loop. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2355 ! GC_NILP (bar) || (bar = condemned,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2356 condemned = Qnil,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2357 ! GC_NILP (bar));
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
2358 bar = XSCROLL_BAR (bar)->next)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2359 if (SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar)) == window_id)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2360 return XSCROLL_BAR (bar);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2361 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2362
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2363 return 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2364 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2365
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2366 /* Open a new X window to serve as a scroll bar, and return the
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2367 scroll bar vector for it. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2368 static struct scroll_bar *
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2369 x_scroll_bar_create (window, top, left, width, height)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2370 struct window *window;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2371 int top, left, width, height;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2372 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2373 FRAME_PTR frame = XFRAME (WINDOW_FRAME (window));
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2374 struct scroll_bar *bar =
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2375 XSCROLL_BAR (Fmake_vector (make_number (SCROLL_BAR_VEC_SIZE), Qnil));
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2376
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2377 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2378
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2379 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2380 XSetWindowAttributes a;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2381 unsigned long mask;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2382 a.background_pixel = frame->display.x->background_pixel;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2383 a.event_mask = (ButtonPressMask | ButtonReleaseMask
1793
cf4c3f01ddb9 * xterm.c (x_scrollbar_create): Include PointerMotionHintMask in
Jim Blandy <jimb@redhat.com>
parents: 1787
diff changeset
2384 | ButtonMotionMask | PointerMotionHintMask
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2385 | ExposureMask);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2386 a.cursor = x_vertical_scroll_bar_cursor;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2387
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2388 mask = (CWBackPixel | CWEventMask | CWCursor);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2389
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2390 #if 0
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2391
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2392 ac = 0;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2393 XtSetArg (al[ac], XtNx, left); ac++;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2394 XtSetArg (al[ac], XtNy, top); ac++;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2395 XtSetArg (al[ac], XtNwidth, width); ac++;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2396 XtSetArg (al[ac], XtNheight, height); ac++;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2397 XtSetArg (al[ac], XtNborderWidth, 0); ac++;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2398 sb_widget = XtCreateManagedWidget ("box",
5916
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2399 boxWidgetClass,
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2400 frame->display.x->edit_widget, al, ac);
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2401 SET_SCROLL_BAR_X_WINDOW
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2402 (bar, sb_widget->core.window);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2403 #endif
5916
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2404 SET_SCROLL_BAR_X_WINDOW
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2405 (bar,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2406 XCreateWindow (x_current_display, FRAME_X_WINDOW (frame),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2407
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2408 /* Position and size of scroll bar. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2409 left, top, width, height,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2410
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2411 /* Border width, depth, class, and visual. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2412 0, CopyFromParent, CopyFromParent, CopyFromParent,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2413
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2414 /* Attributes. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2415 mask, &a));
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2416 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2417
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2418 XSET (bar->window, Lisp_Window, window);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2419 XSET (bar->top, Lisp_Int, top);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2420 XSET (bar->left, Lisp_Int, left);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2421 XSET (bar->width, Lisp_Int, width);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2422 XSET (bar->height, Lisp_Int, height);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2423 XSET (bar->start, Lisp_Int, 0);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2424 XSET (bar->end, Lisp_Int, 0);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2425 bar->dragging = Qnil;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2426
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2427 /* Add bar to its frame's list of scroll bars. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2428 bar->next = FRAME_SCROLL_BARS (frame);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2429 bar->prev = Qnil;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2430 XSET (FRAME_SCROLL_BARS (frame), Lisp_Vector, bar);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2431 if (! NILP (bar->next))
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2432 XSET (XSCROLL_BAR (bar->next)->prev, Lisp_Vector, bar);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2433
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2434 XMapWindow (x_current_display, SCROLL_BAR_X_WINDOW (bar));
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2435
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2436 UNBLOCK_INPUT;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2437
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2438 return bar;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2439 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2440
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2441 /* Draw BAR's handle in the proper position.
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2442 If the handle is already drawn from START to END, don't bother
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2443 redrawing it, unless REBUILD is non-zero; in that case, always
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2444 redraw it. (REBUILD is handy for drawing the handle after expose
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2445 events.)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2446
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2447 Normally, we want to constrain the start and end of the handle to
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2448 fit inside its rectangle, but if the user is dragging the scroll bar
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2449 handle, we want to let them drag it down all the way, so that the
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2450 bar's top is as far down as it goes; otherwise, there's no way to
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2451 move to the very end of the buffer. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2452 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2453 x_scroll_bar_set_handle (bar, start, end, rebuild)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2454 struct scroll_bar *bar;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2455 int start, end;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2456 int rebuild;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2457 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2458 int dragging = ! NILP (bar->dragging);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2459 Window w = SCROLL_BAR_X_WINDOW (bar);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2460 GC gc = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)))->display.x->normal_gc;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2461
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2462 /* If the display is already accurate, do nothing. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2463 if (! rebuild
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2464 && start == XINT (bar->start)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2465 && end == XINT (bar->end))
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2466 return;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2467
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2468 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2469
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2470 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2471 int inside_width = VERTICAL_SCROLL_BAR_INSIDE_WIDTH (XINT (bar->width));
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2472 int inside_height = VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (XINT (bar->height));
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2473 int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (XINT (bar->height));
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2474
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2475 /* Make sure the values are reasonable, and try to preserve
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2476 the distance between start and end. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2477 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2478 int length = end - start;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2479
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2480 if (start < 0)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2481 start = 0;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2482 else if (start > top_range)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2483 start = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2484 end = start + length;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2485
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2486 if (end < start)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2487 end = start;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2488 else if (end > top_range && ! dragging)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2489 end = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2490 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2491
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2492 /* Store the adjusted setting in the scroll bar. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2493 XSET (bar->start, Lisp_Int, start);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2494 XSET (bar->end, Lisp_Int, end);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2495
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2496 /* Clip the end position, just for display. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2497 if (end > top_range)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2498 end = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2499
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2500 /* Draw bottom positions VERTICAL_SCROLL_BAR_MIN_HANDLE pixels
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2501 below top positions, to make sure the handle is always at least
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2502 that many pixels tall. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2503 end += VERTICAL_SCROLL_BAR_MIN_HANDLE;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2504
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2505 /* Draw the empty space above the handle. Note that we can't clear
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2506 zero-height areas; that means "clear to end of window." */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2507 if (0 < start)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2508 XClearArea (x_current_display, w,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2509
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2510 /* x, y, width, height, and exposures. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2511 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2512 VERTICAL_SCROLL_BAR_TOP_BORDER,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2513 inside_width, start,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2514 False);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2515
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2516 /* Draw the handle itself. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2517 XFillRectangle (x_current_display, w, gc,
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2518
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2519 /* x, y, width, height */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2520 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2521 VERTICAL_SCROLL_BAR_TOP_BORDER + start,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2522 inside_width, end - start);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2523
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2524
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2525 /* Draw the empty space below the handle. Note that we can't
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2526 clear zero-height areas; that means "clear to end of window." */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2527 if (end < inside_height)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2528 XClearArea (x_current_display, w,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2529
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2530 /* x, y, width, height, and exposures. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2531 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2532 VERTICAL_SCROLL_BAR_TOP_BORDER + end,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2533 inside_width, inside_height - end,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2534 False);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2535
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2536 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2537
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2538 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2539 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2540
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3585
diff changeset
2541 /* Move a scroll bar around on the screen, to accommodate changing
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2542 window configurations. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2543 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2544 x_scroll_bar_move (bar, top, left, width, height)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2545 struct scroll_bar *bar;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2546 int top, left, width, height;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2547 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2548 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2549
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2550 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2551 XWindowChanges wc;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2552 unsigned int mask = 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2553
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2554 wc.x = left;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2555 wc.y = top;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2556 wc.width = width;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2557 wc.height = height;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2558
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2559 if (left != XINT (bar->left)) mask |= CWX;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2560 if (top != XINT (bar->top)) mask |= CWY;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2561 if (width != XINT (bar->width)) mask |= CWWidth;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2562 if (height != XINT (bar->height)) mask |= CWHeight;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2563
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2564 if (mask)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2565 XConfigureWindow (x_current_display, SCROLL_BAR_X_WINDOW (bar),
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2566 mask, &wc);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2567 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2568
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2569 XSET (bar->left, Lisp_Int, left);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2570 XSET (bar->top, Lisp_Int, top);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2571 XSET (bar->width, Lisp_Int, width);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2572 XSET (bar->height, Lisp_Int, height);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2573
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2574 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2575 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2576
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2577 /* Destroy the X window for BAR, and set its Emacs window's scroll bar
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2578 to nil. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2579 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2580 x_scroll_bar_remove (bar)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2581 struct scroll_bar *bar;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2582 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2583 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2584
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2585 BLOCK_INPUT;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2586
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2587 /* Destroy the window. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2588 XDestroyWindow (x_current_display, SCROLL_BAR_X_WINDOW (bar));
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2589
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2590 /* Disassociate this scroll bar from its window. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2591 XWINDOW (bar->window)->vertical_scroll_bar = Qnil;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2592
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2593 UNBLOCK_INPUT;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2594 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2595
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2596 /* Set the handle of the vertical scroll bar for WINDOW to indicate
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2597 that we are displaying PORTION characters out of a total of WHOLE
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2598 characters, starting at POSITION. If WINDOW has no scroll bar,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2599 create one. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2600 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2601 XTset_vertical_scroll_bar (window, portion, whole, position)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2602 struct window *window;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2603 int portion, whole, position;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2604 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2605 FRAME_PTR f = XFRAME (WINDOW_FRAME (window));
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2606 int top = XINT (window->top);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2607 int left = WINDOW_VERTICAL_SCROLL_BAR_COLUMN (window);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2608 int height = WINDOW_VERTICAL_SCROLL_BAR_HEIGHT (window);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2609
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2610 /* Where should this scroll bar be, pixelwise? */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2611 int pixel_top = CHAR_TO_PIXEL_ROW (f, top);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2612 int pixel_left = CHAR_TO_PIXEL_COL (f, left);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2613 int pixel_width = VERTICAL_SCROLL_BAR_PIXEL_WIDTH (f);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2614 int pixel_height = VERTICAL_SCROLL_BAR_PIXEL_HEIGHT (f, height);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2615
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2616 struct scroll_bar *bar;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2617
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2618 /* Does the scroll bar exist yet? */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2619 if (NILP (window->vertical_scroll_bar))
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2620 bar = x_scroll_bar_create (window,
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2621 pixel_top, pixel_left,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2622 pixel_width, pixel_height);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2623 else
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2624 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2625 /* It may just need to be moved and resized. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2626 bar = XSCROLL_BAR (window->vertical_scroll_bar);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2627 x_scroll_bar_move (bar, pixel_top, pixel_left, pixel_width, pixel_height);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2628 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2629
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2630 /* Set the scroll bar's current state, unless we're currently being
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2631 dragged. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2632 if (NILP (bar->dragging))
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2633 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2634 int top_range =
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2635 VERTICAL_SCROLL_BAR_TOP_RANGE (pixel_height);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2636
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2637 if (whole == 0)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2638 x_scroll_bar_set_handle (bar, 0, top_range, 0);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2639 else
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2640 {
3686
910ea1d66bfd * xterm.c (XTset_vertical_scroll_bar): Use double type for
Jim Blandy <jimb@redhat.com>
parents: 3683
diff changeset
2641 int start = ((double) position * top_range) / whole;
910ea1d66bfd * xterm.c (XTset_vertical_scroll_bar): Use double type for
Jim Blandy <jimb@redhat.com>
parents: 3683
diff changeset
2642 int end = ((double) (position + portion) * top_range) / whole;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2643
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2644 x_scroll_bar_set_handle (bar, start, end, 0);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2645 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2646 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2647
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2648 XSET (window->vertical_scroll_bar, Lisp_Vector, bar);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2649 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2650
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2651
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2652 /* The following three hooks are used when we're doing a thorough
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2653 redisplay of the frame. We don't explicitly know which scroll bars
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2654 are going to be deleted, because keeping track of when windows go
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2655 away is a real pain - "Can you say set-window-configuration, boys
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2656 and girls?" Instead, we just assert at the beginning of redisplay
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2657 that *all* scroll bars are to be removed, and then save a scroll bar
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2658 from the fiery pit when we actually redisplay its window. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2659
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2660 /* Arrange for all scroll bars on FRAME to be removed at the next call
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2661 to `*judge_scroll_bars_hook'. A scroll bar may be spared if
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2662 `*redeem_scroll_bar_hook' is applied to its window before the judgement. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2663 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2664 XTcondemn_scroll_bars (frame)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2665 FRAME_PTR frame;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2666 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2667 /* The condemned list should be empty at this point; if it's not,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2668 then the rest of Emacs isn't using the condemn/redeem/judge
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2669 protocol correctly. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2670 if (! NILP (FRAME_CONDEMNED_SCROLL_BARS (frame)))
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2671 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2672
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2673 /* Move them all to the "condemned" list. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2674 FRAME_CONDEMNED_SCROLL_BARS (frame) = FRAME_SCROLL_BARS (frame);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2675 FRAME_SCROLL_BARS (frame) = Qnil;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2676 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2677
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2678 /* Unmark WINDOW's scroll bar for deletion in this judgement cycle.
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2679 Note that WINDOW isn't necessarily condemned at all. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2680 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2681 XTredeem_scroll_bar (window)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2682 struct window *window;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2683 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2684 struct scroll_bar *bar;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2685
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2686 /* We can't redeem this window's scroll bar if it doesn't have one. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2687 if (NILP (window->vertical_scroll_bar))
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2688 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2689
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2690 bar = XSCROLL_BAR (window->vertical_scroll_bar);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2691
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2692 /* Unlink it from the condemned list. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2693 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2694 FRAME_PTR f = XFRAME (WINDOW_FRAME (window));
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2695
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2696 if (NILP (bar->prev))
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2697 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2698 /* If the prev pointer is nil, it must be the first in one of
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2699 the lists. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2700 if (EQ (FRAME_SCROLL_BARS (f), window->vertical_scroll_bar))
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2701 /* It's not condemned. Everything's fine. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2702 return;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2703 else if (EQ (FRAME_CONDEMNED_SCROLL_BARS (f),
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2704 window->vertical_scroll_bar))
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2705 FRAME_CONDEMNED_SCROLL_BARS (f) = bar->next;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2706 else
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2707 /* If its prev pointer is nil, it must be at the front of
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2708 one or the other! */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2709 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2710 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2711 else
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2712 XSCROLL_BAR (bar->prev)->next = bar->next;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2713
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2714 if (! NILP (bar->next))
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2715 XSCROLL_BAR (bar->next)->prev = bar->prev;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2716
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2717 bar->next = FRAME_SCROLL_BARS (f);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2718 bar->prev = Qnil;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2719 XSET (FRAME_SCROLL_BARS (f), Lisp_Vector, bar);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2720 if (! NILP (bar->next))
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2721 XSET (XSCROLL_BAR (bar->next)->prev, Lisp_Vector, bar);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2722 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2723 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2724
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2725 /* Remove all scroll bars on FRAME that haven't been saved since the
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2726 last call to `*condemn_scroll_bars_hook'. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2727 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2728 XTjudge_scroll_bars (f)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2729 FRAME_PTR f;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2730 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2731 Lisp_Object bar, next;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2732
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2733 bar = FRAME_CONDEMNED_SCROLL_BARS (f);
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2734
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2735 /* Clear out the condemned list now so we won't try to process any
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2736 more events on the hapless scroll bars. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2737 FRAME_CONDEMNED_SCROLL_BARS (f) = Qnil;
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2738
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2739 for (; ! NILP (bar); bar = next)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2740 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2741 struct scroll_bar *b = XSCROLL_BAR (bar);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2742
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2743 x_scroll_bar_remove (b);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2744
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2745 next = b->next;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2746 b->next = b->prev = Qnil;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2747 }
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2748
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2749 /* Now there should be no references to the condemned scroll bars,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2750 and they should get garbage-collected. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2751 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2752
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2753
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2754 /* Handle an Expose or GraphicsExpose event on a scroll bar.
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2755
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2756 This may be called from a signal handler, so we have to ignore GC
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2757 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2758 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2759 x_scroll_bar_expose (bar, event)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2760 struct scroll_bar *bar;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2761 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2762 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2763 Window w = SCROLL_BAR_X_WINDOW (bar);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2764 GC gc = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)))->display.x->normal_gc;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2765
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2766 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2767
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2768 x_scroll_bar_set_handle (bar, XINT (bar->start), XINT (bar->end), 1);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2769
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2770 /* Draw a one-pixel border just inside the edges of the scroll bar. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2771 XDrawRectangle (x_current_display, w, gc,
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2772
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2773 /* x, y, width, height */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2774 0, 0, XINT (bar->width) - 1, XINT (bar->height) - 1);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2775
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2776 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2777 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2778
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2779 /* Handle a mouse click on the scroll bar BAR. If *EMACS_EVENT's kind
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2780 is set to something other than no_event, it is enqueued.
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2781
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2782 This may be called from a signal handler, so we have to ignore GC
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2783 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2784 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2785 x_scroll_bar_handle_click (bar, event, emacs_event)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2786 struct scroll_bar *bar;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2787 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2788 struct input_event *emacs_event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2789 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2790 if (XGCTYPE (bar->window) != Lisp_Window)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2791 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2792
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2793 emacs_event->kind = scroll_bar_click;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2794 emacs_event->code = event->xbutton.button - Button1;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2795 emacs_event->modifiers =
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
2796 (x_x_to_emacs_modifiers (event->xbutton.state)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2797 | (event->type == ButtonRelease
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2798 ? up_modifier
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2799 : down_modifier));
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2800 emacs_event->frame_or_window = bar->window;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2801 emacs_event->timestamp = event->xbutton.time;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2802 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2803 int internal_height =
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2804 VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (XINT (bar->height));
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2805 int top_range =
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2806 VERTICAL_SCROLL_BAR_TOP_RANGE (XINT (bar->height));
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2807 int y = event->xbutton.y - VERTICAL_SCROLL_BAR_TOP_BORDER;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2808
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2809 if (y < 0) y = 0;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2810 if (y > top_range) y = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2811
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2812 if (y < XINT (bar->start))
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2813 emacs_event->part = scroll_bar_above_handle;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2814 else if (y < XINT (bar->end) + VERTICAL_SCROLL_BAR_MIN_HANDLE)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2815 emacs_event->part = scroll_bar_handle;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2816 else
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2817 emacs_event->part = scroll_bar_below_handle;
2953
5440f00480e6 * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2923
diff changeset
2818
5440f00480e6 * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2923
diff changeset
2819 /* Just because the user has clicked on the handle doesn't mean
2958
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2820 they want to drag it. Lisp code needs to be able to decide
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2821 whether or not we're dragging. */
2953
5440f00480e6 * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2923
diff changeset
2822 #if 0
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2823 /* If the user has just clicked on the handle, record where they're
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2824 holding it. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2825 if (event->type == ButtonPress
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2826 && emacs_event->part == scroll_bar_handle)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2827 XSET (bar->dragging, Lisp_Int, y - XINT (bar->start));
2953
5440f00480e6 * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2923
diff changeset
2828 #endif
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2829
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2830 /* If the user has released the handle, set it to its final position. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2831 if (event->type == ButtonRelease
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2832 && ! NILP (bar->dragging))
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2833 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2834 int new_start = y - XINT (bar->dragging);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2835 int new_end = new_start + (XINT (bar->end) - XINT (bar->start));
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2836
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2837 x_scroll_bar_set_handle (bar, new_start, new_end, 0);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2838 bar->dragging = Qnil;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2839 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2840
2958
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2841 /* Same deal here as the other #if 0. */
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2842 #if 0
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3585
diff changeset
2843 /* Clicks on the handle are always reported as occurring at the top of
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2844 the handle. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2845 if (emacs_event->part == scroll_bar_handle)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2846 emacs_event->x = bar->start;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2847 else
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2848 XSET (emacs_event->x, Lisp_Int, y);
2958
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2849 #else
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2850 XSET (emacs_event->x, Lisp_Int, y);
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2851 #endif
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2852
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2853 XSET (emacs_event->y, Lisp_Int, top_range);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2854 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2855 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2856
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2857 /* Handle some mouse motion while someone is dragging the scroll bar.
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2858
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2859 This may be called from a signal handler, so we have to ignore GC
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2860 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2861 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2862 x_scroll_bar_note_movement (bar, event)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2863 struct scroll_bar *bar;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2864 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2865 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2866 last_mouse_movement_time = event->xmotion.time;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2867
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2868 mouse_moved = 1;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2869 XSET (last_mouse_scroll_bar, Lisp_Vector, bar);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2870
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2871 /* If we're dragging the bar, display it. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2872 if (! GC_NILP (bar->dragging))
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2873 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2874 /* Where should the handle be now? */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2875 int new_start = event->xmotion.y - XINT (bar->dragging);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2876
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2877 if (new_start != XINT (bar->start))
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2878 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2879 int new_end = new_start + (XINT (bar->end) - XINT (bar->start));
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2880
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2881 x_scroll_bar_set_handle (bar, new_start, new_end, 0);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2882 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2883 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2884
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2885 /* Call XQueryPointer so we'll get an event the next time the mouse
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2886 moves and we can see *still* on the same position. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2887 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2888 int dummy;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2889
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2890 XQueryPointer (event->xmotion.display, event->xmotion.window,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2891 (Window *) &dummy, (Window *) &dummy,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2892 &dummy, &dummy, &dummy, &dummy,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2893 (unsigned int *) &dummy);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2894 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2895 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2896
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2897 /* Return information to the user about the current position of the mouse
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2898 on the scroll bar. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2899 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2900 x_scroll_bar_report_motion (f, bar_window, part, x, y, time)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2901 FRAME_PTR *f;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2902 Lisp_Object *bar_window;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2903 enum scroll_bar_part *part;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2904 Lisp_Object *x, *y;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2905 unsigned long *time;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2906 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2907 struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2908 int win_x, win_y;
2982
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2909 Window dummy_window;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2910 int dummy_coord;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2911 unsigned int dummy_mask;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2912
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2913 BLOCK_INPUT;
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2914
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2915 /* Get the mouse's position relative to the scroll bar window, and
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2916 report that. */
2982
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2917 if (! XQueryPointer (x_current_display,
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2918 SCROLL_BAR_X_WINDOW (bar),
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2919
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2920 /* Root, child, root x and root y. */
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2921 &dummy_window, &dummy_window,
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2922 &dummy_coord, &dummy_coord,
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2923
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2924 /* Position relative to scroll bar. */
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2925 &win_x, &win_y,
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2926
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2927 /* Mouse buttons and modifier keys. */
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2928 &dummy_mask))
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2929 *f = 0;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2930 else
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2931 {
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2932 int inside_height
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2933 = VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (XINT (bar->height));
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2934 int top_range
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2935 = VERTICAL_SCROLL_BAR_TOP_RANGE (XINT (bar->height));
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2936
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2937 win_y -= VERTICAL_SCROLL_BAR_TOP_BORDER;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2938
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2939 if (! NILP (bar->dragging))
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2940 win_y -= XINT (bar->dragging);
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2941
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2942 if (win_y < 0)
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2943 win_y = 0;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2944 if (win_y > top_range)
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2945 win_y = top_range;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2946
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2947 *f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2948 *bar_window = bar->window;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2949
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2950 if (! NILP (bar->dragging))
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2951 *part = scroll_bar_handle;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2952 else if (win_y < XINT (bar->start))
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2953 *part = scroll_bar_above_handle;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2954 else if (win_y < XINT (bar->end) + VERTICAL_SCROLL_BAR_MIN_HANDLE)
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2955 *part = scroll_bar_handle;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2956 else
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2957 *part = scroll_bar_below_handle;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2958
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2959 XSET (*x, Lisp_Int, win_y);
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2960 XSET (*y, Lisp_Int, top_range);
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2961
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2962 mouse_moved = 0;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2963 last_mouse_scroll_bar = Qnil;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2964 }
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2965
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2966 *time = last_mouse_movement_time;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2967
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2968 UNBLOCK_INPUT;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2969 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2970
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2971
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2972 /* The screen has been cleared so we may have changed foreground or
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2973 background colors, and the scroll bars may need to be redrawn.
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2974 Clear out the scroll bars, and ask for expose events, so we can
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2975 redraw them. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2976
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2977 x_scroll_bar_clear (f)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2978 FRAME_PTR f;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2979 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2980 Lisp_Object bar;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2981
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2982 for (bar = FRAME_SCROLL_BARS (f);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2983 XTYPE (bar) == Lisp_Vector;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2984 bar = XSCROLL_BAR (bar)->next)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2985 XClearArea (x_current_display, SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar)),
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2986 0, 0, 0, 0, True);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2987 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2988
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2989 /* This processes Expose events from the menubar specific X event
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2990 loop in menubar.c. This allows to redisplay the frame if necessary
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2991 when handling menubar or popup items. */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2992
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2993 void
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2994 process_expose_from_menu (event)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2995 XEvent event;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2996 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2997 FRAME_PTR f;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2998
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
2999 BLOCK_INPUT;
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3000
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3001 f = x_window_to_frame (event.xexpose.window);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3002 if (f)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3003 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3004 if (f->async_visible == 0)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3005 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3006 f->async_visible = 1;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3007 f->async_iconified = 0;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3008 SET_FRAME_GARBAGED (f);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3009 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3010 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3011 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3012 dumprectangle (x_window_to_frame (event.xexpose.window),
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3013 event.xexpose.x, event.xexpose.y,
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3014 event.xexpose.width, event.xexpose.height);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3015 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3016 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3017 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3018 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3019 struct scroll_bar *bar
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3020 = x_window_to_scroll_bar (event.xexpose.window);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3021
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3022 if (bar)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3023 x_scroll_bar_expose (bar, &event);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3024 }
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3025
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3026 UNBLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3027 }
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3028
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3029
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3030 /* The main X event-reading loop - XTread_socket. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3031
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3032 /* Timestamp of enter window event. This is only used by XTread_socket,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3033 but we have to put it out here, since static variables within functions
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3034 sometimes don't work. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3035 static Time enter_timestamp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3036
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3037 /* This holds the state XLookupString needs to implement dead keys
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3038 and other tricks known as "compose processing". _X Window System_
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3039 says that a portable program can't use this, but Stephen Gildea assures
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3040 me that letting the compiler initialize it to zeros will work okay.
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3041
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3042 This must be defined outside of XTread_socket, for the same reasons
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3043 given for enter_timestamp, above. */
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3044 static XComposeStatus compose_status;
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3045
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3046 /* Communication with window managers. */
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3047 Atom Xatom_wm_protocols;
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3048
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3049 /* Kinds of protocol things we may receive. */
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3050 Atom Xatom_wm_take_focus;
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3051 Atom Xatom_wm_save_yourself;
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3052 Atom Xatom_wm_delete_window;
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3053
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3054 /* Other WM communication */
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3055 Atom Xatom_wm_configure_denied; /* When our config request is denied */
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3056 Atom Xatom_wm_window_moved; /* When the WM moves us. */
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3057
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3058 /* Window manager communication. */
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3059 Atom Xatom_wm_change_state;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3060
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3061 /* Record the last 100 characters stored
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3062 to help debug the loss-of-chars-during-GC problem. */
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3063 int temp_index;
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3064 short temp_buffer[100];
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3065
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3066 /* Read events coming from the X server.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3067 This routine is called by the SIGIO handler.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3068 We return as soon as there are no more events to be read.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3069
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3070 Events representing keys are stored in buffer BUFP,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3071 which can hold up to NUMCHARS characters.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3072 We return the number of characters stored into the buffer,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3073 thus pretending to be `read'.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3074
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3075 WAITP is nonzero if we should block until input arrives.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3076 EXPECTED is nonzero if the caller knows input is available. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3077
1530
a7f8a1fe258e * xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents: 1436
diff changeset
3078 int
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3079 XTread_socket (sd, bufp, numchars, waitp, expected)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3080 register int sd;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3081 register struct input_event *bufp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3082 register int numchars;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3083 int waitp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3084 int expected;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3085 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3086 int count = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3087 int nbytes = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3088 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3089 int items_pending; /* How many items are in the X queue. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3090 XEvent event;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3091 struct frame *f;
3938
83d870a52936 * xterm.c (XTread_socket): Initialize event_found to zero, and
Jim Blandy <jimb@redhat.com>
parents: 3924
diff changeset
3092 int event_found = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3093 int prefix;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3094 Lisp_Object part;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3095
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3096 if (interrupt_input_blocked)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3097 {
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3098 interrupt_input_pending = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3099 return -1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3100 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3101
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3102 interrupt_input_pending = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3103 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3104
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3105 if (numchars <= 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3106 abort (); /* Don't think this happens. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3107
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3108 #ifdef FIOSNBIO
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3109 /* If available, Xlib uses FIOSNBIO to make the socket
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3110 non-blocking, and then looks for EWOULDBLOCK. If O_NDELAY is set,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3111 FIOSNBIO is ignored, and instead of signalling EWOULDBLOCK,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3112 a read returns 0, which Xlib interprets as equivalent to EPIPE. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3113 fcntl (fileno (stdin), F_SETFL, 0);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3114 #endif /* ! defined (FIOSNBIO) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3115
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3116 #ifndef SIGIO
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3117 #ifndef HAVE_SELECT
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3118 if (! (fcntl (fileno (stdin), F_GETFL, 0) & O_NDELAY))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3119 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3120 extern int read_alarm_should_throw;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3121 read_alarm_should_throw = 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3122 XPeekEvent (XDISPLAY &event);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3123 read_alarm_should_throw = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3124 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3125 #endif /* HAVE_SELECT */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3126 #endif /* SIGIO */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3127
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3128 while (XStuffPending () != 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3129 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3130 XNextEvent (XDISPLAY &event);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3131 event_found = 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3132
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3133 switch (event.type)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3134 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3135 #ifdef HAVE_X11
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3136 case ClientMessage:
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3137 {
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3138 if (event.xclient.message_type == Xatom_wm_protocols
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3139 && event.xclient.format == 32)
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3140 {
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3141 if (event.xclient.data.l[0] == Xatom_wm_take_focus)
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3142 {
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3143 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3144 /* f = x_any_window_to_frame (event.xclient.window); */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3145 f = x_window_to_frame (event.xclient.window);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3146 #else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3147 f = x_window_to_frame (event.xclient.window);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3148 #endif
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3149 if (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3150 x_focus_on_frame (f);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3151 /* Not certain about handling scroll bars here */
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3152 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3153 else if (event.xclient.data.l[0] == Xatom_wm_save_yourself)
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3154 {
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3155 /* Save state modify the WM_COMMAND property to
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3156 something which can reinstate us. This notifies
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3157 the session manager, who's looking for such a
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3158 PropertyNotify. Can restart processing when
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3159 a keyboard or mouse event arrives. */
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3160 if (numchars > 0)
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3161 {
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3162 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3163 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3164 else if (event.xclient.data.l[0] == Xatom_wm_delete_window)
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3165 {
6114
b69bdef4f7f6 (XTread_socket): For case ClientMessage and Xatom_wm_delete_window, use
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6088
diff changeset
3166 struct frame *f = x_any_window_to_frame (event.xclient.window);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3167
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3168 if (f)
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3169 {
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3170 if (numchars == 0)
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3171 abort ();
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3172
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3173 bufp->kind = delete_window_event;
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3174 XSET (bufp->frame_or_window, Lisp_Frame, f);
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3175 bufp++;
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3176
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3177 count += 1;
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3178 numchars -= 1;
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3179 }
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3180 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3181 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3182 else if (event.xclient.message_type == Xatom_wm_configure_denied)
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3183 {
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3184 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3185 else if (event.xclient.message_type == Xatom_wm_window_moved)
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3186 {
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3187 int new_x, new_y;
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3188 struct frame *f = x_window_to_frame (event.xclient.window);
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3189
786
22b760626b36 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
3190 new_x = event.xclient.data.s[0];
22b760626b36 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
3191 new_y = event.xclient.data.s[1];
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3192
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3193 if (f)
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3194 {
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3195 f->display.x->left_pos = new_x;
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3196 f->display.x->top_pos = new_y;
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3197 }
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3198 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3199 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3200 break;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3201
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3202 #ifdef NEW_SELECTIONS
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3203 case SelectionNotify:
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3204 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3205 if (x_window_to_frame (event.xselection.requestor))
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3206 x_handle_selection_notify (&event);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3207 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3208 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3209 #else /* not USE_X_TOOLKIT */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3210 x_handle_selection_notify (&event);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3211 #endif /* not USE_X_TOOLKIT */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3212 break;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3213 #endif /* NEW_SELECTIONS */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3214
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3215 case SelectionClear: /* Someone has grabbed ownership. */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3216 #ifdef NEW_SELECTIONS
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3217 {
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3218 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3219 if (x_window_to_frame (event.xselectionclear.window))
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3220 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3221 #endif /* USE_X_TOOLKIT */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3222 XSelectionClearEvent *eventp = (XSelectionClearEvent *) &event;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3223
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3224 if (numchars == 0)
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3225 abort ();
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3226
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3227 bufp->kind = selection_clear_event;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3228 SELECTION_EVENT_DISPLAY (bufp) = eventp->display;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3229 SELECTION_EVENT_SELECTION (bufp) = eventp->selection;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3230 SELECTION_EVENT_TIME (bufp) = eventp->time;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3231 bufp++;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3232
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3233 count += 1;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3234 numchars -= 1;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3235 #ifdef USE_X_TOOLKIT
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3236 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3237 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3238 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3239 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3240 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3241 #else /* not NEW_SELECTIONS */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3242 x_disown_selection (event.xselectionclear.window,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3243 event.xselectionclear.selection,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3244 event.xselectionclear.time);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3245 #endif /* not NEW_SELECTIONS */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3246 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3247
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3248 case SelectionRequest: /* Someone wants our selection. */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3249 #ifdef NEW_SELECTIONS
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3250 {
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3251 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3252 if (x_window_to_frame (event.xselectionrequest.owner))
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3253 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3254 #endif /* USE_X_TOOLKIT */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3255 XSelectionRequestEvent *eventp = (XSelectionRequestEvent *) &event;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3256
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3257 if (numchars == 0)
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3258 abort ();
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3259
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3260 bufp->kind = selection_request_event;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3261 SELECTION_EVENT_DISPLAY (bufp) = eventp->display;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3262 SELECTION_EVENT_REQUESTOR (bufp) = eventp->requestor;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3263 SELECTION_EVENT_SELECTION (bufp) = eventp->selection;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3264 SELECTION_EVENT_TARGET (bufp) = eventp->target;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3265 SELECTION_EVENT_PROPERTY (bufp) = eventp->property;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3266 SELECTION_EVENT_TIME (bufp) = eventp->time;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3267 bufp++;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3268
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3269 count += 1;
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3270 numchars -= 1;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3271 #ifdef USE_X_TOOLKIT
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3272 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3273 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3274 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3275 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3276 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3277 #else /* not NEW_SELECTIONS */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3278 x_answer_selection_request (event);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3279 #endif /* not NEW_SELECTIONS */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3280 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3281
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3282 case PropertyNotify:
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3283 #ifdef NEW_SELECTIONS
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3284 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3285 if (x_any_window_to_frame (event.xproperty.window))
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3286 x_handle_property_notify (&event);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3287 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3288 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3289 #else /* not USE_X_TOOLKIT */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
3290 x_handle_property_notify (&event);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3291 #endif /* not USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3292 #else /* not NEW_SELECTIONS */
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3293 /* If we're being told about a root window property, then it's
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3294 a cut buffer change. */
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3295 if (event.xproperty.window == ROOT_WINDOW)
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3296 x_invalidate_cut_buffer_cache (&event.xproperty);
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3297
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3298 /* Otherwise, we're probably handling an incremental
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3299 selection transmission. */
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3300 else
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3301 {
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3302 /* If we were to do this synchronously, there'd be no worry
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3303 about re-selecting. */
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3304 x_send_incremental (event);
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
3305 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3306 #endif /* not NEW_SELECTIONS */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3307 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3308
3045
0267fb20b0df (XTread_socket, ConfigureNotify case):
Richard M. Stallman <rms@gnu.org>
parents: 3030
diff changeset
3309 case ReparentNotify:
0267fb20b0df (XTread_socket, ConfigureNotify case):
Richard M. Stallman <rms@gnu.org>
parents: 3030
diff changeset
3310 f = x_window_to_frame (event.xreparent.window);
0267fb20b0df (XTread_socket, ConfigureNotify case):
Richard M. Stallman <rms@gnu.org>
parents: 3030
diff changeset
3311 if (f)
0267fb20b0df (XTread_socket, ConfigureNotify case):
Richard M. Stallman <rms@gnu.org>
parents: 3030
diff changeset
3312 f->display.x->parent_desc = event.xreparent.parent;
0267fb20b0df (XTread_socket, ConfigureNotify case):
Richard M. Stallman <rms@gnu.org>
parents: 3030
diff changeset
3313 break;
0267fb20b0df (XTread_socket, ConfigureNotify case):
Richard M. Stallman <rms@gnu.org>
parents: 3030
diff changeset
3314
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3315 case Expose:
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3316 f = x_window_to_frame (event.xexpose.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3317 if (f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3318 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3319 if (f->async_visible == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3320 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3321 f->async_visible = 1;
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3322 f->async_iconified = 0;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3323 SET_FRAME_GARBAGED (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3324 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3325 else
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3326 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3327 dumprectangle (x_window_to_frame (event.xexpose.window),
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3328 event.xexpose.x, event.xexpose.y,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3329 event.xexpose.width, event.xexpose.height);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3330 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3331 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3332 else
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3333 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3334 struct scroll_bar *bar
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3335 = x_window_to_scroll_bar (event.xexpose.window);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3336
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3337 if (bar)
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3338 x_scroll_bar_expose (bar, &event);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3339 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3340 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3341 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3342 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3343 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3344 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3345
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3346 case GraphicsExpose: /* This occurs when an XCopyArea's
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3347 source area was obscured or not
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3348 available.*/
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3349 f = x_window_to_frame (event.xgraphicsexpose.drawable);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3350 if (f)
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3351 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3352 dumprectangle (f,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3353 event.xgraphicsexpose.x, event.xgraphicsexpose.y,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3354 event.xgraphicsexpose.width,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3355 event.xgraphicsexpose.height);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3356 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3357 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3358 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3359 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3360 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3361 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3362
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3363 case NoExpose: /* This occurs when an XCopyArea's
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3364 source area was completely
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3365 available */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3366 break;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3367 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3368 case ExposeWindow:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3369 if (event.subwindow != 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3370 break; /* duplicate event */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3371 f = x_window_to_frame (event.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3372 if (event.window == f->display.x->icon_desc)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3373 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3374 refreshicon (f);
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3375 f->async_iconified = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3376 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3377 if (event.window == FRAME_X_WINDOW (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3378 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3379 /* Say must check all windows' needs_exposure flags. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3380 expose_all_windows = 1;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3381 f->display.x->needs_exposure = 1;
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3382 f->async_visible = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3383 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3384 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3385
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3386 case ExposeRegion:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3387 if (event.subwindow != 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3388 break; /* duplicate event */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3389 f = x_window_to_frame (event.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3390 if (event.window == f->display.x->icon_desc)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3391 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3392 refreshicon (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3393 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3394 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3395 /* If window already needs full redraw, ignore this rectangle. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3396 if (expose_all_windows && f->display.x->needs_exposure)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3397 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3398 /* Put the event on the queue of rectangles to redraw. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3399 if (enqueue_event (&event, &x_expose_queue))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3400 /* If it is full, we can't record the rectangle,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3401 so redraw this entire window. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3402 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3403 /* Say must check all windows' needs_exposure flags. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3404 expose_all_windows = 1;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3405 f->display.x->needs_exposure = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3406 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3407 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3408
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3409 case ExposeCopy:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3410 /* This should happen only when we are expecting it,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3411 in x_read_exposes. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3412 abort ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3413 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3414
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3415 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3416 case UnmapNotify:
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3417 f = x_window_to_frame (event.xunmap.window);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3418 if (f) /* F may no longer exist if
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3419 the frame was deleted. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3420 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3421 /* While a frame is unmapped, display generation is
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3422 disabled; you don't want to spend time updating a
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3423 display that won't ever be seen. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3424 f->async_visible = 0;
3284
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
3425 /* The window manager never makes a window invisible
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
3426 ("withdrawn"); all it does is switch between visible
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
3427 and iconified. Frames get into the invisible state
4147
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
3428 only through x_make_frame_invisible. */
3284
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
3429 if (FRAME_VISIBLE_P (f) || FRAME_ICONIFIED_P (f))
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
3430 f->async_iconified = 1;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3431 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3432 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3433 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3434 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3435 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3436
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3437 case MapNotify:
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3438 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3439 f = x_any_window_to_frame (event.xmap.window);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3440 #else /* not USE_X_TOOLKIT */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3441 f = x_window_to_frame (event.xmap.window);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3442 #endif /* not USE_X_TOOLKIT */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3443 if (f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3444 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3445 f->async_visible = 1;
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3446 f->async_iconified = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3447
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3448 /* wait_reading_process_input will notice this and update
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3449 the frame's display structures. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3450 SET_FRAME_GARBAGED (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3451 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3452 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3453 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3454 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3455 break;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3456
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3457 /* Turn off processing if we become fully obscured. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3458 case VisibilityNotify:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3459 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3460
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3461 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3462 case UnmapWindow:
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3463 f = x_window_to_frame (event.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3464 if (event.window == f->display.x->icon_desc)
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3465 f->async_iconified = 0;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3466 if (event.window == FRAME_X_WINDOW (f))
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
3467 f->async_visible = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3468 break;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3469 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3470
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3471 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3472 case KeyPress:
6010
1f9f36411af8 (XTread_socket--cases KeyPress, EnterNotify, LeaveNotify)
Richard M. Stallman <rms@gnu.org>
parents: 5987
diff changeset
3473 f = x_any_window_to_frame (event.xkey.window);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3474
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3475 if (f != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3476 {
3355
e0c2e8a2ef75 (XTread_socket, case KeyPress) [HPUX]: Test IsModifiedKey.
Richard M. Stallman <rms@gnu.org>
parents: 3284
diff changeset
3477 KeySym keysym, orig_keysym;
5018
14f3c98a5cc1 (XTread_socket): Increase length of copy_buffer to 81.
Richard M. Stallman <rms@gnu.org>
parents: 4974
diff changeset
3478 /* al%imercury@uunet.uu.net says that making this 81 instead of
14f3c98a5cc1 (XTread_socket): Increase length of copy_buffer to 81.
Richard M. Stallman <rms@gnu.org>
parents: 4974
diff changeset
3479 80 fixed a bug whereby meta chars made his Emacs hang. */
14f3c98a5cc1 (XTread_socket): Increase length of copy_buffer to 81.
Richard M. Stallman <rms@gnu.org>
parents: 4974
diff changeset
3480 unsigned char copy_buffer[81];
1841
338e4ffdb54b (XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
3481 int modifiers;
338e4ffdb54b (XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
3482
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
3483 event.xkey.state
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
3484 |= x_emacs_to_x_modifiers (extra_keyboard_modifiers);
1841
338e4ffdb54b (XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
3485 modifiers = event.xkey.state;
555
e09a318cf838 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 517
diff changeset
3486
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3487 /* This will have to go some day... */
2881
11eced50eaa6 * xterm.c (XTread_socket): Turn off ControlMask for XLookupString.
Jim Blandy <jimb@redhat.com>
parents: 2840
diff changeset
3488
11eced50eaa6 * xterm.c (XTread_socket): Turn off ControlMask for XLookupString.
Jim Blandy <jimb@redhat.com>
parents: 2840
diff changeset
3489 /* make_lispy_event turns chars into control chars.
11eced50eaa6 * xterm.c (XTread_socket): Turn off ControlMask for XLookupString.
Jim Blandy <jimb@redhat.com>
parents: 2840
diff changeset
3490 Don't do it here because XLookupString is too eager. */
11eced50eaa6 * xterm.c (XTread_socket): Turn off ControlMask for XLookupString.
Jim Blandy <jimb@redhat.com>
parents: 2840
diff changeset
3491 event.xkey.state &= ~ControlMask;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3492 nbytes =
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3493 XLookupString (&event.xkey, copy_buffer, 80, &keysym,
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3494 &compose_status);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3495
395
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
3496 /* Strip off the vendor-specific keysym bit, and take a shot
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
3497 at recognizing the codes. HP servers have extra keysyms
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
3498 that fit into the MiscFunctionKey category. */
3355
e0c2e8a2ef75 (XTread_socket, case KeyPress) [HPUX]: Test IsModifiedKey.
Richard M. Stallman <rms@gnu.org>
parents: 3284
diff changeset
3499 orig_keysym = keysym;
395
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
3500 keysym &= ~(1<<28);
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
3501
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3502 if (numchars > 1)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3503 {
3839
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3504 if (((keysym >= XK_BackSpace && keysym <= XK_Escape)
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3505 || keysym == XK_Delete
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3506 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3507 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */
3218
0069a30d083f (XTread_socket, case KeyPress) [HPUX]:
Richard M. Stallman <rms@gnu.org>
parents: 3135
diff changeset
3508 #ifdef HPUX
3839
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3509 /* This recognizes the "extended function keys".
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3510 It seems there's no cleaner way.
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3511 Test IsModifierKey to avoid handling mode_switch
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3512 incorrectly. */
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3513 || ((unsigned) (keysym) >= XK_Select
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3514 && (unsigned)(keysym) < XK_KP_Space)
3218
0069a30d083f (XTread_socket, case KeyPress) [HPUX]:
Richard M. Stallman <rms@gnu.org>
parents: 3135
diff changeset
3515 #endif
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3516 #ifdef XK_dead_circumflex
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3517 || orig_keysym == XK_dead_circumflex
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3518 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3519 #ifdef XK_dead_grave
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3520 || orig_keysym == XK_dead_grave
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3521 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3522 #ifdef XK_dead_tilde
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3523 || orig_keysym == XK_dead_tilde
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3524 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3525 #ifdef XK_dead_diaeresis
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3526 || orig_keysym == XK_dead_diaeresis
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3527 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3528 #ifdef XK_dead_macron
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3529 || orig_keysym == XK_dead_macron
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3530 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3531 #ifdef XK_dead_degree
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3532 || orig_keysym == XK_dead_degree
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3533 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3534 #ifdef XK_dead_acute
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3535 || orig_keysym == XK_dead_acute
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3536 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3537 #ifdef XK_dead_cedilla
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3538 || orig_keysym == XK_dead_cedilla
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3539 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3540 #ifdef XK_dead_breve
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3541 || orig_keysym == XK_dead_breve
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3542 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3543 #ifdef XK_dead_ogonek
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3544 || orig_keysym == XK_dead_ogonek
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3545 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3546 #ifdef XK_dead_caron
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3547 || orig_keysym == XK_dead_caron
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3548 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3549 #ifdef XK_dead_doubleacute
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3550 || orig_keysym == XK_dead_doubleacute
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3551 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3552 #ifdef XK_dead_abovedot
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3553 || orig_keysym == XK_dead_abovedot
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3554 #endif
3839
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3555 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3556 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */
3cc238ae0de5 * xterm.c (XTread_socket): Never treat a modifier key as a
Jim Blandy <jimb@redhat.com>
parents: 3710
diff changeset
3557 || x_is_vendor_fkey (orig_keysym))
4244
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3558 && ! (IsModifierKey (orig_keysym)
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3559 #ifndef HAVE_X11R5
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3560 #ifdef XK_Mode_switch
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3561 || ((unsigned)(orig_keysym) == XK_Mode_switch)
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3562 #endif
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3563 #ifdef XK_Num_Lock
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3564 || ((unsigned)(orig_keysym) == XK_Num_Lock)
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3565 #endif
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3566 #endif /* not HAVE_X11R5 */
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3567 ))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3568 {
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3569 if (temp_index == sizeof temp_buffer / sizeof (short))
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3570 temp_index = 0;
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3571 temp_buffer[temp_index++] = keysym;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3572 bufp->kind = non_ascii_keystroke;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3573 bufp->code = keysym;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3574 XSET (bufp->frame_or_window, Lisp_Frame, f);
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
3575 bufp->modifiers = x_x_to_emacs_modifiers (modifiers);
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
3576 bufp->timestamp = event.xkey.time;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3577 bufp++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3578 count++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3579 numchars--;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3580 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3581 else if (numchars > nbytes)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3582 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3583 register int i;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3584
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3585 for (i = 0; i < nbytes; i++)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3586 {
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3587 if (temp_index == sizeof temp_buffer / sizeof (short))
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3588 temp_index = 0;
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3589 temp_buffer[temp_index++] = copy_buffer[i];
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3590 bufp->kind = ascii_keystroke;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3591 bufp->code = copy_buffer[i];
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3592 XSET (bufp->frame_or_window, Lisp_Frame, f);
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
3593 bufp->modifiers = x_x_to_emacs_modifiers (modifiers);
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
3594 bufp->timestamp = event.xkey.time;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3595 bufp++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3596 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3597
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3598 count += nbytes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3599 numchars -= nbytes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3600 }
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3601 else
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3602 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3603 }
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3604 else
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3605 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3606 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3607 break;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3608 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3609 case KeyPressed:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3610 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3611 register char *where_mapping;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3612
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3613 f = x_window_to_frame (event.window);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3614 /* Ignore keys typed on icon windows. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3615 if (f != 0 && event.window == f->display.x->icon_desc)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3616 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3617 where_mapping = XLookupMapping (&event, &nbytes);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3618 /* Nasty fix for arrow keys */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3619 if (!nbytes && IsCursorKey (event.detail & 0xff))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3620 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3621 switch (event.detail & 0xff)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3622 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3623 case KC_CURSOR_LEFT:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3624 where_mapping = "\002";
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3625 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3626 case KC_CURSOR_RIGHT:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3627 where_mapping = "\006";
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3628 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3629 case KC_CURSOR_UP:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3630 where_mapping = "\020";
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3631 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3632 case KC_CURSOR_DOWN:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3633 where_mapping = "\016";
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3634 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3635 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3636 nbytes = 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3637 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3638 if (numchars - nbytes > 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3639 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3640 register int i;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3641
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3642 for (i = 0; i < nbytes; i++)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3643 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3644 bufp->kind = ascii_keystroke;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3645 bufp->code = where_mapping[i];
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
3646 XSET (bufp->time, Lisp_Int, event.xkey.time);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3647 XSET (bufp->frame_or_window, Lisp_Frame, f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3648 bufp++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3649 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3650 count += nbytes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3651 numchars -= nbytes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3652 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3653 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3654 break;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3655 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3656
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3657 #ifdef HAVE_X11
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3658
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3659 /* Here's a possible interpretation of the whole
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3660 FocusIn-EnterNotify FocusOut-LeaveNotify mess. If you get a
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3661 FocusIn event, you have to get a FocusOut event before you
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3662 relinquish the focus. If you haven't received a FocusIn event,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3663 then a mere LeaveNotify is enough to free you. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3664
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3665 case EnterNotify:
6010
1f9f36411af8 (XTread_socket--cases KeyPress, EnterNotify, LeaveNotify)
Richard M. Stallman <rms@gnu.org>
parents: 5987
diff changeset
3666 f = x_any_window_to_frame (event.xcrossing.window);
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
3667
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3668 if (event.xcrossing.focus) /* Entered Window */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3669 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3670 /* Avoid nasty pop/raise loops. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3671 if (f && (!(f->auto_raise)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3672 || !(f->auto_lower)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3673 || (event.xcrossing.time - enter_timestamp) > 500))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3674 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3675 x_new_focus_frame (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3676 enter_timestamp = event.xcrossing.time;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3677 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3678 }
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3679 else if (f == x_focus_frame)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3680 x_new_focus_frame (0);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3681 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3682 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3683 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3684 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3685
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3686 case FocusIn:
6010
1f9f36411af8 (XTread_socket--cases KeyPress, EnterNotify, LeaveNotify)
Richard M. Stallman <rms@gnu.org>
parents: 5987
diff changeset
3687 f = x_any_window_to_frame (event.xfocus.window);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3688 if (event.xfocus.detail != NotifyPointer)
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3689 x_focus_event_frame = f;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3690 if (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3691 x_new_focus_frame (f);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3692 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3693 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3694 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3695 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3696
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3697
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3698 case LeaveNotify:
6010
1f9f36411af8 (XTread_socket--cases KeyPress, EnterNotify, LeaveNotify)
Richard M. Stallman <rms@gnu.org>
parents: 5987
diff changeset
3699 f = x_any_window_to_frame (event.xcrossing.window);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3700
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3701 if (f == mouse_face_mouse_frame)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3702 /* If we move outside the frame,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3703 then we're certainly no longer on any text in the frame. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3704 clear_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3705
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3706 if (event.xcrossing.focus)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3707 {
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3708 if (! x_focus_event_frame)
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3709 x_new_focus_frame (0);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3710 else
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3711 x_new_focus_frame (f);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3712 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3713 else
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3714 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3715 if (f == x_focus_event_frame)
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3716 x_focus_event_frame = 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3717 if (f == x_focus_frame)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3718 x_new_focus_frame (0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3719 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3720 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3721 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3722 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3723 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3724
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3725 case FocusOut:
6010
1f9f36411af8 (XTread_socket--cases KeyPress, EnterNotify, LeaveNotify)
Richard M. Stallman <rms@gnu.org>
parents: 5987
diff changeset
3726 f = x_any_window_to_frame (event.xfocus.window);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3727 if (event.xfocus.detail != NotifyPointer
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3728 && f == x_focus_event_frame)
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3729 x_focus_event_frame = 0;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3730 if (f && f == x_focus_frame)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3731 x_new_focus_frame (0);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3732 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3733 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3734 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3735 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3736
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3737 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3738
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3739 case EnterWindow:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3740 if ((event.detail & 0xFF) == 1)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3741 break; /* Coming from our own subwindow */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3742 if (event.subwindow != 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3743 break; /* Entering our own subwindow. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3744
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3745 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3746 f = x_window_to_frame (event.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3747 x_mouse_frame = f;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3748
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3749 x_new_focus_frame (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3750 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3751 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3752
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3753 case LeaveWindow:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3754 if ((event.detail & 0xFF) == 1)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3755 break; /* Entering our own subwindow */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3756 if (event.subwindow != 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3757 break; /* Leaving our own subwindow. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3758
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3759 x_mouse_frame = 0;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3760 if (x_focus_frame == 0
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3761 && x_input_frame != 0
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3762 && x_input_frame == x_window_to_frame (event.window)
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3763 && event.window == FRAME_X_WINDOW (x_input_frame))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3764 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3765 f = x_input_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3766 x_input_frame = 0;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3767 if (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3768 frame_unhighlight (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3769 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3770 break;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3771 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3772
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3773 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3774 case MotionNotify:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3775 {
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3776 if (x_mouse_grabbed)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3777 f = last_mouse_frame;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3778 else
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3779 f = x_window_to_frame (event.xmotion.window);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3780 if (f)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3781 note_mouse_movement (f, &event.xmotion);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3782 else
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3783 {
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3784 struct scroll_bar *bar
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3785 = x_window_to_scroll_bar (event.xmotion.window);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3786
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3787 if (bar)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3788 x_scroll_bar_note_movement (bar, &event);
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3789
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3790 /* If we move outside the frame,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3791 then we're certainly no longer on any text in the frame. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
3792 clear_mouse_face ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3793 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3794 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3795 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3796 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3797 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3798 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3799
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3800 case ConfigureNotify:
6088
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3801 f = x_any_window_to_frame (event.xconfigure.window);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3802 #ifdef USE_X_TOOLKIT
6088
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3803 if (f
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3804 && ! event.xconfigure.send_event
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3805 && (event.xconfigure.window == XtWindow (f->display.x->widget)))
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3806 {
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3807 Window win, child;
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3808 int win_x, win_y;
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3809
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3810 /* Find the position of the outside upper-left corner of
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3811 the window, in the root coordinate system. Don't
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3812 refer to the parent window here; we may be processing
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3813 this event after the window manager has changed our
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3814 parent, but before we have reached the ReparentNotify. */
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3815 XTranslateCoordinates (x_current_display,
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3816
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3817 /* From-window, to-window. */
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3818 XtWindow (f->display.x->widget),
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3819 ROOT_WINDOW,
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3820
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3821 /* From-position, to-position. */
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3822 -event.xconfigure.border_width,
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3823 -event.xconfigure.border_width,
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3824 &win_x, &win_y,
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3825
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3826 /* Child of win. */
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3827 &child);
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3828 event.xconfigure.x = win_x;
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3829 event.xconfigure.y = win_y;
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3830
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3831 f->display.x->pixel_width = event.xconfigure.width;
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3832 f->display.x->pixel_height = event.xconfigure.height;
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3833 f->display.x->left_pos = event.xconfigure.x;
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3834 f->display.x->top_pos = event.xconfigure.y;
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3835 }
8e38fcb2df96 (XTread_socket): For case ConfigureNotify, call x_any_window_to_frame.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6055
diff changeset
3836 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3837 #else /* not USE_X_TOOLKIT */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3838 if (f)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3839 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3840 int rows = PIXEL_TO_CHAR_HEIGHT (f, event.xconfigure.height);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3841 int columns = PIXEL_TO_CHAR_WIDTH (f, event.xconfigure.width);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3842
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3843 /* Even if the number of character rows and columns has
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3844 not changed, the font size may have changed, so we need
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3845 to check the pixel dimensions as well. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3846 if (columns != f->width
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3847 || rows != f->height
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3848 || event.xconfigure.width != f->display.x->pixel_width
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3849 || event.xconfigure.height != f->display.x->pixel_height)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3850 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3851 change_frame_size (f, rows, columns, 0, 1);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3852 SET_FRAME_GARBAGED (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3853 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3854
3045
0267fb20b0df (XTread_socket, ConfigureNotify case):
Richard M. Stallman <rms@gnu.org>
parents: 3030
diff changeset
3855 if (! event.xconfigure.send_event)
3030
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3856 {
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3857 Window win, child;
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3858 int win_x, win_y;
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3859
3951
9da0fb7d815e * xterm.c (XTread_socket): When handing non-synthetic
Jim Blandy <jimb@redhat.com>
parents: 3943
diff changeset
3860 /* Find the position of the outside upper-left corner of
9da0fb7d815e * xterm.c (XTread_socket): When handing non-synthetic
Jim Blandy <jimb@redhat.com>
parents: 3943
diff changeset
3861 the window, in the root coordinate system. Don't
9da0fb7d815e * xterm.c (XTread_socket): When handing non-synthetic
Jim Blandy <jimb@redhat.com>
parents: 3943
diff changeset
3862 refer to the parent window here; we may be processing
9da0fb7d815e * xterm.c (XTread_socket): When handing non-synthetic
Jim Blandy <jimb@redhat.com>
parents: 3943
diff changeset
3863 this event after the window manager has changed our
9da0fb7d815e * xterm.c (XTread_socket): When handing non-synthetic
Jim Blandy <jimb@redhat.com>
parents: 3943
diff changeset
3864 parent, but before we have reached the ReparentNotify. */
3030
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3865 XTranslateCoordinates (x_current_display,
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3866
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3867 /* From-window, to-window. */
3951
9da0fb7d815e * xterm.c (XTread_socket): When handing non-synthetic
Jim Blandy <jimb@redhat.com>
parents: 3943
diff changeset
3868 f->display.x->window_desc,
3045
0267fb20b0df (XTread_socket, ConfigureNotify case):
Richard M. Stallman <rms@gnu.org>
parents: 3030
diff changeset
3869 ROOT_WINDOW,
3030
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3870
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3871 /* From-position, to-position. */
3951
9da0fb7d815e * xterm.c (XTread_socket): When handing non-synthetic
Jim Blandy <jimb@redhat.com>
parents: 3943
diff changeset
3872 -event.xconfigure.border_width,
9da0fb7d815e * xterm.c (XTread_socket): When handing non-synthetic
Jim Blandy <jimb@redhat.com>
parents: 3943
diff changeset
3873 -event.xconfigure.border_width,
3030
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3874 &win_x, &win_y,
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3875
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3876 /* Child of win. */
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3877 &child);
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3878 event.xconfigure.x = win_x;
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3879 event.xconfigure.y = win_y;
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3880 }
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3881
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3882 f->display.x->pixel_width = event.xconfigure.width;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3883 f->display.x->pixel_height = event.xconfigure.height;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3884 f->display.x->left_pos = event.xconfigure.x;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3885 f->display.x->top_pos = event.xconfigure.y;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3886 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3887 #endif /* not USE_X_TOOLKIT */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3888 break;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3889
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3890 case ButtonPress:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3891 case ButtonRelease:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3892 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3893 /* If we decide we want to generate an event to be seen
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3894 by the rest of Emacs, we put it here. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3895 struct input_event emacs_event;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3896 emacs_event.kind = no_event;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3897
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3898 f = x_window_to_frame (event.xbutton.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3899 if (f)
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3900 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3901 if (!x_focus_frame || (f == x_focus_frame))
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3902 construct_mouse_click (&emacs_event, &event, f);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3903 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3904 else
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3905 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3906 struct scroll_bar *bar =
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3907 x_window_to_scroll_bar (event.xbutton.window);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3908
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3909 if (bar)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3910 x_scroll_bar_handle_click (bar, &event, &emacs_event);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3911 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3912 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3913 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3914 f = x_any_window_to_frame (event.xbutton.window);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3915 if (f && event.type == ButtonPress)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3916 construct_menu_click (&emacs_event,
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3917 &event, f);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3918 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3919 #endif /* USE_X_TOOLKIT */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3920 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3921
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3922 if (numchars >= 1 && emacs_event.kind != no_event)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3923 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3924 bcopy (&emacs_event, bufp, sizeof (struct input_event));
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3925 bufp++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3926 count++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3927 numchars--;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3928 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3929
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3930 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3931 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3932 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3933 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3934 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3935
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3936 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3937 case ButtonPressed:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3938 case ButtonReleased:
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3939 f = x_window_to_frame (event.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3940 if (f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3941 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3942 if (event.window == f->display.x->icon_desc)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3943 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3944 x_make_frame_visible (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3945
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3946 if (warp_mouse_on_deiconify)
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3947 XWarpMouse (FRAME_X_WINDOW (f), 10, 10);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3948 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3949 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3950 if (event.window == FRAME_X_WINDOW (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3951 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3952 if (f->auto_raise)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3953 x_raise_frame (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3954 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3955 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3956 enqueue_event (&event, &x_mouse_queue);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3957 if (numchars >= 2)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3958 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3959 bufp->kind = ascii_keystroke;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3960 bufp->code = 'X' & 037; /* C-x */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3961 XSET (bufp->frame_or_window, Lisp_Frame, f);
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
3962 XSET (bufp->time, Lisp_Int, event.xkey.time);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3963 bufp++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3964
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3965 bufp->kind = ascii_keystroke;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3966 bufp->code = 0; /* C-@ */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3967 XSET (bufp->frame_or_window, Lisp_Frame, f);
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
3968 XSET (bufp->time, Lisp_Int, event.xkey.time);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3969 bufp++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3970
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3971 count += 2;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3972 numchars -= 2;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3973 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3974 break;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3975 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3976
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3977 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3978
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3979 case CirculateNotify:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3980 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3981 case CirculateRequest:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3982 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3983
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3984 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3985
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3986 case MappingNotify:
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3987 /* Someone has changed the keyboard mapping - update the
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3988 local cache. */
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3989 switch (event.xmapping.request)
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3990 {
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3991 case MappingModifier:
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3992 x_find_modifier_meanings ();
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3993 /* This is meant to fall through. */
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3994 case MappingKeyboard:
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3995 XRefreshKeyboardMapping (&event.xmapping);
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3996 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3997 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3998 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3999 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4000 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4001
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4002 default:
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4003 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4004 OTHER:
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4005 BLOCK_INPUT;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4006 XtDispatchEvent (&event);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4007 UNBLOCK_INPUT;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4008 #endif /* USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4009 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4010 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4011 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4012
5753
eb44ecad5557 (XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 5740
diff changeset
4013 #ifdef X_IO_BUG
eb44ecad5557 (XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 5740
diff changeset
4014 if (! event_found)
eb44ecad5557 (XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 5740
diff changeset
4015 /* On some systems, an X bug causes Emacs to get no more events
5953
60f711724bc9 (XTread_socket): Do not assume that select returning
Richard M. Stallman <rms@gnu.org>
parents: 5916
diff changeset
4016 when the window is destroyed. Detect that. (1994.) */
5753
eb44ecad5557 (XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 5740
diff changeset
4017 XNoOp (x_current_display);
eb44ecad5557 (XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 5740
diff changeset
4018 #endif /* X_IO_BUG */
eb44ecad5557 (XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 5740
diff changeset
4019
5953
60f711724bc9 (XTread_socket): Do not assume that select returning
Richard M. Stallman <rms@gnu.org>
parents: 5916
diff changeset
4020 #if 0 /* This fails for serial-line connections to the X server,
60f711724bc9 (XTread_socket): Do not assume that select returning
Richard M. Stallman <rms@gnu.org>
parents: 5916
diff changeset
4021 because the characters arrive one by one, and a partial
60f711724bc9 (XTread_socket): Do not assume that select returning
Richard M. Stallman <rms@gnu.org>
parents: 5916
diff changeset
4022 command makes select return but gives nothing to read.
60f711724bc9 (XTread_socket): Do not assume that select returning
Richard M. Stallman <rms@gnu.org>
parents: 5916
diff changeset
4023 We'll have to hope that the bug that this tried to fix
60f711724bc9 (XTread_socket): Do not assume that select returning
Richard M. Stallman <rms@gnu.org>
parents: 5916
diff changeset
4024 in 1988 has been fixed in Xlib or the X server. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4025 #ifdef HAVE_SELECT
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4026 if (expected && ! event_found)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4027 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4028 /* AOJ 880406: if select returns true but XPending doesn't, it means that
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4029 there is an EOF condition; in other words, that X has died.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4030 Act as if there had been a hangup. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4031 int fd = ConnectionNumber (x_current_display);
5357
b36dfc938ba4 (XTread_socket): Make proper junk values to pass to select.
Richard M. Stallman <rms@gnu.org>
parents: 5354
diff changeset
4032 SELECT_TYPE mask, junk1, junk2;
3938
83d870a52936 * xterm.c (XTread_socket): Initialize event_found to zero, and
Jim Blandy <jimb@redhat.com>
parents: 3924
diff changeset
4033 EMACS_TIME timeout;
3924
44fe472b66ba * xterm.c: Add CPP tangle from process.c to get definitions for
Jim Blandy <jimb@redhat.com>
parents: 3890
diff changeset
4034
4683
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
4035 FD_ZERO (&mask);
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
4036 FD_SET (fd, &mask);
3938
83d870a52936 * xterm.c (XTread_socket): Initialize event_found to zero, and
Jim Blandy <jimb@redhat.com>
parents: 3924
diff changeset
4037 EMACS_SET_SECS_USECS (timeout, 0, 0);
5357
b36dfc938ba4 (XTread_socket): Make proper junk values to pass to select.
Richard M. Stallman <rms@gnu.org>
parents: 5354
diff changeset
4038 FD_ZERO (&junk1);
b36dfc938ba4 (XTread_socket): Make proper junk values to pass to select.
Richard M. Stallman <rms@gnu.org>
parents: 5354
diff changeset
4039 FD_ZERO (&junk2);
b36dfc938ba4 (XTread_socket): Make proper junk values to pass to select.
Richard M. Stallman <rms@gnu.org>
parents: 5354
diff changeset
4040 if (0 != select (fd + 1, &mask, &junk1, &junk2, &timeout)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4041 && !XStuffPending ())
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4042 kill (getpid (), SIGHUP);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4043 }
4683
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
4044 #endif /* HAVE_SELECT */
5953
60f711724bc9 (XTread_socket): Do not assume that select returning
Richard M. Stallman <rms@gnu.org>
parents: 5916
diff changeset
4045 #endif /* 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4046
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4047 #ifndef HAVE_X11
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4048 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4049 x_do_pending_expose ();
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4050 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4051
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4052 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4053 return count;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4054 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4055
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4056 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4057 /* Read and process only Expose events
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4058 until we get an ExposeCopy event; then return.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4059 This is used in insert/delete line.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4060 We assume input is already blocked. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4061
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4062 static void
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4063 x_read_exposes ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4064 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4065 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4066 XKeyPressedEvent event;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4067
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4068 while (1)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4069 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4070 /* while there are more events*/
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4071 XMaskEvent (ExposeWindow | ExposeRegion | ExposeCopy, &event);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4072 switch (event.type)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4073 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4074 case ExposeWindow:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4075 if (event.subwindow != 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4076 break; /* duplicate event */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4077 f = x_window_to_frame (event.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4078 if (event.window == f->display.x->icon_desc)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4079 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4080 refreshicon (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4081 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4082 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4083 if (event.window == FRAME_X_WINDOW (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4084 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4085 expose_all_windows = 1;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4086 f->display.x->needs_exposure = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4087 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4088 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4089 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4090
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4091 case ExposeRegion:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4092 if (event.subwindow != 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4093 break; /* duplicate event */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4094 f = x_window_to_frame (event.window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4095 if (event.window == f->display.x->icon_desc)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4096 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4097 refreshicon (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4098 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4099 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4100 /* If window already needs full redraw, ignore this rectangle. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4101 if (expose_all_windows && f->display.x->needs_exposure)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4102 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4103 /* Put the event on the queue of rectangles to redraw. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4104 if (enqueue_event (&event, &x_expose_queue))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4105 /* If it is full, we can't record the rectangle,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4106 so redraw this entire window. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4107 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4108 /* Say must check all windows' needs_exposure flags. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4109 expose_all_windows = 1;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4110 f->display.x->needs_exposure = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4111 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4112 break;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4113
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4114 case ExposeCopy:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4115 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4116 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4117 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4118 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4119 #endif /* HAVE_X11 */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4120
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4121
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4122 /* Drawing the cursor. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4123
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4124
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4125 /* Draw a hollow box cursor. Don't change the inside of the box. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4126
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4127 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4128 x_draw_box (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4129 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4130 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4131 int left = CHAR_TO_PIXEL_COL (f, f->cursor_x);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4132 int top = CHAR_TO_PIXEL_ROW (f, f->cursor_y);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4133 int width = FONT_WIDTH (f->display.x->font);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4134 int height = FONT_HEIGHT (f->display.x->font);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4135
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4136 #ifdef HAVE_X11
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4137 XDrawRectangle (x_current_display, FRAME_X_WINDOW (f),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4138 f->display.x->cursor_gc,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4139 left, top, width - 1, height - 1);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4140 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4141 XPixSet (FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4142 left, top, width, 1,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4143 f->display.x->cursor_pixel);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4144
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4145 XPixSet (FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4146 left, top, 1, height,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4147 f->display.x->cursor_pixel);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4148
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4149 XPixSet (FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4150 left+width-1, top, 1, height,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4151 f->display.x->cursor_pixel);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4152
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4153 XPixSet (FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4154 left, top+height-1, width, 1,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4155 f->display.x->cursor_pixel);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4156 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4157 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4158
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4159 /* Clear the cursor of frame F to background color,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4160 and mark the cursor as not shown.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4161 This is used when the text where the cursor is
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4162 is about to be rewritten. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4163
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4164 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4165 clear_cursor (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4166 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4167 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4168 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4169
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4170 if (! FRAME_VISIBLE_P (f)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4171 || f->phys_cursor_x < 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4172 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4173
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4174 #ifdef HAVE_X11
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4175 x_display_cursor (f, 0);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4176 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4177 XPixSet (FRAME_X_WINDOW (f),
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4178 CHAR_TO_PIXEL_COL (f, f->phys_cursor_x),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4179 CHAR_TO_PIXEL_ROW (f, f->phys_cursor_y),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4180 FONT_WIDTH (f->display.x->font), FONT_HEIGHT (f->display.x->font),
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4181 f->display.x->background_pixel);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4182 #endif /* ! defined (HAVE_X11) */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4183 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4184 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4185
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4186 /* Redraw the glyph at ROW, COLUMN on frame F, in the style
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4187 HIGHLIGHT. HIGHLIGHT is as defined for dumpglyphs. Return the
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4188 glyph drawn. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4189
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4190 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4191 x_draw_single_glyph (f, row, column, glyph, highlight)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4192 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4193 int row, column;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4194 GLYPH glyph;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4195 int highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4196 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4197 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4198 CHAR_TO_PIXEL_COL (f, column),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4199 CHAR_TO_PIXEL_ROW (f, row),
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
4200 &glyph, 1, highlight);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4201 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4202
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4203 static void
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4204 x_display_bar_cursor (f, on)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4205 struct frame *f;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4206 int on;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4207 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4208 struct frame_glyphs *current_glyphs = FRAME_CURRENT_GLYPHS (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4209
2235
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4210 /* This is pointless on invisible frames, and dangerous on garbaged
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4211 frames; in the latter case, the frame may be in the midst of
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4212 changing its size, and curs_x and curs_y may be off the frame. */
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4213 if (! FRAME_VISIBLE_P (f) || FRAME_GARBAGED_P (f))
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4214 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4215
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4216 if (! on && f->phys_cursor_x < 0)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4217 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4218
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4219 /* If we're not updating, then we want to use the current frame's
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4220 cursor position, not our local idea of where the cursor ought to be. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4221 if (f != updating_frame)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4222 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4223 curs_x = FRAME_CURSOR_X (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4224 curs_y = FRAME_CURSOR_Y (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4225 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4226
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4227 /* If there is anything wrong with the current cursor state, remove it. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4228 if (f->phys_cursor_x >= 0
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4229 && (!on
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4230 || f->phys_cursor_x != curs_x
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4231 || f->phys_cursor_y != curs_y
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4232 || f->display.x->current_cursor != bar_cursor))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4233 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4234 /* Erase the cursor by redrawing the character underneath it. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4235 x_draw_single_glyph (f, f->phys_cursor_y, f->phys_cursor_x,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4236 f->phys_cursor_glyph,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4237 current_glyphs->highlight[f->phys_cursor_y]);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4238 f->phys_cursor_x = -1;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4239 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4240
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4241 /* If we now need a cursor in the new place or in the new form, do it so. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4242 if (on
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4243 && (f->phys_cursor_x < 0
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4244 || (f->display.x->current_cursor != bar_cursor)))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4245 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4246 f->phys_cursor_glyph
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4247 = ((current_glyphs->enable[curs_y]
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4248 && curs_x < current_glyphs->used[curs_y])
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4249 ? current_glyphs->glyphs[curs_y][curs_x]
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4250 : SPACEGLYPH);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4251 XFillRectangle (x_current_display, FRAME_X_WINDOW (f),
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4252 f->display.x->cursor_gc,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4253 CHAR_TO_PIXEL_COL (f, curs_x),
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4254 CHAR_TO_PIXEL_ROW (f, curs_y),
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4255 1, FONT_HEIGHT (f->display.x->font));
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4256
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4257 f->phys_cursor_x = curs_x;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4258 f->phys_cursor_y = curs_y;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4259
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4260 f->display.x->current_cursor = bar_cursor;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4261 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4262
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4263 if (updating_frame != f)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4264 XFlushQueue ();
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4265 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4266
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4267
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4268 /* Turn the displayed cursor of frame F on or off according to ON.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4269 If ON is nonzero, where to put the cursor is specified
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4270 by F->cursor_x and F->cursor_y. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4271
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4272 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4273 x_display_box_cursor (f, on)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4274 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4275 int on;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4276 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4277 struct frame_glyphs *current_glyphs = FRAME_CURRENT_GLYPHS (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4278
2235
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4279 /* This is pointless on invisible frames, and dangerous on garbaged
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4280 frames; in the latter case, the frame may be in the midst of
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4281 changing its size, and curs_x and curs_y may be off the frame. */
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4282 if (! FRAME_VISIBLE_P (f) || FRAME_GARBAGED_P (f))
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4283 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4284
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4285 /* If cursor is off and we want it off, return quickly. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4286 if (!on && f->phys_cursor_x < 0)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4287 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4288
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4289 /* If we're not updating, then we want to use the current frame's
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4290 cursor position, not our local idea of where the cursor ought to be. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4291 if (f != updating_frame)
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4292 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4293 curs_x = FRAME_CURSOR_X (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4294 curs_y = FRAME_CURSOR_Y (f);
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4295 }
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4296
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4297 /* If cursor is currently being shown and we don't want it to be
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4298 or it is in the wrong place,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4299 or we want a hollow box and it's not so, (pout!)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4300 erase it. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4301 if (f->phys_cursor_x >= 0
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4302 && (!on
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4303 || f->phys_cursor_x != curs_x
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4304 || f->phys_cursor_y != curs_y
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4305 || (f->display.x->current_cursor != hollow_box_cursor
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4306 && (f != x_highlight_frame))))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4307 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4308 /* Erase the cursor by redrawing the character underneath it. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4309 x_draw_single_glyph (f, f->phys_cursor_y, f->phys_cursor_x,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4310 f->phys_cursor_glyph,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4311 current_glyphs->highlight[f->phys_cursor_y]);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4312 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4313 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4314
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4315 /* If we want to show a cursor,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4316 or we want a box cursor and it's not so,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4317 write it in the right place. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4318 if (on
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4319 && (f->phys_cursor_x < 0
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4320 || (f->display.x->current_cursor != filled_box_cursor
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4321 && f == x_highlight_frame)))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4322 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4323 f->phys_cursor_glyph
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4324 = ((current_glyphs->enable[curs_y]
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4325 && curs_x < current_glyphs->used[curs_y])
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4326 ? current_glyphs->glyphs[curs_y][curs_x]
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4327 : SPACEGLYPH);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4328 if (f != x_highlight_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4329 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4330 x_draw_box (f);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4331 f->display.x->current_cursor = hollow_box_cursor;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4332 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4333 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4334 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4335 x_draw_single_glyph (f, curs_y, curs_x,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4336 f->phys_cursor_glyph, 2);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4337 f->display.x->current_cursor = filled_box_cursor;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4338 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4339
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4340 f->phys_cursor_x = curs_x;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4341 f->phys_cursor_y = curs_y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4342 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4343
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4344 if (updating_frame != f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4345 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4346 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4347
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4348 x_display_cursor (f, on)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4349 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4350 int on;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4351 {
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4352 BLOCK_INPUT;
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4353
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4354 if (FRAME_DESIRED_CURSOR (f) == filled_box_cursor)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4355 x_display_box_cursor (f, on);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4356 else if (FRAME_DESIRED_CURSOR (f) == bar_cursor)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4357 x_display_bar_cursor (f, on);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4358 else
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4359 /* Those are the only two we have implemented! */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4360 abort ();
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4361
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4362 UNBLOCK_INPUT;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4363 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4364
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4365 /* Icons. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4366
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4367 /* Refresh bitmap kitchen sink icon for frame F
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4368 when we get an expose event for it. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4369
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4370 refreshicon (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4371 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4372 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4373 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4374 /* Normally, the window manager handles this function. */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4375 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4376 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4377
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4378 if (f->display.x->icon_bitmap_flag)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4379 XBitmapBitsPut (f->display.x->icon_desc, 0, 0, sink_width, sink_height,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4380 sink_bits, BlackPixel, WHITE_PIX_DEFAULT,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4381 icon_bitmap, GXcopy, AllPlanes);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4382 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4383 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4384 extern struct frame *selected_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4385 struct Lisp_String *str;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4386 unsigned char *string;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4387
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4388 string
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4389 = XSTRING (XBUFFER (XWINDOW (f->selected_window)->buffer)->name)->data;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4390
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4391 if (f->display.x->icon_label != string)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4392 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4393 f->display.x->icon_label = string;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4394 XChangeWindow (f->display.x->icon_desc,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4395 XQueryWidth (string, icon_font_info->id) + 10,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4396 icon_font_info->height + 10);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4397 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4398
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4399 XText (f->display.x->icon_desc, 5, 5, string,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4400 str->size, icon_font_info->id,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4401 BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4402 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4403 XFlushQueue ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4404 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4405 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4406
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4407 /* Make the x-window of frame F use the gnu icon bitmap. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4408
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4409 int
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4410 x_bitmap_icon (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4411 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4412 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4413 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4414 Window icon_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4415
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4416 if (FRAME_X_WINDOW (f) == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4417 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4418
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4419 #ifdef HAVE_X11
3282
a3c8d3866d01 (x_bitmap_icon): Don't free icon_bitmap;
Richard M. Stallman <rms@gnu.org>
parents: 3272
diff changeset
4420 if (! icon_bitmap)
a3c8d3866d01 (x_bitmap_icon): Don't free icon_bitmap;
Richard M. Stallman <rms@gnu.org>
parents: 3272
diff changeset
4421 icon_bitmap =
a3c8d3866d01 (x_bitmap_icon): Don't free icon_bitmap;
Richard M. Stallman <rms@gnu.org>
parents: 3272
diff changeset
4422 XCreateBitmapFromData (x_current_display, FRAME_X_WINDOW (f),
a3c8d3866d01 (x_bitmap_icon): Don't free icon_bitmap;
Richard M. Stallman <rms@gnu.org>
parents: 3272
diff changeset
4423 gnu_bits, gnu_width, gnu_height);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4424 x_wm_set_icon_pixmap (f, icon_bitmap);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4425 f->display.x->icon_bitmap_flag = 1;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4426 #else /* ! defined (HAVE_X11) */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4427 if (f->display.x->icon_desc)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4428 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4429 XClearIconWindow (FRAME_X_WINDOW (f));
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4430 XDestroyWindow (f->display.x->icon_desc);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4431 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4432
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4433 icon_window = XCreateWindow (f->display.x->parent_desc,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4434 0, 0, sink_width, sink_height,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4435 2, WhitePixmap, (Pixmap) NULL);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4436
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4437 if (icon_window == 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4438 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4439
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4440 XSetIconWindow (FRAME_X_WINDOW (f), icon_window);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4441 XSelectInput (icon_window, ExposeWindow | UnmapWindow);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4442
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4443 f->display.x->icon_desc = icon_window;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4444 f->display.x->icon_bitmap_flag = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4445
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4446 if (icon_bitmap == 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4447 icon_bitmap
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4448 = XStoreBitmap (sink_mask_width, sink_mask_height, sink_mask_bits);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4449 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4450
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4451 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4452 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4453
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4454
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4455 /* Make the x-window of frame F use a rectangle with text. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4456
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4457 int
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4458 x_text_icon (f, icon_name)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4459 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4460 char *icon_name;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4461 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4462 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4463 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4464 int width;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4465 Window icon_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4466 char *X_DefaultValue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4467 Bitmap b1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4468
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4469 #ifndef WhitePixel
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4470 #define WhitePixel 1
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4471 #endif /* WhitePixel */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4472
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4473 #ifndef BlackPixel
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4474 #define BlackPixel 0
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4475 #endif /* BlackPixel */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4476 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4477
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4478 if (FRAME_X_WINDOW (f) == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4479 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4480
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4481 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4482 if (icon_name)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4483 f->display.x->icon_label = icon_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4484 else
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4485 if (! f->display.x->icon_label)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4486 f->display.x->icon_label = " *emacs* ";
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4487
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
4488 #if 0
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4489 XSetIconName (x_current_display, FRAME_X_WINDOW (f),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4490 (char *) f->display.x->icon_label);
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
4491 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4492
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4493 f->display.x->icon_bitmap_flag = 0;
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4494 x_wm_set_icon_pixmap (f, 0);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4495 #else /* ! defined (HAVE_X11) */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4496 if (icon_font_info == 0)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4497 icon_font_info
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4498 = XGetFont (XGetDefault (XDISPLAY
2279
012b04efa234 * emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents: 2235
diff changeset
4499 (char *) XSTRING (Vinvocation_name)->data,
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4500 "BodyFont"));
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4501
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4502 if (f->display.x->icon_desc)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4503 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4504 XClearIconWindow (XDISPLAY FRAME_X_WINDOW (f));
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4505 XDestroyWindow (XDISPLAY f->display.x->icon_desc);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4506 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4507
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4508 if (icon_name)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4509 f->display.x->icon_label = (unsigned char *) icon_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4510 else
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4511 if (! f->display.x->icon_label)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4512 f->display.x->icon_label = XSTRING (f->name)->data;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4513
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4514 width = XStringWidth (f->display.x->icon_label, icon_font_info, 0, 0);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4515 icon_window = XCreateWindow (f->display.x->parent_desc,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4516 f->display.x->left_pos,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4517 f->display.x->top_pos,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4518 width + 10, icon_font_info->height + 10,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4519 2, BlackPixmap, WhitePixmap);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4520
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4521 if (icon_window == 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4522 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4523
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4524 XSetIconWindow (FRAME_X_WINDOW (f), icon_window);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4525 XSelectInput (icon_window, ExposeWindow | ExposeRegion | UnmapWindow | ButtonPressed);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4526
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4527 f->display.x->icon_desc = icon_window;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4528 f->display.x->icon_bitmap_flag = 0;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4529 f->display.x->icon_label = 0;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4530 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4531
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4532 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4533 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4534
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4535 /* Handling X errors. */
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4536
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4537 /* Shut down Emacs in an orderly fashion, because of a SIGPIPE on the
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4538 X server's connection, or an error reported via the X protocol. */
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
4539
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4540 static SIGTYPE
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4541 x_connection_closed ()
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4542 {
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4543 if (_Xdebug)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4544 abort ();
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4545
3710
38e8dc7fd1e8 (x_connection_closed): Pass new arg to shut_down_emacs.
Richard M. Stallman <rms@gnu.org>
parents: 3686
diff changeset
4546 shut_down_emacs (0, 1, Qnil);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4547
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4548 exit (70);
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4549 }
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4550
1875
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4551 /* An X error handler which prints an error message and then kills
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4552 Emacs. This is what's normally installed as Xlib's handler for
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4553 protocol errors. */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4554 static int
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4555 x_error_quitter (display, error)
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4556 Display *display;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4557 XErrorEvent *error;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4558 {
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4559 char buf[256];
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4560
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4561 /* Note that there is no real way portable across R3/R4 to get the
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4562 original error handler. */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4563
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4564 XGetErrorText (display, error->error_code, buf, sizeof (buf));
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4565 fprintf (stderr, "X protocol error: %s on protocol request %d\n",
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4566 buf, error->request_code);
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4567
3683
568c8391744d * xterm.c (x_error_quitter, x_io_error_quitter): Remove calls to
Jim Blandy <jimb@redhat.com>
parents: 3669
diff changeset
4568 #if 0
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4569 /* While we're testing Emacs 19, we'll just dump core whenever we
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4570 get an X error, so we can figure out why it happened. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4571 abort ();
3683
568c8391744d * xterm.c (x_error_quitter, x_io_error_quitter): Remove calls to
Jim Blandy <jimb@redhat.com>
parents: 3669
diff changeset
4572 #endif
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4573
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4574 x_connection_closed ();
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4575 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4576
1875
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4577 /* A handler for X IO errors which prints an error message and then
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4578 kills Emacs. This is what is always installed as Xlib's handler
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4579 for I/O errors. */
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4580 static int
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4581 x_io_error_quitter (display)
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4582 Display *display;
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4583 {
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4584 fprintf (stderr, "Connection to X server %s lost.\n",
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4585 XDisplayName (DisplayString (display)));
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4586
3683
568c8391744d * xterm.c (x_error_quitter, x_io_error_quitter): Remove calls to
Jim Blandy <jimb@redhat.com>
parents: 3669
diff changeset
4587 #if 0
1875
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4588 /* While we're testing Emacs 19, we'll just dump core whenever we
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4589 get an X error, so we can figure out why it happened. */
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4590 abort ();
3683
568c8391744d * xterm.c (x_error_quitter, x_io_error_quitter): Remove calls to
Jim Blandy <jimb@redhat.com>
parents: 3669
diff changeset
4591 #endif
1875
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4592
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4593 x_connection_closed ();
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4594 }
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4595
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4596 /* A buffer for storing X error messages. */
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4597 static char *x_caught_error_message;
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4598 #define X_CAUGHT_ERROR_MESSAGE_SIZE 200
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4599
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4600 /* An X error handler which stores the error message in
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4601 x_caught_error_message. This is what's installed when
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4602 x_catch_errors is in effect. */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4603 static int
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4604 x_error_catcher (display, error)
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4605 Display *display;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4606 XErrorEvent *error;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4607 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4608 XGetErrorText (display, error->error_code,
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4609 x_caught_error_message, X_CAUGHT_ERROR_MESSAGE_SIZE);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4610 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4611
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4612
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4613 /* Begin trapping X errors.
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4614
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4615 After calling this function, X protocol errors no longer cause
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4616 Emacs to exit; instead, they are recorded in x_cfc_error_message.
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4617
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4618 Calling x_check_errors signals an Emacs error if an X error has
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4619 occurred since the last call to x_catch_errors or x_check_errors.
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4620
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4621 Calling x_uncatch_errors resumes the normal error handling. */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4622
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4623 void x_catch_errors (), x_check_errors (), x_uncatch_errors ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4624
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4625 void
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4626 x_catch_errors ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4627 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4628 /* Make sure any errors from previous requests have been dealt with. */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4629 XSync (x_current_display, False);
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4630
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4631 /* Set up the error buffer. */
3465
d23de4338f96 (x_catch_errors): Fill in missing array size in cast.
Richard M. Stallman <rms@gnu.org>
parents: 3444
diff changeset
4632 x_caught_error_message
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4633 = (char*) xmalloc (X_CAUGHT_ERROR_MESSAGE_SIZE);
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4634 x_caught_error_message[0] = '\0';
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4635
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4636 /* Install our little error handler. */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4637 XHandleError (x_error_catcher);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4638 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4639
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4640 /* If any X protocol errors have arrived since the last call to
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4641 x_catch_errors or x_check_errors, signal an Emacs error using
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4642 sprintf (a buffer, FORMAT, the x error message text) as the text. */
5986
fdb3959bbaf7 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 5953
diff changeset
4643
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4644 void
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4645 x_check_errors (format)
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4646 char *format;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4647 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4648 /* Make sure to catch any errors incurred so far. */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4649 XSync (x_current_display, False);
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4650
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4651 if (x_caught_error_message[0])
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4652 {
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4653 char buf[X_CAUGHT_ERROR_MESSAGE_SIZE + 56];
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4654
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4655 sprintf (buf, format, x_caught_error_message);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4656 x_uncatch_errors ();
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4657 error (buf);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4658 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4659 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4660
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4661 /* Nonzero if we had any X protocol errors since we did x_catch_errors. */
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4662
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4663 int
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4664 x_had_errors_p ()
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4665 {
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4666 /* Make sure to catch any errors incurred so far. */
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4667 XSync (x_current_display, False);
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4668
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4669 return x_caught_error_message[0] != 0;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4670 }
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4671
5986
fdb3959bbaf7 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 5953
diff changeset
4672 /* Stop catching X protocol errors and let them make Emacs die. */
fdb3959bbaf7 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 5953
diff changeset
4673
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4674 void
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4675 x_uncatch_errors ()
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4676 {
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
4677 xfree (x_caught_error_message);
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4678 x_caught_error_message = 0;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4679 XHandleError (x_error_quitter);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4680 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4681
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4682 #if 0
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4683 static unsigned int x_wire_count;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4684 x_trace_wire ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4685 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4686 fprintf (stderr, "Lib call: %d\n", ++x_wire_count);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4687 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4688 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4689
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4690
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4691 /* Changing the font of the frame. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4692
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4693 /* Set the font of the x-window specified by frame F
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4694 to the font named NEWNAME. This is safe to use
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4695 even before F has an actual x-window. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4696
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4697 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4698
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4699 struct font_info
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4700 {
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4701 XFontStruct *font;
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4702 char *name;
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4703 };
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4704
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4705 /* A table of all the fonts we have already loaded. */
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4706 static struct font_info *x_font_table;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4707
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4708 /* The current capacity of x_font_table. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4709 static int x_font_table_size;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4710
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4711 /* The number of fonts actually stored in x_font_table.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4712 x_font_table[n] is used and valid iff 0 <= n < n_fonts.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4713 0 <= n_fonts <= x_font_table_size. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4714 static int n_fonts;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4715
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4716 Lisp_Object
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4717 x_new_font (f, fontname)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4718 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4719 register char *fontname;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4720 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4721 int already_loaded;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4722 int n_matching_fonts;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4723 XFontStruct *font_info;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4724 char **font_names;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4725
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4726 /* Get a list of all the fonts that match this name. Once we
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4727 have a list of matching fonts, we compare them against the fonts
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4728 we already have by comparing font ids. */
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4729 font_names = (char **) XListFonts (x_current_display, fontname,
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4730 1024, &n_matching_fonts);
3639
70a688f0cdae * xterm.c (x_new_font): If font_names is zero, that's all the
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
4731 /* Apparently it doesn't set n_matching_fonts to zero when it can't
70a688f0cdae * xterm.c (x_new_font): If font_names is zero, that's all the
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
4732 find any matches; font_names == 0 is the only clue. */
70a688f0cdae * xterm.c (x_new_font): If font_names is zero, that's all the
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
4733 if (! font_names)
70a688f0cdae * xterm.c (x_new_font): If font_names is zero, that's all the
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
4734 n_matching_fonts = 0;
70a688f0cdae * xterm.c (x_new_font): If font_names is zero, that's all the
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
4735
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4736 /* Don't just give up if n_matching_fonts is 0.
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4737 Apparently there's a bug on Suns: XListFontsWithInfo can
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4738 fail to find a font, but XLoadQueryFont may still find it. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4739
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4740 /* See if we've already loaded a matching font. */
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4741 already_loaded = -1;
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4742 if (n_matching_fonts != 0)
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4743 {
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4744 int i, j;
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4745
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4746 for (i = 0; i < n_fonts; i++)
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4747 for (j = 0; j < n_matching_fonts; j++)
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4748 if (!strcmp (x_font_table[i].name, font_names[j]))
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4749 {
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4750 already_loaded = i;
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4751 fontname = font_names[j];
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4752 goto found_font;
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4753 }
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4754 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4755 found_font:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4756
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4757 /* If we have, just return it from the table. */
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4758 if (already_loaded >= 0)
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4759 f->display.x->font = x_font_table[already_loaded].font;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4760
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4761 /* Otherwise, load the font and add it to the table. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4762 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4763 {
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4764 int i;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4765 XFontStruct *font;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4766
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4767 /* Try to find a character-cell font in the list. */
3066
039cbddadc51 * xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents: 3045
diff changeset
4768 #if 0
039cbddadc51 * xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents: 3045
diff changeset
4769 /* A laudable goal, but this isn't how to do it. */
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4770 for (i = 0; i < n_matching_fonts; i++)
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4771 if (! font_info[i].per_char)
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4772 break;
3066
039cbddadc51 * xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents: 3045
diff changeset
4773 #else
039cbddadc51 * xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents: 3045
diff changeset
4774 i = 0;
039cbddadc51 * xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents: 3045
diff changeset
4775 #endif
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4776
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4777 /* See comment above. */
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4778 if (n_matching_fonts != 0)
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4779 fontname = font_names[i];
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4780
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4781 font = (XFontStruct *) XLoadQueryFont (x_current_display, fontname);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4782 if (! font)
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4783 {
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4784 /* Free the information from XListFonts. */
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4785 if (n_matching_fonts)
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4786 XFreeFontNames (font_names);
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4787 return Qnil;
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4788 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4789
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4790 /* Do we need to create the table? */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4791 if (x_font_table_size == 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4792 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4793 x_font_table_size = 16;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4794 x_font_table
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4795 = (struct font_info *) xmalloc (x_font_table_size
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4796 * sizeof (x_font_table[0]));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4797 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4798 /* Do we need to grow the table? */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4799 else if (n_fonts >= x_font_table_size)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4800 {
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4801 x_font_table_size *= 2;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4802 x_font_table
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4803 = (struct font_info *) xrealloc (x_font_table,
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4804 (x_font_table_size
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4805 * sizeof (x_font_table[0])));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4806 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4807
4909
74ae77c7d742 (x_new_font): xmalloc arg was 1 too small.
Richard M. Stallman <rms@gnu.org>
parents: 4777
diff changeset
4808 x_font_table[n_fonts].name = (char *) xmalloc (strlen (fontname) + 1);
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4809 bcopy (fontname, x_font_table[n_fonts].name, strlen (fontname) + 1);
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4810 f->display.x->font = x_font_table[n_fonts++].font = font;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4811 }
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4812
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4813 /* Now make the frame display the given font. */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4814 if (FRAME_X_WINDOW (f) != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4815 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4816 XSetFont (x_current_display, f->display.x->normal_gc,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4817 f->display.x->font->fid);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4818 XSetFont (x_current_display, f->display.x->reverse_gc,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4819 f->display.x->font->fid);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4820 XSetFont (x_current_display, f->display.x->cursor_gc,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4821 f->display.x->font->fid);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4822
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4823 x_set_window_size (f, 0, f->width, f->height);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4824 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4825
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4826 {
6521
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
4827 Lisp_Object lispy_name;
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
4828
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
4829 lispy_name = build_string (fontname);
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4830
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4831 /* Free the information from XListFonts. The data
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4832 we actually retain comes from XLoadQueryFont. */
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4833 XFreeFontNames (font_names);
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4834
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4835 return lispy_name;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4836 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4837 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4838 #else /* ! defined (HAVE_X11) */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4839 x_new_font (f, newname)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4840 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4841 register char *newname;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4842 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4843 FONT_TYPE *temp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4844 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4845
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4846 temp = XGetFont (newname);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4847 if (temp == (FONT_TYPE *) 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4848 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4849
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4850 if (f->display.x->font)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4851 XLoseFont (f->display.x->font);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4852
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4853 f->display.x->font = temp;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4854
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4855 if (FRAME_X_WINDOW (f) != 0)
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4856 x_set_window_size (f, 0, f->width, f->height);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4857
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4858 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4859 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4860 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4861
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4862 x_calc_absolute_position (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4863 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4864 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4865 #ifdef HAVE_X11
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4866 Window win, child;
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4867 int win_x = 0, win_y = 0;
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4868
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4869 /* Find the position of the outside upper-left corner of
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4870 the inner window, with respect to the outer window. */
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4871 if (f->display.x->parent_desc != ROOT_WINDOW)
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4872 {
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4873 BLOCK_INPUT;
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4874 XTranslateCoordinates (x_current_display,
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4875
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4876 /* From-window, to-window. */
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4877 f->display.x->window_desc,
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4878 f->display.x->parent_desc,
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4879
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4880 /* From-position, to-position. */
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4881 0, 0, &win_x, &win_y,
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4882
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4883 /* Child of win. */
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4884 &child);
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4885 UNBLOCK_INPUT;
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4886 }
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4887
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4888 /* Treat negative positions as relative to the leftmost bottommost
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4889 position that fits on the screen. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4890 if (f->display.x->left_pos < 0)
3890
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4891 f->display.x->left_pos = (x_screen_width
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
4892 - 2 * f->display.x->border_width - win_x
3890
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4893 - PIXEL_WIDTH (f)
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4894 + f->display.x->left_pos);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4895
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4896 if (f->display.x->top_pos < 0)
3890
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4897 f->display.x->top_pos = (x_screen_height
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
4898 - 2 * f->display.x->border_width - win_y
3890
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4899 - PIXEL_HEIGHT (f)
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4900 + f->display.x->top_pos);
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4901
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4902 #else /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4903 WINDOWINFO_TYPE parentinfo;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4904
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4905 XGetWindowInfo (FRAME_X_WINDOW (f), &parentinfo);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4906
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4907 if (f->display.x->left_pos < 0)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4908 f->display.x->left_pos = parentinfo.width + (f->display.x->left_pos + 1)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4909 - PIXEL_WIDTH (f) - 2 * f->display.x->internal_border_width;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4910
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4911 if (f->display.x->top_pos < 0)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4912 f->display.x->top_pos = parentinfo.height + (f->display.x->top_pos + 1)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4913 - PIXEL_HEIGHT (f) - 2 * f->display.x->internal_border_width;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4914 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4915 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4916
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4917 x_set_offset (f, xoff, yoff)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4918 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4919 register int xoff, yoff;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4920 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4921 f->display.x->top_pos = yoff;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4922 f->display.x->left_pos = xoff;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4923 x_calc_absolute_position (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4924
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4925 BLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4926 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4927 XMoveWindow (XDISPLAY XtWindow (f->display.x->widget),
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4928 f->display.x->left_pos, f->display.x->top_pos);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4929 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4930 XMoveWindow (XDISPLAY FRAME_X_WINDOW (f),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4931 f->display.x->left_pos, f->display.x->top_pos);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4932 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4933 #ifdef HAVE_X11
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4934 x_wm_set_size_hint (f, 0, 1, xoff, yoff);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4935 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4936 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4937 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4938
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4939 /* Call this to change the size of frame F's x-window.
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4940 If CHANGE_GRAVITY is 1, we change to top-left-corner window gravity
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4941 for this size change and subsequent size changes.
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4942 Otherwise we leave the window gravity unchanged. */
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4943
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4944 x_set_window_size (f, change_gravity, cols, rows)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4945 struct frame *f;
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4946 int change_gravity;
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4947 int cols, rows;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4948 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4949 int pixelwidth, pixelheight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4950 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4951
5686
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4952 #ifdef USE_X_TOOLKIT
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4953 BLOCK_INPUT;
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4954 EmacsFrameSetCharSize (f->display.x->edit_widget, cols, rows);
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4955 UNBLOCK_INPUT;
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4956
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4957 #else /* not USE_X_TOOLKIT */
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4958
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4959 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4960
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4961 check_frame_size (f, &rows, &cols);
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4962 f->display.x->vertical_scroll_bar_extra
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4963 = (FRAME_HAS_VERTICAL_SCROLL_BARS (f)
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4964 ? VERTICAL_SCROLL_BAR_PIXEL_WIDTH (f)
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4965 : 0);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4966 pixelwidth = CHAR_TO_PIXEL_WIDTH (f, cols);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4967 pixelheight = CHAR_TO_PIXEL_HEIGHT (f, rows);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4968
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4969 #ifdef HAVE_X11
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4970 x_wm_set_size_hint (f, 0, change_gravity, 0, 0);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4971 #endif /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4972 XChangeWindowSize (FRAME_X_WINDOW (f), pixelwidth, pixelheight);
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4973
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4974 /* Now, strictly speaking, we can't be sure that this is accurate,
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4975 but the window manager will get around to dealing with the size
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4976 change request eventually, and we'll hear how it went when the
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4977 ConfigureNotify event gets here.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4978
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4979 We could just not bother storing any of this information here,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4980 and let the ConfigureNotify event set everything up, but that
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4981 might be kind of confusing to the lisp code, since size changes
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4982 wouldn't be reported in the frame parameters until some random
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4983 point in the future when the ConfigureNotify event arrives. */
1875
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4984 change_frame_size (f, rows, cols, 0, 0);
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4985 PIXEL_WIDTH (f) = pixelwidth;
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4986 PIXEL_HEIGHT (f) = pixelheight;
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4987
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4988 /* We've set {FRAME,PIXEL}_{WIDTH,HEIGHT} to the values we hope to
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4989 receive in the ConfigureNotify event; if we get what we asked
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4990 for, then the event won't cause the screen to become garbaged, so
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4991 we have to make sure to do it here. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4992 SET_FRAME_GARBAGED (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4993
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4994 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4995 UNBLOCK_INPUT;
5686
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4996 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4997 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4998
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4999 #ifndef HAVE_X11
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5000 x_set_resize_hint (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5001 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5002 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
5003 XSetResizeHint (FRAME_X_WINDOW (f),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
5004 2 * f->display.x->internal_border_width,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5005 2 * f->display.x->internal_border_width,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
5006 FONT_WIDTH (f->display.x->font),
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
5007 FONT_HEIGHT (f->display.x->font));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5008 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5009 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5010
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5011 /* Mouse warping, focus shifting, raising and lowering. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5012
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5013 x_set_mouse_position (f, x, y)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5014 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5015 int x, y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5016 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5017 int pix_x, pix_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5018
5683
b9bafc8d0283 (x_set_mouse_position): Don't raise the frame.
Richard M. Stallman <rms@gnu.org>
parents: 5672
diff changeset
5019 #if 0 /* Let the user ask for this if he wants it. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5020 x_raise_frame (f);
5683
b9bafc8d0283 (x_set_mouse_position): Don't raise the frame.
Richard M. Stallman <rms@gnu.org>
parents: 5672
diff changeset
5021 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5022
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
5023 pix_x = CHAR_TO_PIXEL_COL (f, x) + FONT_WIDTH (f->display.x->font) / 2;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
5024 pix_y = CHAR_TO_PIXEL_ROW (f, y) + FONT_HEIGHT (f->display.x->font) / 2;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5025
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5026 if (pix_x < 0) pix_x = 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5027 if (pix_x > PIXEL_WIDTH (f)) pix_x = PIXEL_WIDTH (f);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5028
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5029 if (pix_y < 0) pix_y = 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5030 if (pix_y > PIXEL_HEIGHT (f)) pix_y = PIXEL_HEIGHT (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5031
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5032 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5033
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5034 XWarpMousePointer (FRAME_X_WINDOW (f), pix_x, pix_y);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5035 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5036 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5037
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5038 #ifdef HAVE_X11
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5039 x_focus_on_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5040 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5041 {
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
5042 #if 0 /* This proves to be unpleasant. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5043 x_raise_frame (f);
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
5044 #endif
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5045 #if 0
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5046 /* I don't think that the ICCCM allows programs to do things like this
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5047 without the interaction of the window manager. Whatever you end up
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5048 doing with this code, do it to x_unfocus_frame too. */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5049 XSetInputFocus (x_current_display, FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5050 RevertToPointerRoot, CurrentTime);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5051 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5052 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5053
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5054 x_unfocus_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5055 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5056 {
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5057 #if 0
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5058 /* Look at the remarks in x_focus_on_frame. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5059 if (x_focus_frame == f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5060 XSetInputFocus (x_current_display, PointerRoot,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5061 RevertToPointerRoot, CurrentTime);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5062 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5063 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5064
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5065 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5066
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5067 /* Raise frame F. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5068
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5069 x_raise_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5070 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5071 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5072 if (f->async_visible)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5073 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5074 BLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5075 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5076 XRaiseWindow (XDISPLAY XtWindow (f->display.x->widget));
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5077 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5078 XRaiseWindow (XDISPLAY FRAME_X_WINDOW (f));
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5079 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5080 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5081 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5082 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5083 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5084
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5085 /* Lower frame F. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5086
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5087 x_lower_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5088 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5089 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5090 if (f->async_visible)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5091 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5092 BLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5093 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5094 XLowerWindow (XDISPLAY XtWindow (f->display.x->widget));
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5095 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5096 XLowerWindow (XDISPLAY FRAME_X_WINDOW (f));
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5097 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5098 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5099 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5100 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5101 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5102
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5103 static void
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5104 XTframe_raise_lower (f, raise)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5105 FRAME_PTR f;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5106 int raise;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5107 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5108 if (raise)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5109 x_raise_frame (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5110 else
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5111 x_lower_frame (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5112 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5113
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5114
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5115 /* Change from withdrawn state to mapped state. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5116
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5117 x_make_frame_visible (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5118 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5119 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5120 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5121
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5122 BLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5123
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5124 if (! FRAME_VISIBLE_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5125 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5126 #ifdef HAVE_X11
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5127 if (! EQ (Vx_no_window_manager, Qt))
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5128 x_wm_set_window_state (f, NormalState);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5129 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5130 XtPopup (f->display.x->widget, XtGrabNone);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5131 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5132 XMapWindow (XDISPLAY FRAME_X_WINDOW (f));
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5133 #endif /* not USE_X_TOOLKIT */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5134 if (FRAME_HAS_VERTICAL_SCROLL_BARS (f))
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5135 XMapSubwindows (x_current_display, FRAME_X_WINDOW (f));
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5136 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5137 XMapWindow (XDISPLAY FRAME_X_WINDOW (f));
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5138 if (f->display.x->icon_desc != 0)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5139 XUnmapWindow (f->display.x->icon_desc);
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5140
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5141 /* Handled by the MapNotify event for X11 */
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5142 f->async_visible = 1;
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5143 f->async_iconified = 0;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5144
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5145 /* NOTE: this may cause problems for the first frame. */
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5146 XTcursor_to (0, 0);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5147 #endif /* ! defined (HAVE_X11) */
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5148 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5149
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5150 XFlushQueue ();
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5151
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5152 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5153 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5154
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5155 /* Change from mapped state to withdrawn state. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5156
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5157 x_make_frame_invisible (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5158 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5159 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5160 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5161
3284
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5162 /* Don't keep the highlight on an invisible frame. */
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5163 if (x_highlight_frame == f)
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5164 x_highlight_frame = 0;
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5165
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5166 if (! f->async_visible && ! f->async_iconified)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5167 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5168
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5169 BLOCK_INPUT;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5170
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5171 #ifdef HAVE_X11R4
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5172
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5173 #ifdef USE_X_TOOLKIT
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5174 if (! XWithdrawWindow (x_current_display, XtWindow (f->display.x->widget),
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5175 DefaultScreen (x_current_display)))
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5176 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5177 if (! XWithdrawWindow (x_current_display, FRAME_X_WINDOW (f),
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5178 DefaultScreen (x_current_display)))
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5179 #endif /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5180 {
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5181 UNBLOCK_INPUT_RESIGNAL;
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3585
diff changeset
5182 error ("can't notify window manager of window withdrawal");
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5183 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5184
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5185 #else /* ! defined (HAVE_X11R4) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5186 #ifdef HAVE_X11
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5187
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5188 /* Tell the window manager what we're going to do. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5189 if (! EQ (Vx_no_window_manager, Qt))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5190 {
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5191 XEvent unmap;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5192
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5193 unmap.xunmap.type = UnmapNotify;
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5194 #ifdef USE_X_TOOLKIT
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5195 unmap.xunmap.window = XtWindow (f->display.x->widget);
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5196 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5197 unmap.xunmap.window = FRAME_X_WINDOW (f);
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5198 #endif /* not USE_X_TOOLKIT */
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5199 unmap.xunmap.event = DefaultRootWindow (x_current_display);
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5200 unmap.xunmap.from_configure = False;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5201 if (! XSendEvent (x_current_display,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5202 DefaultRootWindow (x_current_display),
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5203 False,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5204 SubstructureRedirectMask|SubstructureNotifyMask,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5205 &unmap))
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5206 {
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5207 UNBLOCK_INPUT_RESIGNAL;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5208 error ("can't notify window manager of withdrawal");
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5209 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5210 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5211
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5212 /* Unmap the window ourselves. Cheeky! */
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5213 #ifdef USE_X_TOOLKIT
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5214 XUnmapWindow (x_current_display, XtWindow (f->display.x->widget));
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5215 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5216 XUnmapWindow (x_current_display, FRAME_X_WINDOW (f));
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5217 #endif /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5218 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5219
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5220 XUnmapWindow (FRAME_X_WINDOW (f));
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5221 f->async_visible = 0; /* Handled by the UnMap event for X11 */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5222 if (f->display.x->icon_desc != 0)
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5223 XUnmapWindow (f->display.x->icon_desc);
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5224
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5225 #endif /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5226 #endif /* ! defined (HAVE_X11R4) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5227
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5228 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5229 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5230 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5231
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5232 /* Change window state from mapped to iconified. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5233
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5234 x_iconify_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5235 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5236 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5237 int mask;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5238 int result;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5239
3284
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5240 /* Don't keep the highlight on an invisible frame. */
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5241 if (x_highlight_frame == f)
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5242 x_highlight_frame = 0;
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5243
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5244 if (f->async_iconified)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5245 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5246
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5247 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5248 BLOCK_INPUT;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5249 result = XIconifyWindow (x_current_display,
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5250 XtWindow (f->display.x->widget),
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5251 DefaultScreen (x_current_display));
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5252 UNBLOCK_INPUT;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5253
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5254 if (!result)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5255 error ("Can't notify window manager of iconification.");
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5256
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5257 f->async_iconified = 1;
5740
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5258
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5259 BLOCK_INPUT;
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5260 XFlushQueue ();
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5261 UNBLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5262 #else /* not USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5263
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5264 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5265
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5266 #ifdef HAVE_X11
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5267 /* Since we don't know which revision of X we're running, we'll use both
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5268 the X11R3 and X11R4 techniques. I don't know if this is a good idea. */
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5269
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5270 /* X11R4: send a ClientMessage to the window manager using the
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5271 WM_CHANGE_STATE type. */
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5272 {
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5273 XEvent message;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5274
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5275 message.xclient.window = FRAME_X_WINDOW (f);
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5276 message.xclient.type = ClientMessage;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5277 message.xclient.message_type = Xatom_wm_change_state;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5278 message.xclient.format = 32;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5279 message.xclient.data.l[0] = IconicState;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5280
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5281 if (! XSendEvent (x_current_display,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5282 DefaultRootWindow (x_current_display),
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5283 False,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5284 SubstructureRedirectMask | SubstructureNotifyMask,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5285 &message))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5286 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5287 UNBLOCK_INPUT_RESIGNAL;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5288 error ("Can't notify window manager of iconification.");
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5289 }
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5290 }
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5291
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5292 /* X11R3: set the initial_state field of the window manager hints to
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5293 IconicState. */
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5294 x_wm_set_window_state (f, IconicState);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5295
4304
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5296 if (!FRAME_VISIBLE_P (f))
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5297 {
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5298 /* If the frame was withdrawn, before, we must map it. */
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5299 XMapWindow (XDISPLAY FRAME_X_WINDOW (f));
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5300 if (FRAME_HAS_VERTICAL_SCROLL_BARS (f))
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5301 XMapSubwindows (x_current_display, FRAME_X_WINDOW (f));
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5302 }
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5303
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5304 f->async_iconified = 1;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5305 #else /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5306 XUnmapWindow (XDISPLAY FRAME_X_WINDOW (f));
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5307
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5308 f->async_visible = 0; /* Handled in the UnMap event for X11. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5309 if (f->display.x->icon_desc != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5310 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5311 XMapWindow (XDISPLAY f->display.x->icon_desc);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5312 refreshicon (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5313 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5314 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5315
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5316 XFlushQueue ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5317 UNBLOCK_INPUT;
5740
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5318 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5319 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5320
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5321 /* Destroy the X window of frame F. */
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5322
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5323 x_destroy_window (f)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5324 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5325 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5326 BLOCK_INPUT;
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5327
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5328 if (f->display.x->icon_desc != 0)
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5329 XDestroyWindow (XDISPLAY f->display.x->icon_desc);
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5330 XDestroyWindow (XDISPLAY f->display.x->window_desc);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5331 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5332 XtDestroyWidget (f->display.x->widget);
5898
105c99071e9b (x_destroy_window) [USE_X_TOOLKIT]: Call free_frame_menubar.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5872
diff changeset
5333 free_frame_menubar (f);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5334 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5335
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
5336 free_frame_faces (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5337 XFlushQueue ();
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5338
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
5339 xfree (f->display.x);
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5340 f->display.x = 0;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5341 if (f == x_focus_frame)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5342 x_focus_frame = 0;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5343 if (f == x_highlight_frame)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5344 x_highlight_frame = 0;
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5345
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5346 UNBLOCK_INPUT;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5347 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5348
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5349 /* Manage event queues for X10. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5350
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5351 #ifndef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5352
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5353 /* Manage event queues.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5354
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5355 This code is only used by the X10 support.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5356
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5357 We cannot leave events in the X queue and get them when we are ready
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5358 because X does not provide a subroutine to get only a certain kind
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5359 of event but not block if there are no queued events of that kind.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5360
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5361 Therefore, we must examine events as they come in and copy events
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5362 of certain kinds into our private queues.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5363
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5364 All ExposeRegion events are put in x_expose_queue.
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
5365 All ButtonPress and ButtonRelease events are put in x_mouse_queue. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5366
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5367
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5368 /* Write the event *P_XREP into the event queue *QUEUE.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5369 If the queue is full, do nothing, but return nonzero. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5370
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5371 int
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5372 enqueue_event (p_xrep, queue)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5373 register XEvent *p_xrep;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5374 register struct event_queue *queue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5375 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5376 int newindex = queue->windex + 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5377 if (newindex == EVENT_BUFFER_SIZE)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5378 newindex = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5379 if (newindex == queue->rindex)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5380 return -1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5381 queue->xrep[queue->windex] = *p_xrep;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5382 queue->windex = newindex;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5383 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5384 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5385
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5386 /* Fetch the next event from queue *QUEUE and store it in *P_XREP.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5387 If *QUEUE is empty, do nothing and return 0. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5388
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5389 int
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5390 dequeue_event (p_xrep, queue)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5391 register XEvent *p_xrep;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5392 register struct event_queue *queue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5393 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5394 if (queue->windex == queue->rindex)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5395 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5396 *p_xrep = queue->xrep[queue->rindex++];
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5397 if (queue->rindex == EVENT_BUFFER_SIZE)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5398 queue->rindex = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5399 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5400 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5401
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5402 /* Return the number of events buffered in *QUEUE. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5403
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5404 int
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5405 queue_event_count (queue)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5406 register struct event_queue *queue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5407 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5408 int tem = queue->windex - queue->rindex;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5409 if (tem >= 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5410 return tem;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5411 return EVENT_BUFFER_SIZE + tem;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5412 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5413
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5414 /* Return nonzero if mouse input is pending. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5415
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5416 int
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5417 mouse_event_pending_p ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5418 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5419 return queue_event_count (&x_mouse_queue);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5420 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5421 #endif /* HAVE_X11 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5422
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5423 /* Setting window manager hints. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5424
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5425 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5426
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5427 /* Record the gravity used previously, in case CHANGE_GRAVITY is 0. */
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5428 static int previous_gravity;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5429
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
5430 /* SPEC_X and SPEC_Y are the specified positions.
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5431 We look only at their sign, to decide the gravity.
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5432 If CHANGE_GRAVITY is 0, we ignore SPEC_X and SPEC_Y
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5433 and leave the gravity unchanged. */
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5434
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5435 x_wm_set_size_hint (f, prompting, change_gravity, spec_x, spec_y)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5436 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5437 long prompting;
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5438 int change_gravity;
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
5439 int spec_x, spec_y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5440 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5441 XSizeHints size_hints;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5442
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5443 #ifdef USE_X_TOOLKIT
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5444 Window window = XtWindow (f->display.x->widget);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5445 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5446 Window window = FRAME_X_WINDOW (f);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5447 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5448
3135
c344fe6cca79 (x_wm_set_size_hint): Don't set hints for max size.
Richard M. Stallman <rms@gnu.org>
parents: 3076
diff changeset
5449 size_hints.flags = PResizeInc | PMinSize /* | PMaxSize */;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5450
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5451 flexlines = f->height;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5452
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5453 size_hints.x = f->display.x->left_pos;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5454 size_hints.y = f->display.x->top_pos;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5455 size_hints.height = PIXEL_HEIGHT (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5456 size_hints.width = PIXEL_WIDTH (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5457 size_hints.width_inc = FONT_WIDTH (f->display.x->font);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5458 size_hints.height_inc = FONT_HEIGHT (f->display.x->font);
3135
c344fe6cca79 (x_wm_set_size_hint): Don't set hints for max size.
Richard M. Stallman <rms@gnu.org>
parents: 3076
diff changeset
5459 #if 0
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
5460 size_hints.max_width = x_screen_width - CHAR_TO_PIXEL_WIDTH (f, 0);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
5461 size_hints.max_height = x_screen_height - CHAR_TO_PIXEL_HEIGHT (f, 0);
3135
c344fe6cca79 (x_wm_set_size_hint): Don't set hints for max size.
Richard M. Stallman <rms@gnu.org>
parents: 3076
diff changeset
5462 #endif
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5463 {
1127
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5464 int base_width, base_height;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5465
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5466 base_width = CHAR_TO_PIXEL_WIDTH (f, 0);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5467 base_height = CHAR_TO_PIXEL_HEIGHT (f, 0);
1127
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5468
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5469 {
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5470 int min_rows = 0, min_cols = 0;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5471 check_frame_size (f, &min_rows, &min_cols);
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5472
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5473 /* The window manager uses the base width hints to calculate the
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5474 current number of rows and columns in the frame while
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5475 resizing; min_width and min_height aren't useful for this
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5476 purpose, since they might not give the dimensions for a
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5477 zero-row, zero-column frame.
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5478
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5479 We use the base_width and base_height members if we have
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5480 them; otherwise, we set the min_width and min_height members
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5481 to the size for a zero x zero frame. */
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5482
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5483 #ifdef HAVE_X11R4
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5484 size_hints.flags |= PBaseSize;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5485 size_hints.base_width = base_width;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5486 size_hints.base_height = base_height;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5487 size_hints.min_width = base_width + min_cols * size_hints.width_inc;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5488 size_hints.min_height = base_height + min_rows * size_hints.height_inc;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5489 #else
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5490 size_hints.min_width = base_width;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5491 size_hints.min_height = base_height;
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5492 #endif
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5493 }
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5494
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5495 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5496
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5497 if (prompting)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5498 size_hints.flags |= prompting;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5499 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5500 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5501 XSizeHints hints; /* Sometimes I hate X Windows... */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5502
3444
2a646c40a4cf (x_wm_set_size_hint): Handle XGetNormalHints returning 0.
Richard M. Stallman <rms@gnu.org>
parents: 3369
diff changeset
5503 if (XGetNormalHints (x_current_display, window, &hints) == 0)
2a646c40a4cf (x_wm_set_size_hint): Handle XGetNormalHints returning 0.
Richard M. Stallman <rms@gnu.org>
parents: 3369
diff changeset
5504 hints.flags = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5505 if (hints.flags & PSize)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5506 size_hints.flags |= PSize;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5507 if (hints.flags & PPosition)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5508 size_hints.flags |= PPosition;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5509 if (hints.flags & USPosition)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5510 size_hints.flags |= USPosition;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5511 if (hints.flags & USSize)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5512 size_hints.flags |= USSize;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5513 }
4777
21ed9c9bb210 (w_wn_set_size_hint): Make recent window gravity addition
Brian Fox <bfox@gnu.org>
parents: 4696
diff changeset
5514 #if defined (PWinGravity)
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5515 if (change_gravity)
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
5516 {
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5517 switch (((spec_x < 0) << 1) + (spec_y < 0))
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5518 {
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5519 case 0:
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5520 size_hints.win_gravity = NorthWestGravity;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5521 break;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5522 case 1:
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5523 size_hints.win_gravity = NorthEastGravity;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5524 break;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5525 case 2:
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5526 size_hints.win_gravity = SouthWestGravity;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5527 break;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5528 case 3:
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5529 size_hints.win_gravity = SouthEastGravity;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5530 break;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5531 }
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5532 previous_gravity = size_hints.win_gravity;
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
5533 }
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5534 else
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5535 size_hints.win_gravity = previous_gravity;
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5536
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
5537 size_hints.flags |= PWinGravity;
4777
21ed9c9bb210 (w_wn_set_size_hint): Make recent window gravity addition
Brian Fox <bfox@gnu.org>
parents: 4696
diff changeset
5538 #endif /* PWinGravity */
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
5539
1127
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5540 #ifdef HAVE_X11R4
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5541 XSetWMNormalHints (x_current_display, window, &size_hints);
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5542 #else
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5543 XSetNormalHints (x_current_display, window, &size_hints);
1127
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5544 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5545 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5546
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5547 /* Used for IconicState or NormalState */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5548 x_wm_set_window_state (f, state)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5549 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5550 int state;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5551 {
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5552 #ifdef USE_X_TOOLKIT
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5553 Window window = XtWindow (f->display.x->widget);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5554 #else /* not USE_X_TOOLKIT */
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5555 Window window = FRAME_X_WINDOW (f);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5556 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5557
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5558 f->display.x->wm_hints.flags |= StateHint;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5559 f->display.x->wm_hints.initial_state = state;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5560
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5561 XSetWMHints (x_current_display, window, &f->display.x->wm_hints);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5562 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5563
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5564 x_wm_set_icon_pixmap (f, icon_pixmap)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5565 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5566 Pixmap icon_pixmap;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5567 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5568 Window window = FRAME_X_WINDOW (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5569
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5570 if (icon_pixmap)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5571 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5572 f->display.x->wm_hints.icon_pixmap = icon_pixmap;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5573 f->display.x->wm_hints.flags |= IconPixmapHint;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5574 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5575 else
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5576 f->display.x->wm_hints.flags &= ~IconPixmapHint;
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5577
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5578 XSetWMHints (x_current_display, window, &f->display.x->wm_hints);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5579 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5580
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5581 x_wm_set_icon_position (f, icon_x, icon_y)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5582 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5583 int icon_x, icon_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5584 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5585 Window window = FRAME_X_WINDOW (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5586
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5587 f->display.x->wm_hints.flags |= IconPositionHint;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5588 f->display.x->wm_hints.icon_x = icon_x;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5589 f->display.x->wm_hints.icon_y = icon_y;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5590
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5591 XSetWMHints (x_current_display, window, &f->display.x->wm_hints);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5592 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5593
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5594
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5595 /* Initialization. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5596
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5597 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5598 static XrmOptionDescRec emacs_options[] = {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5599 {"-geometry", ".geometry", XrmoptionSepArg, NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5600 {"-iconic", ".iconic", XrmoptionNoArg, (XtPointer) "yes"},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5601
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5602 {"-internal-border-width", "*EmacsScreen.internalBorderWidth",
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5603 XrmoptionSepArg, NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5604 {"-ib", "*EmacsScreen.internalBorderWidth", XrmoptionSepArg, NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5605
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5606 {"-T", "*EmacsShell.title", XrmoptionSepArg, (XtPointer) NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5607 {"-wn", "*EmacsShell.title", XrmoptionSepArg, (XtPointer) NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5608 {"-title", "*EmacsShell.title", XrmoptionSepArg, (XtPointer) NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5609 {"-iconname", "*EmacsShell.iconName", XrmoptionSepArg, (XtPointer) NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5610 {"-in", "*EmacsShell.iconName", XrmoptionSepArg, (XtPointer) NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5611 {"-mc", "*pointerColor", XrmoptionSepArg, (XtPointer) NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5612 {"-cr", "*cursorColor", XrmoptionSepArg, (XtPointer) NULL}
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5613 };
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5614 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5615
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5616 void
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5617 x_term_init (display_name)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5618 char *display_name;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5619 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5620 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5621 char *defaultvalue;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5622 int argc = 0;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5623 char** argv = 0;
4147
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
5624 #ifndef F_SETOWN_BUG
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5625 #ifdef F_SETOWN
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5626 extern int old_fcntl_owner;
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5627 #endif /* ! defined (F_SETOWN) */
4147
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
5628 #endif /* F_SETOWN_BUG */
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5629
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5630 x_focus_frame = x_highlight_frame = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5631
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5632 #ifdef USE_X_TOOLKIT
5685
07f5e3a0f905 * xterm.c (x_term_init): Cast to (char **) before assignment to argv.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5683
diff changeset
5633 argv = (char **) XtMalloc (3 * sizeof (char *));
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5634 argv [0] = "";
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5635 argv [1] = "-display";
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5636 argv [2] = display_name;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5637 argc = 3;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5638 Xt_app_shell = XtAppInitialize (&Xt_app_con, "Emacs",
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5639 emacs_options, XtNumber (emacs_options),
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5640 &argc, argv,
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5641 NULL, NULL, 0);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5642 XtFree (argv);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5643 x_current_display = XtDisplay (Xt_app_shell);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5644
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5645 #else /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5646 x_current_display = XOpenDisplay (display_name);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5647 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5648 if (x_current_display == 0)
4147
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
5649 fatal ("X server %s not responding.\n\
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
5650 Check the DISPLAY environment variable or use \"-d\"\n",
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5651 display_name);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5652
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5653 #ifdef HAVE_X11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5654 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5655 #if 0
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5656 XSetAfterFunction (x_current_display, x_trace_wire);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5657 #endif /* ! 0 */
5737
eb722251d156 (x_term_init): Use get_system_name instead of gethostname.
Karl Heuer <kwzh@gnu.org>
parents: 5719
diff changeset
5658 hostname = get_system_name ();
2279
012b04efa234 * emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents: 2235
diff changeset
5659 x_id_name = (char *) xmalloc (XSTRING (Vinvocation_name)->size
398
a60eafebd43f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 395
diff changeset
5660 + strlen (hostname)
a60eafebd43f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 395
diff changeset
5661 + 2);
2279
012b04efa234 * emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents: 2235
diff changeset
5662 sprintf (x_id_name, "%s@%s", XSTRING (Vinvocation_name)->data, hostname);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5663 }
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5664
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5665 /* Figure out which modifier bits mean what. */
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5666 x_find_modifier_meanings ();
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5667
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5668 /* Get the scroll bar cursor. */
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
5669 x_vertical_scroll_bar_cursor
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
5670 = XCreateFontCursor (x_current_display, XC_sb_v_double_arrow);
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
5671
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
5672 #if 0
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5673 /* Watch for PropertyNotify events on the root window; we use them
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5674 to figure out when to invalidate our cache of the cut buffers. */
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5675 x_watch_cut_buffer_cache ();
2195
b20bb441f47f (Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 2127
diff changeset
5676 #endif
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5677
2285
f0a979beceab * xterm.c (x_term_init): If the X connection is already in file
Jim Blandy <jimb@redhat.com>
parents: 2279
diff changeset
5678 if (ConnectionNumber (x_current_display) != 0)
4683
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
5679 change_keyboard_wait_descriptor (ConnectionNumber (x_current_display));
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
5680 change_input_fd (ConnectionNumber (x_current_display));
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5681
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5682 #endif /* ! defined (HAVE_X11) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5683
4147
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
5684 #ifndef F_SETOWN_BUG
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5685 #ifdef F_SETOWN
4683
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
5686 old_fcntl_owner = fcntl (ConnectionNumber (x_current_display), F_GETOWN, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5687 #ifdef F_SETOWN_SOCK_NEG
4683
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
5688 /* stdin is a socket here */
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
5689 fcntl (ConnectionNumber (x_current_display), F_SETOWN, -getpid ());
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5690 #else /* ! defined (F_SETOWN_SOCK_NEG) */
4683
6a5197116086 (x_term_init): Call change_keyboard_wait_descriptor,
Richard M. Stallman <rms@gnu.org>
parents: 4630
diff changeset
5691 fcntl (ConnectionNumber (x_current_display), F_SETOWN, getpid ());
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5692 #endif /* ! defined (F_SETOWN_SOCK_NEG) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5693 #endif /* ! defined (F_SETOWN) */
4147
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
5694 #endif /* F_SETOWN_BUG */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5695
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5696 #ifdef SIGIO
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5697 init_sigio ();
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5698 #endif /* ! defined (SIGIO) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5699
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5700 expose_all_windows = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5701
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5702 clear_frame_hook = XTclear_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5703 clear_end_of_line_hook = XTclear_end_of_line;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5704 ins_del_lines_hook = XTins_del_lines;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5705 change_line_highlight_hook = XTchange_line_highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5706 insert_glyphs_hook = XTinsert_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5707 write_glyphs_hook = XTwrite_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5708 delete_glyphs_hook = XTdelete_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5709 ring_bell_hook = XTring_bell;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5710 reset_terminal_modes_hook = XTreset_terminal_modes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5711 set_terminal_modes_hook = XTset_terminal_modes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5712 update_begin_hook = XTupdate_begin;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5713 update_end_hook = XTupdate_end;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5714 set_terminal_window_hook = XTset_terminal_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5715 read_socket_hook = XTread_socket;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
5716 frame_up_to_date_hook = XTframe_up_to_date;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5717 cursor_to_hook = XTcursor_to;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5718 reassert_line_highlight_hook = XTreassert_line_highlight;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5719 mouse_position_hook = XTmouse_position;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5720 frame_rehighlight_hook = XTframe_rehighlight;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5721 frame_raise_lower_hook = XTframe_raise_lower;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5722 set_vertical_scroll_bar_hook = XTset_vertical_scroll_bar;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5723 condemn_scroll_bars_hook = XTcondemn_scroll_bars;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5724 redeem_scroll_bar_hook = XTredeem_scroll_bar;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5725 judge_scroll_bars_hook = XTjudge_scroll_bars;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5726
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5727 scroll_region_ok = 1; /* we'll scroll partial frames */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5728 char_ins_del_ok = 0; /* just as fast to write the line */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5729 line_ins_del_ok = 1; /* we'll just blt 'em */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5730 fast_clear_end_of_line = 1; /* X does this well */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5731 memory_below_frame = 0; /* we don't remember what scrolls
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5732 off the bottom */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5733 baud_rate = 19200;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5734
4476
e7de1b007447 (x_term_init): Set the hooks before we call Fset_input_mode.
Richard M. Stallman <rms@gnu.org>
parents: 4304
diff changeset
5735 /* Try to use interrupt input; if we can't, then start polling. */
e7de1b007447 (x_term_init): Set the hooks before we call Fset_input_mode.
Richard M. Stallman <rms@gnu.org>
parents: 4304
diff changeset
5736 Fset_input_mode (Qt, Qnil, Qt, Qnil);
e7de1b007447 (x_term_init): Set the hooks before we call Fset_input_mode.
Richard M. Stallman <rms@gnu.org>
parents: 4304
diff changeset
5737
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5738 /* Note that there is no real way portable across R3/R4 to get the
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5739 original error handler. */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5740 XHandleError (x_error_quitter);
1875
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
5741 XHandleIOError (x_io_error_quitter);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5742
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5743 /* Disable Window Change signals; they are handled by X events. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5744 #ifdef SIGWINCH
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5745 signal (SIGWINCH, SIG_DFL);
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5746 #endif /* ! defined (SIGWINCH) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5747
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5748 signal (SIGPIPE, x_connection_closed);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5749 }
395
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5750
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5751 void
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5752 syms_of_xterm ()
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5753 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5754 staticpro (&last_mouse_scroll_bar);
4948
7653c78ac0c1 (syms_of_xterm): Initialize last_mouse_scroll_bar.
Richard M. Stallman <rms@gnu.org>
parents: 4909
diff changeset
5755 last_mouse_scroll_bar = Qnil;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
5756 staticpro (&mouse_face_window);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
5757 mouse_face_window = Qnil;
395
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5758 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5759 #endif /* ! defined (HAVE_X11) */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5760 #endif /* ! defined (HAVE_X_WINDOWS) */